database-mcp-mariadb について
database-mcp-mariadbは、MCPクライアントからMariaDBデータベースへ構造化アクセスを提供します。SQL実行とスキーマ探索に対応し、読み取り専用、行数上限、タイムアウト、ログ内のシークレット保護が既定で有効です。
主な機能
- 01SQLクエリの実行
- 02テーブル、列、インデックス、キーの探索
- 03既定で読み取り専用を適用
- 04結果行数と実行時間を制限
- 05チャットプロンプト外で認証情報を指定
活用シーン
- 01MariaDBのスキーマ確認
- 02AIクライアントから読み取り専用クエリを実行
- 03クエリ結果と実行時間を制限
- 04環境変数またはYAML設定で接続
MCP 対応
MariaDBのクエリとデータベースオブジェクトの探索に使う、`execute_sql`と`search_objects`の2つのMCPツールを公開します。接続設定は起動時に指定し、ツール呼び出しでは受け付けません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
database-mcp
AI クライアントが SQL データベースに安全かつ構造化された方法でアクセスできるようにする MCP サーバーです。
データベースエンジンごとにインストール可能なパッケージを提供しており、TypeScript(npm)、Python
(PyPI)、Rust(crates.io)に対応しています。すべてのパッケージで、execute_sql と search_objects の
最小限の 2 つのツールを同じように提供し、読み取り専用モード、行数の上限、ステートメントのタイムアウトを
デフォルトで適用します。
パッケージ
| エンジン | TypeScript(npm) | Python(PyPI) | Rust(crates.io) |
|---|---|---|---|
| SQLite | @database-mcp/sqlite | database-mcp-sqlite | database-mcp-rs-sqlite |
| libSQL | @database-mcp/libsql | database-mcp-libsql | database-mcp-rs-libsql |
| MySQL | @database-mcp/mysql | database-mcp-mysql | database-mcp-rs-mysql |
| MariaDB | @database-mcp/mariadb | database-mcp-mariadb | database-mcp-rs-mariadb |
| Postgres | @database-mcp/postgres | database-mcp-postgres | database-mcp-rs-postgres |
3つすべての言語版が公開されており、CI では実際のデータベースを使った言語に依存しない同一の適合性テストスイートに合格しています。そのため、言語にかかわらず動作は同じです。各エンジンは MCP Registry にも掲載されており、npm、PyPI、cargo の3種類のインストール方法を利用できます。
Rust のクレート名は、crates.io で単純な名前がすでに使われているため、database-mcp-rs-<engine> となっています。各クレートがインストールするコマンドは、引き続き database-mcp-<engine> です。Go は今後対応予定です。
設計原則
- ツールは2つだけ。 ツールの種類を絞ることで、モデルのコンテキストウィンドウをすっきり保てます。
search_objectsはスキーマを段階的に開示します。引数なしで呼び出すとテーブル一覧を取得し、テーブル名を指定するとカラム、インデックス、外部キーを取得します。 - デフォルトで安全。 読み取り専用モードは、保守的な SQL ガードと、データベース自体のセッション単位の読み取り専用設定という2つの層で適用されます。行数には上限があり(デフォルトは1000)、ステートメントはタイムアウトします(デフォルトは30秒)。
- 設定は起動時に行い、チャット経由では行いません。 接続の詳細は、フラグ、YAML 設定ファイル、または環境変数から取得します。認証情報をツール呼び出しで受け付けることはありません。
- シークレットはログに記録されません。 パスワードには出力されないシークレット型を使用し、DSN はログ記録前にサニタイズされ、ログの境界では秘匿化フィルターによって保護されます。
クイックスタート
使用するエンジンのパッケージを選択してください。設定項目の全容は各 README を参照してください。npm 経由で SQLite を使用する場合:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@database-mcp/sqlite", "--dsn", "/absolute/path/to/database.db"]
}
}
}
または PyPI 経由の場合は、"command": "uvx" を使用し、
"args": ["database-mcp-sqlite", "--dsn", "/absolute/path/to/database.db"] を指定します。
または、Node や Python のランタイムを必要としないネイティブバイナリとして使用する場合は、cargo install database-mcp-rs-sqlite を実行し、パッケージ名を除いた同じ args とともに "command": "database-mcp-sqlite" を指定します。
フラグ、環境変数、YAML 設定は、3つすべてで共通です。
ネットワーク接続型のエンジンでは、認証情報は環境変数(MYSQL_*、MARIADB_*、POSTGRES_*/DATABASE_URL、LIBSQL_URL/LIBSQL_AUTH_TOKEN)、*_FILE でマウントしたシークレット、または --config で指定する YAML ファイルから取得します。チャットのプロンプトから取得することはありません。
コントリビューション
CONTRIBUTING.md を参照してください。要点は次のとおりです。完了の定義は適合性テストスイートです。変更がマージ可能となるのは、影響を受けるすべてのサーバーに対して conformance/run.mjs が成功した場合に限られます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。