mcpField
M
mcp-sqlite-tools

mcp-sqlite-tools

ローカル
github.com/spences10データベース201 日前に更新

mcp-sqlite-tools について

mcp-sqlite-tools は、ローカルの SQLite データベースを操作するための MCP サーバーです。読み取り、書き込み、スキーマ、トランザクション、CSV、バックアップ、メンテナンスのツールを用途別に分けて提供し、クライアント側で承認ポリシーを個別に設定できます。

主な機能

  1. 01名前付きまたは位置パラメーターによるページング対応の読み取りクエリ
  2. 02書き込みとスキーマ変更の個別ツール
  3. 03ヘッダー付き CSV のインポートとエクスポート
  4. 04ネストされたセーブポイントを持つトランザクション
  5. 05設定によるデータベースパスと CSV パスの制限

活用シーン

  1. 01MCP クライアントから安全にローカル SQLite データベースを照会する
  2. 02読み取り専用ツールを許可し、書き込みには承認を求める
  3. 03スキーマ変更や大量インポートの前にデータベースをバックアップする

MCP 対応

本プロジェクトは MCP サーバーであり、open_database、execute_read_query、import_csv などのデータベース操作ツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"spences10-mcp-sqlite-tools": {
"command": "npx",
"args": [
"-y",
"mcp-sqlite-tools"
]
}
}
}
起動コマンドnpx -y mcp-sqlite-tools

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-sqlite-tools0.0.11

ツール

19

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
pathstringはい
createbooleanいいえ

詳細

mcp-sqlite-tools

安全なローカル SQLite データベース操作のための Model Context Protocol(MCP)サーバーです。MCP クライアントに、読み取り、書き込み、スキーマ、トランザクション、CSV、バックアップ、メンテナンスのための明示的なツールを提供します。

機能

  • SQLite データベースを開く、作成する、調査する、バックアップする、VACUUM する、閉じる
  • テーブルを一覧表示する、説明する、作成する、削除する
  • 名前付きまたは位置指定のパラメーターを使って、ページ分割された読み取りクエリを実行する
  • 明示的な書き込みクエリとスキーマクエリを実行する
  • ヘッダー付き CSV ファイルをインポートおよびエクスポートする
  • ネストされたセーブポイントを使ってトランザクションを実行する
  • スキーマを SQL または JSON としてエクスポートおよびインポートする
  • 設定によってデータベースと CSV のパスを制限する
  • クライアントの承認ポリシー用に破壊的なツールを分類する
  • ネイティブアドオンへの依存なしで、Node 組み込みの SQLite ドライバーを使用する

要件

  • Node.js 24.12 以降
  • stdio サーバーをサポートする MCP クライアント

MCP クライアントの設定

MCP クライアントは npx を使ってこのサーバーを起動するため、グローバルインストールは不要です。

MCPick でインストールする

MCPick を使うと、JSON を手動で編集せずに、対応クライアントへサーバーを追加できます。このコマンドは、デフォルトで Claude Code のローカルスコープを対象にします。

npx -y mcpick add \
  --name sqlite-tools \
  --command npx \
  --args "-y,mcp-sqlite-tools"

必要に応じて、クライアントとスコープを明示的に選択します。

npx -y mcpick add \
  --name sqlite-tools \
  --command npx \
  --args "-y,mcp-sqlite-tools" \
  --client vscode \
  --scope project

add コマンドは Claude Code、Gemini CLI、VS Code、Cursor、Windsurf、OpenCode、Pi に対応しています。npx mcpick clients を実行すると、現在のクライアント機能、スコープ、設定場所を確認できます。

例では、最新のパッケージリリースを参照しています。再現可能な設定にするには、--args 内の mcp-sqlite-tools を [email protected] のような正確なバージョンに置き換えてください。

手動設定

未対応のクライアントや高度な設定の場合は、サーバーを手動で追加してください。

{
	"mcpServers": {
		"mcp-sqlite-tools": {
			"command": "npx",
			"args": ["-y", "mcp-sqlite-tools"],
			"env": {
				"SQLITE_DEFAULT_PATH": ".",
				"SQLITE_ALLOW_ABSOLUTE_PATHS": "true",
				"SQLITE_BUSY_TIMEOUT": "30000",
				"SQLITE_JOURNAL_MODE": "wal",
				"SQLITE_BACKUP_PATH": "./backups"
			}
		}
	}
}

VS Code では mcpServers の代わりに servers オブジェクトを使用します。その他のクライアント向けの例については、設定ガイドを参照してください。

環境変数

変数用途デフォルト
SQLITE_DEFAULT_PATHデータベースファイルのベースディレクトリ.
SQLITE_ALLOW_ABSOLUTE_PATHSデフォルトディレクトリ外のパスを許可するtrue
SQLITE_BACKUP_PATHデフォルトのバックアップディレクトリデフォルトのデータベースパス
SQLITE_BUSY_TIMEOUTSQLite のロック待機タイムアウト(ミリ秒)30000
SQLITE_JOURNAL_MODEdelete、truncate、persist、または walwal
DEBUG診断ログを有効にするfalse

SQLITE_ALLOW_ABSOLUTE_PATHS=false の場合、相対パスと絶対パスは SQLITE_DEFAULT_PATH 内に解決される必要があります。シンボリックリンクを使ってこのディレクトリから抜けることはできません。

