db-mcp-server
db-mcp-server
ローカル MCPサーバー で、AIコーディングアシスタント(例: Claude Code)に PostgreSQL データベースへの 認証情報分離 アクセスを提供します。アシスタントは SQL のみを送信し、行のみを受け取ります。データベースのユーザー名、パスワード、SSH キーがモデルのコンテキストや会話のトランスクリプトに入ることはありません。
なぜ
AI アシスタントをデータベースに接続する場合、通常は接続文字列やパスワードをモデル(およびそのトランスクリプト)が読み取れる場所に置く必要があります。このサーバーはその境界を維持します。暗号化された認証情報と SSH トンネルを所有し、SQL のみの小さなツールサーフェスを公開し、デフォルトで読み取り専用です。
Related MCP server: Postgres Scout MCP
仕組み
カタログ (
registry.yaml) — 非秘密のルーティング。customers → environments → servicesとして構成され、各サービスはデータベース名とsecret_ref(ボールトへのポインタ。決して認証情報そのものではない)にマッピングされます。ボールト (
vault.enc) — scrypt から導出されたキーを使用した AES-256-GCM。データベース認証情報を保持し、起動時にパスフレーズを使用してメモリ内に一度だけ復号化されます。トンネルプール —
sshtunnelを介した(customer, environment)ごとの SSH トンネル。一時的な127.0.0.1ポートにバインドされます。エグゼキュータ —
psycopg。run_queryは Postgres の READ ONLY トランザクションで実行されます(エンジンは書き込みを拒否します)。run_write_queryはconfirm=trueを必要とします。
インストール
python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1 (bash: source .venv/Scripts/activate)
pip install -e ".[dev]"設定
設定は環境変数から取得されます。デフォルトはプロジェクトルートからの相対パスで解決されます。
変数 | 目的 | デフォルト |
| ボールトのパスフレーズ(サーバー実行に必須) | — |
|
|
|
|
|
|
| SSH PEM キーを保持するディレクトリ |
|
|
|
|
プロビジョニング(初回セットアップ)
テンプレートをコピーして実際の値を入力します:
cp bootstrap.example.yaml bootstrap.yamlSSH 秘密鍵を
keys/に配置します(ファイル名はカタログのpem_keyフィールドと一致する必要があります)。非秘密のカタログと暗号化されたボールトを生成します(サーバー実行時に再利用するパスフレーズを求められます):
python -m db_mcp_server.bootstrap --dry-run # preview, writes nothing python -m db_mcp_server.bootstrap # writes registry.yaml + vault.enc python -m db_mcp_server.vault_admin verify # expect {"ok": true}
bootstrap.yaml は 平文 の認証情報を保持します。これは git で無視されます。ボールトが存在するようになったら、削除するかオフラインで保管してください。
コマンドラインツール
コマンド | 目的 |
| MCP サーバー(stdio)。MCP クライアントによって起動されます。手動では起動しません。 |
| ボールト内の認証情報を管理: |
|
|
(コンソールコマンドは pip install -e . 後に存在します。python -m db_mcp_server.<module> 形式は常に機能します。)
アシスタントに公開されるツール
list_databases()— カタログ(customers → environments → services)。秘密情報は含まれません。run_query(customer, environment, service, sql, max_rows?)— 読み取り専用。run_write_query(customer, environment, service, sql, confirm)— ゲート付き書き込み。
ドメイン障害は例外ではなく構造化された {error_code, message} として返されるため、アシスタントは対応できます。
MCP クライアントへの登録
.mcp.json の例(パスを調整してください)。${DB_MCP_PASSPHRASE} を使用して、パスフレーズをファイルに書き込む代わりにシェルから読み取ります:
{
"mcpServers": {
"db": {
"command": "/absolute/path/to/db-mcp-server/.venv/Scripts/python.exe",
"args": ["-m", "db_mcp_server.server"],
"env": {
"DB_MCP_PASSPHRASE": "${DB_MCP_PASSPHRASE}"
}
}
}
}セキュリティに関する注意
vault.enc、keys/、bootstrap.yaml、*.env、*.pemは git で無視されます。決してコミットしないでください。ボールトのパスフレーズは
DB_MCP_PASSPHRASE(またはプロンプト)を介して提供されます。registry.yaml、argv、ログには決して保存されません。db-vaultは DB パスワードを非表示プロンプト(getpass)で読み取ります。argv では読み取りません。run_queryは Postgres エンジンレベルで読み取り専用です。書き込みにはconfirm=trueが必要です。
テスト
pip install -e ".[dev]" && python -m pytest -qDB 統合テストは、DB_MCP_TEST_DSN が到達可能な PostgreSQL を指している場合にのみ実行されます。
ロードマップ(このビルドには含まれません)
永続的な監査証跡、マルチユーザー操作、外部シークレットマネージャーのバックエンド、スキーマイントロスペクションツール、および認証情報の分離をハードバウンダリにするための権限拒否リスト。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with PostgreSQL databases using natural language queries, providing secure read-only access to database schemas and SQL translation capabilities.67
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to safely explore, analyze, and maintain PostgreSQL databases with read-only mode by default, SQL injection prevention, query performance analysis, and optional write operations.90Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with PostgreSQL databases through MCP, supporting multi-database and schema access with security controls like read-only mode and SQL auditing.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Generate realistic, FK-consistent synthetic test data for your databases from your AI assistant.
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gwdmnn/keyward-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server