Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

sqliteai/sqlite-mcp

Open more actions menu

Repository files navigation

SQLite AI

SQLite-MCP

Call MCP tools directly from SQL.
Integrates the Model Context Protocol into SQLite — connect to any MCP server and invoke its tools from inside a query. Bridge between your database and the agent ecosystem.

Free managed instance → · Docs · Website · Blog

Data: Vector · Sync · Columnar · JS
AI: AI · Agent · Memory · MCP


Want managed MCP infrastructure? SQLite-MCP connects to any MCP server locally; SQLite Cloud includes a built-in MCP server, edge functions, and auth — so you can expose your data as an MCP target. Free tier available.


SQLite MCP

A SQLite extension that integrates the Model Context Protocol (MCP) Rust SDK, enabling SQLite databases to connect to MCP servers and call their tools.

🚀 Quick Start

Installation

Pre-built Binaries

Download for your platform: macOS, Linux, Windows, Android, and iOS.

Flutter Package

Add the sqlite_mcp package to your project:

flutter pub add sqlite_mcp  # Flutter projects
dart pub add sqlite_mcp     # Dart projects

Usage with sqlite3 package:

import 'package:sqlite3/sqlite3.dart';
import 'package:sqlite_mcp/sqlite_mcp.dart';

sqlite3.loadSqliteMcpExtension();
final db = sqlite3.openInMemory();
print(db.select('SELECT mcp_version()'));

For a complete example, see the Flutter example.

Basic Usage

-- Load the extension
.load ./dist/mcp.dylib

-- Check version
SELECT mcp_version();
-- 0.1.0

-- Connect to an MCP server
SELECT mcp_connect('http://localhost:8000/mcp');
-- {"status": "connected", "transport": "streamable_http"}

-- List available tools
SELECT mcp_list_tools_json();
-- Returns JSON with tool schemas

-- Call a tool
SELECT mcp_call_tool_json('airbnb_search', '{"location": "Rome", "maxPrice": 100}');
-- Returns search results

📖 API Reference

Available Functions

Function Description
mcp_version() Returns extension version
mcp_connect(url, [headers], [sse]) Connect to MCP server with optional custom headers
mcp_list_tools_json() List available tools with schemas
mcp_call_tool_json(name, args) Call a tool on the MCP server
mcp_list_tools_respond Virtual table (cached) that returns each tool as a row with structured columns
mcp_call_tool_respond(name, args) Virtual table that extracts text results from tool calls
mcp_list_tools Streaming virtual table that returns tools as they arrive
mcp_call_tool(name, args) Streaming virtual table for real-time tool results

See API.md for complete API documentation with examples.

🏗️ Building from Source

Requirements

  • Rust: 1.85+ toolchain
  • C Compiler: gcc or clang
  • Make: GNU Make

Build Instructions

# Clone the repository
git clone https://github.com/sqliteai/sqlite-mcp.git
cd sqlite-mcp

# Initialize submodules
git submodule update --init --recursive

# Build the extension
make

The compiled extension will be in dist/mcp.{dylib,so,dll}.

🔧 Transport Protocols

The extension supports two MCP transport protocols:

Streamable HTTP (Default)

Modern streaming HTTP transport for MCP servers.

SELECT mcp_connect('http://localhost:8000/mcp');

SSE (Legacy)

Server-Sent Events for compatibility with older servers.

SELECT mcp_connect('http://localhost:8931/sse', 1);

🚦 Quick Usage Example

#include <sqlite3.h>
#include <stdio.h>

int main() {
    sqlite3 *db;
    sqlite3_open(":memory:", &db);
    sqlite3_enable_load_extension(db, 1);
    sqlite3_load_extension(db, "./dist/mcp", NULL, NULL);

    sqlite3_stmt *stmt;

    // Connect to MCP
    sqlite3_prepare_v2(db,
        "SELECT mcp_connect('http://localhost:8000/mcp')",
        -1, &stmt, NULL);
    sqlite3_step(stmt);
    printf("Connected: %s\n", sqlite3_column_text(stmt, 0));
    sqlite3_finalize(stmt);

    // Call tool
    sqlite3_prepare_v2(db,
        "SELECT mcp_call_tool_json('airbnb_search', '{\"location\": \"NYC\"}')",
        -1, &stmt, NULL);
    if (sqlite3_step(stmt) == SQLITE_ROW) {
        printf("Result: %s\n", sqlite3_column_text(stmt, 0));
    }
    sqlite3_finalize(stmt);

    sqlite3_close(db);
    return 0;
}

See USAGE.md for complete usage examples.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


📄 License

MIT License - See LICENSE for details


☁️ Hosted version

Want to expose your database as an MCP target? SQLite Cloud includes a built-in MCP server, REST APIs, auth, and edge functions — so any MCP-compatible agent (Claude, Cursor, custom clients) can read and write your data securely.

Start free →


Part of the SQLite AI stack

SQLite-MCP is one piece of a larger ecosystem that turns SQLite into a runtime for intelligent, distributed data:

Data layer

AI layer

  • sqlite-ai — On-device LLM inference and embeddings
  • sqlite-agent — Autonomous AI agents running inside SQLite
  • sqlite-memory — Persistent, searchable memory for agents
  • sqlite-mcp — Call MCP tools directly from SQL queries (you are here)

Managed platform

Built by SQLite AI. Questions? Open a discussion or contact us.

About

A SQLite extension that integrates the Model Context Protocol, enabling SQLite databases to connect to MCP servers and call their tools.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.