mcp-sqlite について
mcp-sqlite は SQLite データベースファイル向けの MCP サーバーで、外部システムに接続させることなく、テーブル構造のカタログと SQL クエリの実行機能を AI エージェントに提供します。Datasette 互換のメタデータを読み込むため、人とエージェントが同じデータを探索できます。ローカルデータをエージェントで調べる用途を想定しています。
主な機能
- 01sqlite_get_catalog によるテーブルと列のカタログ取得
- 02YAML または JSON メタデータによる説明の追加
- 03sqlite_execute による任意の SQL 実行
- 04定義済みクエリを個別の MCP ツールとして公開
- 05Datasette メタデータ形式との互換性
活用シーン
- 01AI エージェントによるローカル SQLite ファイルの照会
- 02テーブルと列に説明を付与し、エージェントの理解を補助
- 03MCP Inspector や Datasette を使った同一データセットの対話的な探索
MCP 対応
本プロジェクトは MCP サーバーとして、sqlite_get_catalog や sqlite_execute などのツールを MCP クライアントに公開します。また、メタデータで定義された定義済みクエリごとにツールを生成します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-sqlite
AI エージェントに外部システムへのアクセス権を与えることなく、有用なデータを提供します。人間のユーザー向けには Datasette と互換性があります。
機能
- AI エージェントは、1 つのコマンド
sqlite_get_catalogで SQLite データベース内のすべてのテーブルとカラムの構造を取得できます。- カタログは、シンプルな YAML または JSON のメタデータファイルを使ってテーブルとカラムの説明で拡充できます。
- 同じメタデータファイルに、AI が使用できる定型クエリを含めることができます。
各定型クエリは、個別の MCP ツール
sqlite_execute_main_{tool name}になります。 - AI エージェントは、
sqlite_executeで任意の SQL クエリを実行できます。
Visual Studio Code を使ったクイックスタート
-
uv をインストールします。
-
まだお持ちでない場合は、Visual Studio Code をインストールします。 GitHub Copilot を有効にします。
-
VS Code でこのリポジトリを開きます。 GitHub Copilot のエージェントモードのチャットを開きます。 利用可能なツールを確認してください。MCP Server: sqlite_sample と 3 つの利用可能なツールが表示されるはずです。

-
エージェントモードの Copilot に「Get Titanic survivors of age 28」のような質問をすると、応答が得られるはずです。

-
サンプルの MCP 設定ファイル mcp.json とサンプルのメタデータファイル titanic.yml を、独自の設定の出発点として使用してください。
MCP Inspector と Datasette を使ったインタラクティブな探索
同じデータベースとメタデータファイルを使って、MCP Inspector と Datasette でデータをインタラクティブに探索できます。
| MCP Inspector | Datasette |
|---|---|
![]() | ![]() |
![]() | ![]() |
MCP Inspector
MCP Inspector ダッシュボードを使って、AI エージェントと同じ方法で SQLite データベースを操作できます。
- npm をインストールします。
- 次を実行します。
npx @modelcontextprotocol/inspector uvx mcp-sqlite sample/titanic.db --metadata sample/titanic.yml
Datasette
mcp-sqlite のメタデータは Datasette のメタデータファイルと互換性があるため、Datasette でもデータを探索できます。
uvx datasette serve sample/titanic.db --metadata sample/titanic.yml
Datasette との互換性により、AI エージェントと人間の両方が同じローカルデータを簡単に探索できます。
mcp-sqlite が提供する MCP ツール
- sqlite_get_catalog(): エージェントが呼び出して、データ内のデータベース、テーブル、カラムの完全なカタログを、メタデータファイルからのメタデータと組み合わせて取得できるツールです。
mcp-sqliteの初期のバージョンでは、これはツールではなくリソースでしたが、リソースはそれほど広くサポートされていないため、ツールになりました。 カタログをリソースとして使うユースケースがある場合は、issue を作成してください。元に戻します! - sqlite_execute(sql): エージェントが呼び出して任意の SQL を実行できるツールです。テーブルの結果は HTML として返されます。 LLM が処理するのに HTML が最適な形式である理由の詳細については、Siu et al を参照してください。
- {canned query name}({canned query args}): メタデータ内の各定型クエリに対してツールが作成され、エージェントは SQL を書かずに定義済みのクエリを実行できます。
使用方法
コマンドラインオプション
usage: mcp-sqlite [-h] [-m METADATA] [-p PREFIX] [-v] sqlite_file
CLI command to start an MCP server for interacting with SQLite data.
positional arguments:
sqlite_file Path to SQLite file to serve the MCP server for.
options:
-h, --help show this help message and exit
-m, --metadata METADATA
Path to Datasette-compatible metadata YAML or JSON file.
-p, --prefix PREFIX Prefix for MCP tools. Defaults to no prefix.
-v, --verbose Be verbose. Include once for INFO output, twice for DEBUG output.
メタデータ
テーブルの非表示
hidden: true でテーブルを非表示にすると、MCP ツール sqlite_get_catalog() が返すカタログからそのテーブルが非表示になります。
ただし、そのテーブルには AI エージェントから引き続きアクセスできる点に注意してください!
カタログからテーブルを非表示にすることをセキュリティ機能として決して頼りにしないでください。
定型的なクエリ
定型的なクエリは、それぞれ mcp-sqlite によって個別の呼び出し可能な MCP ツールに変換されます。
たとえば、my_canned_query という名前のクエリは、my_canned_query というツールになります。
定型的なクエリの機能はまだ活発に開発中であり、まもなくさらに多くの機能が開発される予定です:
ロードマップ
| Datasette のクエリ機能 | mcp-sqlite での対応 |
|---|---|
| カタログに表示 | ✅ |
| 実行可能 | ✅ |
| タイトル | ✅ |
| 説明 | ✅ |
| パラメータ | ✅ |
| 明示的なパラメータ | ❌ (予定) |
| SQL の非表示 | ✅ |
| 定型的なクエリへの書き込み制限 | ✅ |
| ページネーション | ❌ (予定) |
| データベース間クエリ | ❌ (予定) |
| フラグメント | ❌ (予定なし) |
| マジックパラメータ | ❌ (予定なし) |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。



