sqlite-reader-mcp について
sqlite-reader-mcpは、SQLiteデータベースを調べるための読み取り専用MCPサーバーです。データの検索やスキーマ確認が必要なクライアント向けに、許可されたパスと読み取りクエリにアクセスを限定します。
主な機能
- 01SELECTおよびWITHクエリの実行
- 02データベーステーブルの一覧表示
- 03テーブルスキーマの確認
- 04許可されたパスへのアクセス制限
- 05クエリ結果行数の制限
活用シーン
- 01許可されたSQLiteデータベースの行を調査
- 02検索前にテーブル名を確認
- 03列の型や制約を確認
- 04データベースを変更せずにデータを検索
MCP 対応
MCPサーバーは、許可されたSQLiteデータベースの読み取りクエリ、テーブル一覧、スキーマ確認用ツールを提供します。SELECTまたはWITH以外のステートメントは拒否します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
sqlite-reader-mcp
SQLite データベースを読み取るための MCP サーバーです。
概要
sqlite-reader-mcp は、SQLite データベースへの読み取り専用アクセスを提供する軽量な MCP サーバーです。SELECT クエリの実行、テーブルの一覧表示、テーブルスキーマの説明ができます。
特長
- 読み取り専用アクセス: 読み取り操作(SELECT クエリ)のみを許可することで、データの整合性を確保します。
- 安全なパス処理: 事前に許可された絶対ファイルパスとディレクトリにデータベースへのアクセスを制限します。
- SQL 検証: SQL クエリを解析して検証し、意図しない操作を防ぐため、
SELECT文とWITH文のみを許可します。 - 非同期操作:
aiosqliteを利用して、データベースとのやり取りをノンブロッキングで実行します。 - 行数の制限: 過剰なデータ取得を防ぐため、クエリが返す行数を自動的に制限します。
- MCP ツール:
read_query: 指定した SQLite データベースに対して SELECT SQL クエリを実行します。list_tables: 指定した SQLite データベース内のすべてのテーブルを一覧表示します。describe_table: 特定のテーブルのスキーマ情報(列名、型など)を取得します。
要件
- Python 3.13+
aiosqlite >= 0.21.0fastmcp >= 2.6.1sqlparse >= 0.5.3
インストール
推奨されるインストール方法は uv を使用することです。
uv tool install git+https://github.com/abhinavnatarajan/sqlite-reader-mcp
使用方法
sqlite-reader-mcp --paths /path/to/your/database.db /path/to/another/allowed_directory
引数:
--paths(または-p): サーバーがアクセスを許可される、SQLite データベースファイルまたはそれらを含むディレクトリの絶対パスのリストです。
サーバーの起動後、FastMCP クライアントを使用して、次のツールを利用できます。
read_query
指定した SQLite データベースファイルに対して SELECT クエリを実行します。
- 引数:
file_path(str): SQLite データベースファイルの絶対パスです。query(str): 実行する SELECT SQL クエリです。params(Optional[List[Any]]): クエリに渡す省略可能なパラメーターのリストです。fetch_all(bool):True(デフォルト)の場合はすべての結果を取得します。Falseの場合は1行取得します。row_limit(int): 返す行数の最大値です(デフォルトは1000)。
- 戻り値: 辞書のリストです。各辞書はクエリ結果の1行を表します。
list_tables
指定した SQLite データベースファイル内のすべてのテーブルを一覧表示します。
- 引数:
file_path(str): SQLite データベースファイルの絶対パスです。
- 戻り値: テーブル名(文字列)のリストです。
describe_table
SQLite データベース内の特定のテーブルについて、詳細なスキーマ情報を提供します。
- 引数:
file_path(str): SQLite データベースファイルの絶対パスです。table_name(str): 説明するテーブルの名前です。
- 戻り値: 列を説明する辞書のリストです(名前、型、notnull、デフォルト値、主キーかどうかなど)。
セキュリティ
- 読み取り専用: サーバーは厳密に読み取り専用です。
INSERT、UPDATE、DELETE、その他のデータ変更 SQL コマンドは許可されません。 - パスのホワイトリスト化: アクセスは、
--pathsコマンドライン引数で明示的に指定されたパスにある SQLite ファイルに制限されます。パスは絶対パスで、実在する必要があります。 - クエリ検証: すべての SQL クエリを解析します。
WITHを使用した共通テーブル式を含むSELECT文のみが許可されます。1つのクエリ文字列内の複数の文は拒否されます。末尾のセミコロンは自動的に削除されます。
開発
このプロジェクトは setuptools を使用して構築されています。設定は pyproject.toml にあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。