pg-mcp
pg-mcp
MCP (Model Context Protocol) を介した自然言語PostgreSQLクエリサービス。OpenAIを使用して自然言語をSQLに変換し、安全に検証・実行して、MCP互換クライアントに結果を返します。
機能
OpenAIによる自然言語からSQLへの変換
起動時にデータベーススキーマを自動検出(テーブル、ビュー、カラム、インデックス、外部キー、列挙型)
オプションでディスク永続化が可能なスキーマキャッシュ
SQL安全検証(SELECTのみ、危険な関数のブロック、LIMITの強制)
設定可能なタイムアウト付きの読み取り専用トランザクション実行
結果が空の場合の自動再試行を含む結果検証
複数データベースのサポート
Related MCP server: PostgreSQL MCP Server
要件
Python 3.11以上
PostgreSQL
OpenAI APIキー
インストール
pip install -e .開発用:
pip install -e ".[dev]"設定
.env.example を .env にコピーし、値を入力してください:
cp .env.example .env変数 | 必須 | デフォルト | 説明 |
| はい | — | カンマ区切りのPostgreSQL接続文字列 |
| いいえ | 最初のDSN | クエリのデフォルトデータベース |
| はい | — | OpenAI APIキー |
| いいえ |
| SQL生成に使用するモデル |
| いいえ | OpenAIデフォルト | カスタムエンドポイント(Azure、プロキシなど) |
| いいえ |
| クエリのタイムアウト(秒) |
| いいえ |
| 返される最大行数(1-1000) |
| いいえ | なし | 永続スキーマキャッシュのパス |
| いいえ |
|
|
複数データベースの例:
PG_MCP_DATABASES=postgresql://user:pass@host1:5432/db1,postgresql://user:pass@host2:5432/db2Claude Desktopでの使用方法
claude_desktop_config.json に以下を追加してください:
{
"mcpServers": {
"pg-mcp": {
"command": "python3",
"args": ["-m", "pg_mcp.server"],
"env": {
"PG_MCP_DATABASES": "postgresql://user:pass@localhost:5432/mydb",
"OPENAI_API_KEY": "sk-...",
"PG_MCP_SCHEMA_CACHE_PATH": "~/.cache/pg-mcp/schema.json"
}
}
}
}MCPツール
query
自然言語を使用してデータベースにクエリを実行します。
{
"question": "What are the top 10 customers by sales last month?",
"database": "mydb",
"return_sql": false,
"max_rows": 100
}return_sql: true— 生成されたSQLを実行せずに返しますreturn_sql: false(デフォルト) — 実行して結果を返します
list_databases
アクセス可能なすべてのデータベースを概要情報とともに一覧表示します。
describe_database
データベースの詳細なスキーマ情報を取得します。
{
"database": "mydb",
"schema": "public",
"pattern": "user"
}refresh_schema
データベースからスキーマキャッシュを再読み込みします。
{
"database": "mydb"
}database を省略すると、すべてのデータベースが更新されます。
テストの実行
python3 -m pytest tests/ -v仕組み
User question
→ Schema context assembled from cache
→ OpenAI generates SQL
→ Safety validation (SELECT-only, no dangerous functions, LIMIT injection)
→ Execute in read-only transaction with timeout
→ Optional result validation on empty results
→ Return SQL or query resultsセキュリティ
生成されたSQLはSELECTのみであるか検証されます(CTEチェックを含む)
危険なPostgreSQL関数(
pg_sleep、lo_importなど)はブロックされますすべてのクエリは読み取り専用トランザクションで実行されます
自動的なLIMIT強制により、大規模な結果セットを防ぎます
クエリタイムアウトにより、長時間実行されるクエリを防ぎます
接続パスワードはログやAPIレスポンスに表示されません
This server cannot be deployed
Maintenance
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceA Model Context Protocol server that provides read-only access to PostgreSQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.122,323 npm91,120MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.122,323 npm27MIT
- FlicenseDqualityDmaintenanceA secure Model Context Protocol server that allows Claude to execute read-only SQL queries against a PostgreSQL database, enabling natural language interaction with database data.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to query, explore, and analyze PostgreSQL databases through the Model Context Protocol. It provides robust security features including read-only mode, schema restrictions, and query timeouts for safe data interaction.7 npmMIT