Skip to main content
Glama
dochaocn

sqlite-readonly-mcp

by dochaocn

sqlite-readonly-mcp

リモートLinux上で動作する 読み取り専用SQLite Model Context Protocol サーバーです。Streamable HTTP(/mcp)を使用し、Bearer Token で認証を行い、クエリ結果を JSONテキスト で返します。Nginx(HTTPS) の背後に配置し、アップストリームはローカルホストのみをリッスンするように設計されています。

機能

  • ツール sqlite_query:単一の SELECT / WITH / EXPLAIN を実行し、{ rows, rowCount } のJSONを返します。

  • ツール list_tables:システムテーブル以外のテーブル名を表示します。

  • SQLite:better-sqlite3 の readonly + fileMustExist を使用。アプリケーション層で単一ステートメントとクエリプレフィックスを制限します。

  • GET /health:ループバックアクセス専用のヘルスチェック用エンドポイント(src/server.ts を参照)。

  • トランスポート:Streamable HTTP(/mcp)およびレガシーな SSE(GET /sse、POST /messages)に対応しており、必要に応じてCursorがフォールバック可能です。

Related MCP server: PostgreSQL MCP Server

環境変数

変数

必須

説明

SQLITE_PATH

はい

データベースファイルの絶対パス

BEARER_TOKEN

はい

静的Bearerトークン(READONLY_TOKEN も使用可能)

HOST

いいえ

デフォルト 127.0.0.1

PORT

いいえ

デフォルト 3333

ALLOWED_HOSTS

いいえ

カンマ区切りの許可された Host ヘッダー。Nginxの外部ドメインを含める必要があります。デフォルト 127.0.0.1,localhost,[::1]

SQLITE_MAX_ROWS

いいえ

1回のクエリあたりの最大行数。デフォルト 5000

ローカルでのビルドと実行

npm install
npm run build
export SQLITE_PATH=/path/to/db.sqlite
export BEARER_TOKEN='your-secret-token'
export ALLOWED_HOSTS='127.0.0.1,localhost'
node dist/server.js

開発・デバッグ:npm run dev

Nginx と systemd

deploy/nginx.example.conf、deploy/sqlite-readonly-mcp.service、deploy/sqlite-readonly-mcp.env.example を参照してください。

ポイント:Authorization、Accept、Content-Type、mcp-session-id をアップストリームに渡すこと。SSE/チャンクレスポンスに対しては proxy_buffering をオフにしてください。例には Streamable HTTPの /mcp と併せて、SSEの /sse、/messages(レガシーフォールバック)のリバースプロキシ設定が含まれています。

rootユーザーでの実行(推奨例)

SQLiteファイルおよび親ディレクトリ の読み取り権限設定を簡略化するため、例では root でサービスを起動します(systemdユニット内で User= / Group= を設定しない場合、デフォルトでrootになります)。

  1. コードとビルド成果物を /opt/sqlite-readonly-mcp などに配置し、npm ci --omit=dev および npm run build を実行します。

  2. 環境ファイルをコピーして変数を入力します:

 sudo cp deploy/sqlite-readonly-mcp.env.example /etc/sqlite-readonly-mcp.env
 sudo chmod 600 /etc/sqlite-readonly-mcp.env
  1. ユニットをインストールして有効化します(必要に応じて WorkingDirectory や ExecStart 内の node の絶対パスを修正してください):

 sudo cp deploy/sqlite-readonly-mcp.service /etc/systemd/system/
 sudo systemctl daemon-reload
 sudo systemctl enable --now sqlite-readonly-mcp
 sudo systemctl status sqlite-readonly-mcp

以前に User=mcp を手動で追加していた場合は、その行を削除してから daemon-reload と restart を行ってください。

セキュリティ上の注意:rootプロセスが侵害された場合の影響が大きいため、必ず HTTPS、Bearer、ローカルホストリッスン + Nginx、ファイアウォール を組み合わせて使用してください。最小権限が必要な場合は、専用ユーザーに戻し、データファイルとパスの権限を個別に設定してください。

手動検証(curl)

MCPはクライアントが application/json と text/event-stream の両方を受け入れることを要求します:

curl -sS -D - \
  -H "Authorization: Bearer $BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' \
  "https://mcp.example.com/mcp"

不正なトークンの場合は 401 が返されるはずです。

Cursorクライアント

CursorのMCP設定で、このリモートサービスに対して HTTPS URL(例:https://mcp.example.com/mcp)を設定します。Bearer トークンが必要な場合、現在のCursorのバージョンがリモートMCPに対する カスタムヘッダー の設定をサポートしているか確認してください。サポートされていない場合は、ローカルに固定の Authorization を付与するゲートウェイを一段階追加する必要があります(方案のリスク説明を参照)。

運用

詳細は docs/RUNBOOK.md を参照してください。

ライセンス

MIT(@modelcontextprotocol/sdk に準拠。各依存関係のライセンスに従います)。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight MCP server that provides read-only access to SQLite databases, allowing users to execute SELECT queries, list tables, and describe table schemas.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that enables safe, read-only SQL SELECT queries against PostgreSQL databases with built-in security validation. It features connection pooling, automatic row limits, and structured logging to ensure secure and reliable database interactions.
    13 npm
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Read-only MCP server for SQL databases (SQL Server, Postgres, SQLite) with multi-server support and three-layer safety using AST validation and linting.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Custom MCP server connected to a read-only SQLite database, exposing a schema resource and a query tool for safe data retrieval.
    -