ファイル同期対象のディレクトリ内にあるデータベースでは、SQLITE_JOURNAL_MODE=delete を使用してください。安全でない SQLite モードの memory と off は受け付けられません。

SQLITE_MAX_QUERY_TIME は、非推奨のエイリアスとして引き続き利用できます。これは SQLITE_BUSY_TIMEOUT を指します。実時間でのクエリ実行時間を制限するものではありません。

ツール

MCP クライアントが明確な承認ルールを適用できるよう、ツールは目的別に分けられています。

安全で読み取り専用
ツール目的
open_database既存のデータベースを開きます
close_databaseデータベース接続を閉じます
list_databasesディレクトリ内のデータベースファイルを検索します
database_infoファイルと SQLite のメタデータを読み取ります
list_tablesテーブルとビューを一覧表示します
describe_table列と制約を読み取ります
backup_database一貫性のあるオンラインバックアップを作成します
export_csvテーブルまたは読み取り専用クエリをエクスポートします
export_schemaスキーマを SQL または JSON としてエクスポートします
execute_read_querySQLite の読み取り専用ステートメントを 1 つ実行します
書き込み、スキーマ、メンテナンス
ツール目的
create_database新しいデータベースファイルを作成します
create_table検証済みの列からテーブルを作成します
drop_tableテーブルとそのデータを削除します
execute_write_queryINSERT、UPDATE、または DELETE を実行します
execute_schema_queryスキーマステートメントを 1 つ実行します
bulk_insertレコードを一括で挿入します
import_csvヘッダー付きの CSV ファイルをインポートします
import_schemaSQL または JSON のスキーマオブジェクトを適用します
vacuum_databaseデータベースを再構築して空き領域を回収します
begin_transactionトランザクションまたはネストされたセーブポイントを開始します
commit_transactionトランザクションをコミットするか、セーブポイントを解放します
rollback_transactionトランザクションまたはセーブポイントをロールバックします

パラメーター、レスポンス、使用例、ページネーション、CSV オプションについては、 完全な API リファレンス をご覧ください。

安全性モデル

サーバーは、すべての SQL 文字列を同じものとして扱うわけではありません。

  • execute_read_query は SQLite のオーソライザー API を使用し、書き込み、 スキーマの変更、安全でない PRAGMA、アタッチ、複数のステートメントを拒否します。
  • 書き込み、スキーマ、トランザクション、破壊的な管理操作には 個別のツールを使用するため、クライアントは承認を求めることができます。
  • データベースと CSV のパスは、アクセス前に解決され、検証されます。
  • ツールが生成する識別子は引用符で囲まれます。
  • 値は SQL に直接埋め込むのではなく、パラメーターとしてバインドされます。
  • バックアップには SQLite のオンラインバックアップ API を使用し、コミット済みの WAL データも含まれます。

クライアントでは、読み取り専用ツールを許可し、破壊的なツールには承認を必須にできます。 変更を承認する前に、必ず SQL とファイルパスを確認してください。スキーマの変更、インポート、 または大量の書き込みを行う前に、重要なデータベースをバックアップしてください。

なぜネイティブ SQLite なのか?

node:sqlite を使用すると、ネイティブアドオン、そのインストールスクリプト、プラットフォーム固有のバイナリが不要になります。本番環境へのクリーンインストールのサイズは、 better-sqlite3 を使用した場合の 31.3 MB から、ネイティブ SQLite では 3.6 MB へと減少し、88.5% 削減されました。npm の tarball 自体のサイズはほぼ同じです。ネイティブ版は 63.1 KB、 公開版は 60.0 KB です。大幅な削減は、インストールされる 依存関係ツリーで生じています。

この移行により、better-sqlite3 とその型パッケージも不要になります。 また、インストールが、ビルド済みアドオンの提供状況や、ネイティブコンパイラーが正常に動作するかどうかに左右されなくなります。

ドライバーベンチマーク

時間は短いほど優れています。これらの中央値は、20,000 行、ウォームアップ 2 回、各ドライバーでの測定 7 回に基づいています。各サンプルでは新しいデータベースを使用し、ドライバーの順序を交互にしています。挿入ワークロードを除き、セットアップは測定範囲外です。

ワークロードnode:sqlitebetter-sqlite3ネイティブの結果
挿入トランザクション11.13 ms23.78 ms2.14×高速
インデックス付きポイント読み取り25.23 ms21.40 ms17.9%低速
全行スキャン6.39 ms3.29 ms94.3%低速
更新トランザクション8.04 ms15.40 ms1.92×高速
オンラインバックアップ0.55 ms0.38 ms45.0%低速

Linux x64、Node.js 24.15.0、AMD Ryzen AI 9 HX 370 で測定しました。Node は SQLite 3.51.3 を使用し、[email protected] は SQLite 3.53.3 を使用しました。これらのマイクロベンチマークが示すのはドライバー間のトレードオフであり、MCP のパフォーマンス全体ではありません。MCP のトランスポートと検証にかかるコストは含まれていません。

開発

git clone https://github.com/spences10/mcp-sqlite-tools.git
cd mcp-sqlite-tools
pnpm install
pnpm run check
pnpm test
pnpm run build

モジュールの役割やその他の開発コマンドについては、 開発とアーキテクチャ をご覧ください。

ドキュメント

コントリビューション

Issue とプルリクエストを歓迎します。

ライセンス

MIT ライセンスです。LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。