Skip to main content
Glama
devopam

MCPg - Production-grade PostgreSQL MCP Server

MCPg

MCP Toplist

本番環境向けの Model Context Protocol サーバー for PostgreSQL。 AIエージェントがPostgresデータベースの安全な検査、クエリ、操作、チューニングを可能にします。カタログのイントロスペクション、クエリインテリジェンス、自然言語SQL、構造差分、ハイブリッド検索、グラフクエリ、データ移動、ライブ運用などを網羅する254のツールを備えています。

PyPI version Python versions License: MIT CI OpenSSF Scorecard OpenSSF Best Practices Stars MCPg MCP server AllMCPs Verified

ライブで試す: MCPクライアント — または MCP Inspector — をホスト型の読み取り専用デモエンドポイント https://devopam-mcpg-demo.hf.space/mcp に向けてください。使い捨てのデモデータに対して読み取りツールを提供します。実際の使用では、MCPgを自分のデータベースの隣で実行してください(クイックスタートを参照)。

📍 掲載先


側面

MCPg

安全性

デフォルトで読み取り専用 + AST検証

トランスポート

stdio + HTTP/SSE

インストール

pip install mcpg

Postgresバージョン

14–19

主な差別化要因

本番環境の可観測性 + マルチテナンシー

MCPgを選ぶ理由

  • デフォルトで安全。 読み取り専用アクセスモード。ユーザーが提供するすべてのSQL ステートメントは、実行前に検証済みのAST許可リストを通過します。 識別子の補間は厳格な [A-Za-z_][A-Za-z0-9_]* 正規表現を通じて行われます — これは ユーザー入力が文字列連結を通じてデータベースに到達しないことを意味する設計上の制約です。 DDL、シェル、LISTEN/NOTIFY などの機能は、オプトインするまでオフになっています。 すべてのツールは、同じゲートから導出されたMCP ToolAnnotationsreadOnlyHintopenWorldHint)を公開するため、クライアントは推測することなく 読み取りを自動承認し、書き込みをゲートできます。

  • 1つのサーバーで広範なカバレッジ。 アプリケーションデータアクセス(クエリ、検索、 カーソル、NL→SQL)および DBAレベルの操作(ヘルスチェック、インデックスのチューニング、 EXPLAIN分析、ロック、vacuum、ダンプ、レプリカ、マイグレーション)を 単一のMCPサーバーで提供。エージェントはタスクを切り替えるためにツールを切り替える必要がありません。

  • PostgreSQLネイティブなすべて。 ORMなし、抽象化のオーバーヘッドなし — psycopg3 を直接使用し、すべての pg_* システムビューに対応し、 TimescaleDB、pgvector、PostGIS、Apache AGE、pg_stat_statements と 利用可能な場合は統合し、利用できない場合は優雅に機能を縮小します。

  • デモではなく本番向けの設計。 コネクションプーリング、リクエストごとの SET ROLE マルチテナンシー、劣化ホスト検出を備えた読み取りレプリカルーティング、 専用コネクションを備えたサーバーサイドカーソル、 レート制限、正規表現による機密情報のマスキングを備えた監査トレイル、 起動時のPG TLS強制、OIDC JWTベアラー認証、セッションごとのステートメント / ロック タイムアウト。

  • 組み込みの可観測性。 HTTPトランスポート上のPrometheus /metrics エンドポイントが mcpg_tool_calls_total{tool,status} + mcpg_tool_duration_seconds を公開します。すべてのツール呼び出しは、 認証情報をマスキングした引数付きの構造化監査イベントを記録します。

  • テスト駆動、マルチバージョン。 2,500以上のユニットテストに加え、CIで実際のPostgreSQLコンテナに対して実行される統合スイート — マトリックスは プッシュのたびにPG 14, 15, 16, 17, 18 をカバーし、さらにPG 19(ベータ) を 実験的(非ブロッキング)エントリとしてissue #120で追跡しています。


Related MCP server: PostgreSQL MCP Server

インストール

PyPIから(推奨)

pip install mcpg
# or, in an isolated venv exposed globally:
uv tool install mcpg

確認:

mcpg --version

Docker

GitHub Container Registryからビルド済みイメージをプルします(タグ付きリリースのたびに公開 — :latest は最新を追跡、または :0.6.5 のようなバージョンを固定):

docker pull ghcr.io/devopam/mcpg:latest
docker run --rm --name mcpg -p 8000:8000 \
    -e MCPG_DATABASE_URL=postgresql://user:pass@host:5432/db \
    -e MCPG_ACCESS_MODE=read-only \
    ghcr.io/devopam/mcpg:latest

Windows PowerShell では末尾の \ をバッククォート ` に置き換えてください (またはコマンドを1行にまとめてください)。インストール ガイド にはコピーして使える Linux/macOS、PowerShell、Command Prompt用のブロックがあります。

またはソースから自分でビルド:

docker build -t mcpg https://github.com/devopam/MCPg.git

マルチステージイメージ: ランタイムステージはビルドツールチェーンを削除し、 uid=10001 / gid=10001nologin シェルで実行され、 アプリケーションファイルはルート所有でランタイムユーザーには読み取り専用です。

ソースから(開発者向け)

git clone https://github.com/devopam/MCPg && cd MCPg
uv sync

uv sync はすべてのランタイム + 開発依存関係を含むvenvを作成し、 mcpg コンソールスクリプトを公開します。

詳細はインストールガイドを参照してください。


クイックスタート

ワンクリックインストール: Add to Cursor Install in VS Code Claude Desktop — Windsurf、JetBrains、Zed、Cline、Antigravity、Qwen Code、Perplexity、 ChatGPT、Copilot Studio、Continue、HTTP クライアントのセットアップは統合ガイドにあります。

Claude Desktopでのワンクリックインストール(.mcpb)

最新リリースから mcpg-<version>.mcpb をダウンロードし、 ダブルクリックします(またはClaude Desktopの設定 → 拡張機能にドラッグ&ドロップ)。PostgreSQL接続URLの入力を求められます — OSのキーチェーンに保存されます — そしてアクセスモード(デフォルトは 読み取り専用)。これでインストール完了です: バンドルは約2 kBで、 ホストがお使いのプラットフォーム向けに固定された mcpg リリースをPyPIから解決します。

または手動で設定(stdioトランスポート)

これを claude_desktop_config.json に追加してください(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mcpg": {
      "command": "uvx",
      "args": ["mcpg"],
      "env": {
        "MCPG_DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
      }
    }
  }
}

Claude Desktopを再起動します。MCPgツールセットがモデルで利用可能になります。 Claudeに次のようなことを尋ねられます:

"このデータベースにはどのようなスキーマがありますか?それぞれについて、 最大の3つのテーブルを要約してください。"

"このクエリが遅いのはなぜですか? SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at DESC"

まだ興味深いデータがない?デモデータセットをシード

MCPG_DATABASE_URL=postgresql://... mcpg --demo

1つのコマンドで、厳選された小さなeコマースデータセット(3,000件の注文、 900件の商品レビュー、意図的に仕込まれた欠陥)を mcpg_demo スキーマにシードします — インデックスアドバイザー、クエリプラン分析、 全文検索、PII監査、グラフ投影がすべて初回で実際に見つけられるように設計されています。 ガイド付きツアー でキャプチャされたウォークスルーを参照し、 mcpg --demo-drop でいつでも削除できます。

HTTPサーバーとして実行(IDE統合、Webアプリなど)

MCPG_DATABASE_URL=postgresql://user:pass@localhost:5432/mydb \
MCPG_TRANSPORT=streamable-http \
MCPG_HTTP_PORT=8000 \
mcpg

次に、MCP対応クライアントを http://localhost:8000/mcp(または SSEトランスポートの場合は /sse)に向けます。 MCPG_HTTP_AUTH_TOKEN=... で静的ベアラーを設定するか、 MCPG_AUTH_MODE=oidc でOIDC発行者に対する完全なJWT検証を設定します。


設定

MCPgは環境変数のみで設定されます — 設定ファイルも フラグもありません(CLIの --version / --demo / --demo-drop はワンショットコマンドであり、設定ではありません)。必須なのは MCPG_DATABASE_URL のみで、それ以外はすべて安全なデフォルトがあります。

一般的なシナリオ

シナリオ

設定

ローカル探索、読み取り専用

MCPG_DATABASE_URL

読み書きアプリデータアクセス

MCPG_ACCESS_MODE=restricted

DBAツールキット(DDL、vacuumなど)

MCPG_ACCESS_MODE=unrestricted + MCPG_ALLOW_DDL=true

ベアラー認証付きHTTPトランスポート

MCPG_TRANSPORT=streamable-http + MCPG_HTTP_AUTH_TOKEN=…

マルチテナントSaaS

MCPG_DEFAULT_ROLE=tenant_a + MCPG_ALLOWED_ROLES=tenant_a,tenant_b,…

読み取りレプリカのファンアウト

MCPG_REPLICA_URLS=postgresql://…?sslmode=require,postgresql://…?sslmode=require

NL→SQL — 単一プロバイダー

任意の1つのベンダーキーを設定(ANTHROPIC_API_KEYOPENAI_API_KEYGEMINI_API_KEYXAI_API_KEYGROQ_API_KEYHF_TOKEN、… — 22の組み込みプロバイダー)。MCPgがデフォルトを自動選択します。

NL→SQL — 複数プロバイダー、呼び出し側が選択

有効にしたいすべてのベンダーキーを設定。translate_nl_to_sql の各呼び出しで provider="…" を渡せます(設定済みの組み込みまたはカスタム)。

完全なリファレンス

コア

変数

デフォルト

説明

MCPG_DATABASE_URL

必須

プライマリPostgreSQL DSN。URI形式(postgresql://…)とキーワード形式(host=… user=…)に対応。リモートホストではsslmode=require(またはそれ以上)が必要。

MCPG_ACCESS_MODE

read-only

read-only | restricted(書き込みツールを許可)| unrestricted(ゲート変数と組み合わせるとDBAツールも有効化)。

MCPG_TRANSPORT

stdio

stdio(デフォルト、Claude Desktop用)| streamable-http | sse

MCPG_LOG_LEVEL

INFO

DEBUG | INFO | WARNING | ERROR | CRITICAL

MCPG_HTTP_HOST

127.0.0.1

HTTPトランスポートのバインドアドレス。コンテナ内では0.0.0.0に設定。

MCPG_HTTP_PORT

8000

HTTPトランスポートのリッスンポート(1〜65535)。

機能ゲート(影響範囲の大きいツールのオプトイン)

変数

デフォルト

説明

MCPG_ALLOW_DDL

false

DDLツール(run_ddlcreate_graphdrop_graph、ハイパーテーブルツール、マイグレーションツール)を公開。MCPG_ACCESS_MODE=unrestrictedが必要。

MCPG_ALLOW_SHELL

false

サブプロセスベースのツール(dump_databaserestore_databaserun_pg_binary)を公開。必要なPGクライアントバイナリがPATH上にある必要がある。

MCPG_ALLOW_LISTEN

false

LISTEN/NOTIFYツール(subscribe_channelpoll_notificationsunsubscribe_channellist_notification_subscriptions)を公開。

認証(HTTPトランスポートのみ)

変数

デフォルト

説明

MCPG_AUTH_MODE

static

static(ベアラートークンをMCPG_HTTP_AUTH_TOKENと比較)| oidc(完全なJWT検証)。

MCPG_HTTP_AUTH_TOKEN

MCPG_AUTH_MODE=staticの場合に必要なベアラートークン。定数時間比較。

MCPG_OIDC_ISSUER

OIDC発行者URL(MCPG_AUTH_MODE=oidcの場合に必須)。

MCPG_OIDC_AUDIENCE

期待されるaudクレーム(MCPG_AUTH_MODE=oidcの場合に必須)。

MCPG_OIDC_JWKS_URL

自動検出

JWKSエンドポイントを上書き(それ以外の場合は発行者の.well-knownから自動検出)。

MCPG_OIDC_ROLE_CLAIM

値がリクエストごとのPGロール(SET LOCAL ROLE)となるJWTクレーム。テナンシードライバーと組み合わせて使用。

HTTP強化(HTTPトランスポートのみ)

変数

デフォルト

説明

MCPG_HTTP_MAX_BODY_BYTES

1048576

(1 MiB)これを超えるリクエストボディは413を返す。ストリームされたバイト数をカウントするため、Content-Lengthの欠落や偽装では回避できない。

MCPG_HTTP_ALLOWED_ORIGINS

カンマ区切りのCORS許可リスト。未設定 = CORSミドルウェアなし(クロスオリジンヘッダーは送出されない)。

MCPG_HTTP_HSTS_MAX_AGE

31536000

Strict-Transport-Securityのmax-age。0でHSTSヘッダーを無効化。セキュリティヘッダー(CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy)はアプリが既に設定していない限り常に追加される。

MCPG_HTTP_REQUEST_TIMEOUT_SECONDS

0

リクエストごとの実時間上限(期限切れで504)。0 = 無効。長時間のSSE / streamable-httpストリームに依存する場合は設定しないこと — ハードキャップはそれらも切断する。

マルチテナンシー(SET ROLE

変数

デフォルト

説明

MCPG_DEFAULT_ROLE

すべてのクエリに適用される静的PGロール。識別子として検証される。

MCPG_ALLOWED_ROLES

カンマ区切りの許可リスト。設定時、X-MCPG-Roleヘッダー / OIDCロールクレームはこのリストに含まれている必要がある。

読み取りレプリカ

変数

デフォルト

説明

MCPG_REPLICA_URLS

カンマ区切りのレプリカDSN。force_readonlyクエリは健全なレプリカ間でラウンドロビン。失敗時はプライマリにフォールバック。劣化レプリカの再試行ウィンドウは30秒。

複数データベース(読み取り専用セカンダリ)

変数

デフォルト

説明

MCPG_SECONDARY_DATABASE_URLS

この1つのサーバーが提供できる追加の読み取り専用データベースを指定する、カンマ区切りまたは改行区切りのname=dsnエントリ(例:analytics=postgresql://…?sslmode=require,reporting=postgresql://…?sslmode=require)。読み取り対応ツールは、セカンダリを名前で選択するオプションのdatabase引数を受け付ける。省略時はプライマリを使用。セカンダリは読み取り専用 — PostgreSQLで強制(すべてのクエリがREAD ONLYトランザクションで実行される)ため、書き込み / DDL / シェル / マイグレーションは常にプライマリを対象とする。名前は単純な識別子([a-z0-9_]+)で、一意であり、primaryMCPG_DATABASE_URLの予約ID)であってはならない。TLSルールはプライマリDSNと同じ。list_databasesを呼び出すと、設定されたIDとその到達可能性を確認できる。

プール / タイムアウト / TLS

変数

デフォルト

説明

MCPG_POOL_MIN_SIZE

1

プールの最小接続数。

MCPG_POOL_MAX_SIZE

5

プールの最大接続数。MCPG_POOL_MIN_SIZE以上である必要がある。

MCPG_STATEMENT_TIMEOUT_MS

30000

接続チェックアウト時に設定されるセッションごとのstatement_timeout。暴走クエリは自動終了する。

MCPG_LOCK_TIMEOUT_MS

5000

セッションごとのlock_timeout。ロック待ちのハングは自動終了する。

MCPG_ENABLE_ANALYTICAL_QUERIES

true

run_analytical_query(分離されたプールでの長時間実行読み取り)を公開。falseに設定するとツールを撤回。

MCPG_ANALYTICAL_TIMEOUT_MS

120000

run_analytical_queryのデフォルトの呼び出しごとの予算(2分)。

MCPG_ANALYTICAL_MAX_TIMEOUT_MS

600000

run_analytical_queryのハード上限。呼び出しごとのtimeout_msはこれにクランプされる(10分)。MCPG_ANALYTICAL_TIMEOUT_MS以上である必要がある。

MCPG_ANALYTICAL_MAX_CONCURRENCY

2

分離された分析プールのサイズ — 同時実行可能なrun_analytical_query呼び出しの最大数。

MCPG_ALLOW_INSECURE_TLS

false

sslmode=require(またはそれ以上)のないリモートDSNを拒否する起動時TLSチェックをバイパス。ループバックホストは常に免除される。

MCPG_SHUTDOWN_DRAIN_SECONDS

30

SIGTERM時、プールとカーソルを閉じる前に、実行中のツール呼び出しが完了するまで最大この時間待機。

サブプロセスのツール(MCPG_ALLOW_SHELL=trueの場合のみ)

Variable

Default

Description

MCPG_SHELL_TIMEOUT_SEC

60

pg_dump / pg_restore / psql 呼び出しの最大実時間(ウォールクロック)。

MCPG_SHELL_MAX_OUTPUT_BYTES

67108864

サブプロセス呼び出しごとのキャプチャされた標準出力の上限(64 MiB)。

MCPG_SUBPROCESS_BIN_ALLOWLIST

解決された pg_dump / pg_restore / psql が存在しなければならない絶対ディレクトリのカンマ区切りリスト。空の場合は PATH を信頼します。これらのバイナリの PATH シャドーイングを無効化します。

MCPG_SUBPROCESS_CPU_SECONDS

子プロセスごとの RLIMIT_CPU(秒)。POSIX のみ。未設定の場合は継承。

MCPG_SUBPROCESS_MEMORY_MB

子プロセスごとの RLIMIT_AS(MiB)。POSIX のみ。未設定の場合は継承。

LISTEN/NOTIFY(MCPG_ALLOW_LISTEN=true の場合のみ)

Variable

Default

Description

MCPG_LISTEN_QUEUE_MAX

1000

チャネルごとのバッファ。オーバーフロー時は最も古い通知が破棄されます。

監査

Variable

Default

Description

MCPG_AUDIT_PERSIST

false

true の場合、run_write / run_ddl の呼び出しはすべて mcpg_audit.events テーブルに永続化されます(冪等に自動作成されます)。

MCPG_AUDIT_REDACT_KEYS

シークレット名パターンに追加されるカンマ区切りの正規表現断片(デフォルトでは passwordpasswdsecrettokenapi[_-]?keybearerauthorizationdatabase_urldsnconninfo をすでにカバーしています)。

MCPG_AUDIT_INTEGRITY

false

true の場合、永続化された各イベントは前のイベントにチェーンされた HMAC で署名されます。verify_audit_chain ツールはチェーンを辿り、最初の破損を報告します。MCPG_AUDIT_HMAC_KEY が必要です。

MCPG_AUDIT_HMAC_KEY

監査 HMAC チェーンのシークレットキー。MCPG_AUDIT_INTEGRITY=true の場合に必要です。repr やログには決して表示されません。

シークレットバックエンド

デフォルトでは、すべてのシークレットは環境から直接読み取られます。代わりに MCPG_SECRETS_BACKEND=file を設定すると、マウントされたファイルから API キー / ベアラートークン / HMAC キーを読み込みます。ファイル内の名前が優先され、存在しないものは環境変数にフォールバックするため、部分的なファイルでも機能します。

Variable

Default

Description

MCPG_SECRETS_BACKEND

env

env(すべてのシークレットを環境から読み取る)| file(環境の上にシークレットファイルを重ねる)。

MCPG_SECRETS_FILE_PATH

MCPG_SECRETS_BACKEND=file の場合に必要です。フラットな name → value マップへのパス。常に JSON、または PyYAML がインストールされている場合は YAML(.yaml/.yml)です。ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / GOOGLE_API_KEY / MCPG_NL2SQL_API_KEYMCPG_HTTP_AUTH_TOKENMCPG_AUDIT_HMAC_KEY をカバーします。

レート制限

Variable

Default

Description

MCPG_RATE_LIMIT_ENABLED

false

ツールごとのトークンバケット方式のレート制限を有効にします。

MCPG_RATE_LIMIT_MAX_REQUESTS

60

全ツールにわたるウィンドウごとのグローバル上限。

MCPG_RATE_LIMIT_WINDOW_SECONDS

60

グローバルクォータのウィンドウ長。

MCPG_RATE_LIMIT_HEAVY_MAX

5

ヘビーツール(run_writerun_ddldump_database など)の上限。

MCPG_RATE_LIMIT_HEAVY_WINDOW

60

ヘビーツールクォータのウィンドウ長。

キャッシュと機能フラグ

Variable

Default

Description

MCPG_CACHE_ENABLED

true

アダプティブキャッシュレイヤーを有効または無効にします。

MCPG_CACHE_TTL_SECONDS

300

キャッシュのデフォルトの有効期限(秒)。

MCPG_CACHE_MAXSIZE

1024

メモリキャッシュの LRU 容量の最大上限。

MCPG_REDIS_URL

外部のマルチノードキャッシュ用のオプションの Redis バックエンド接続文字列。

MCPG_ENABLE_HEAVY_DIAGNOSTICS

true

計算負荷の高い診断、ダイアグラム、アドバイザーツールを切り替えます。

MCPG_ELICIT_CONFIRM_WRITES

false

true の場合、すべての write/DDL/shell/listen/migrate 層のツール呼び出し(readOnlyHint アノテーションが true でないツール)は、実行前に受け入れられた対話確認(ctx.elicit())を必要とします。ベストエフォートであり、強制境界ではありません: これは、リクエスト context を渡し、かつ initialize 中に elicitation 機能を宣言するクライアントに対してのみ機能します。どちらかを省略したクライアントは、静かにゲートをバイパスし、ツールは通常どおり実行されます。

自然言語 SQL

MCPg は起動時に環境から設定済みのすべてのプロバイダーを自動検出します。ベンダーキーを設定するだけで、それぞれが呼び出し可能になります。 組み込みのプロバイダーは 19 個です。 3 つはファーストパーティ(Anthropic、 OpenAI、Gemini)で、残りの 16 個は OpenAI 互換 API をベンダー設定済みエンドポイントで話します: DeepSeek、Qwen、OpenRouter、Perplexity、xAI (Grok)、Groq、Mistral、Together、Fireworks、DeepInfra、Cerebras、Nebius、 Hugging Face、GitHub Models、SambaNova、Moonshot(Kimi)。組み込みのものはすべてプラグアンドプレイです。ベンダーの標準的な API キー環境変数を設定すると自動検出されます。また、その他の OpenAI 互換ベンダーやローカルモデルサーバー(Ollama、vLLM、LM Studio)も、MCPG_NL2SQL_CUSTOM_PROVIDERS による設定だけでプラグイン可能です。 組み込みリスト全体は nl2sql.py の単一の宣言型レジストリであり、ベンダーの追加や廃止されたデフォルトモデルの更新は 1 行のデータ変更で行えます。

MCPG_NL2SQL_PROVIDER が未設定の場合、MCPg はレジストリ順でデフォルトを自動選択します。anthropic → openai → gemini が最初に来るため、既存のデプロイメントには影響しません。translate_nl_to_sql はオプションの provider="…" 引数を受け取り、呼び出しごとにルーティングできます。get_server_info はどれが設定されているかを報告します。

User: There is "this month" but no "previous three months". Let's have:

あなた: 今月に注文したが、過去3か月間は一度も注文していない顧客を探し、そのメールアドレスと現在の総購入金額(lifetime spend)を表示してください。

The quotation for "never in the previous three months" - "過去3ヶ月間には一度も".

Now, "current lifetime spend" - "現在までの総購入金額(life-time spend)" is fine.

Now, agent label: "エージェント(translate_nl_to_sql を使用)". Then blank line, then GXP9. The exact source has GXP9 not GXP0. So use GXP9.

Now, after that, "### Picture the schema" etc.

Now, let's address "score" in audit. It says "Memory & I/O score 92 (GOOD)". Japanese "スコア 92(良好)" okay.

Now, note "Slow queries 70" - maybe "スロークエリ 70" should be "遅いクエリ 70". Fine.

Now, "MCPg auto-picks in registry order" - "MCPg がレジスト順に自動選択します". Good.

Now, "Unset + any vendor key present → MCPg auto-picks in registry order" -> "Unset (unset) + 任意のベンダーキー存在 + ...". We'll write "未設定かつベンダーキーが存在する場合、MCPg はレジストリ順に自動選択します。"

Now, let's produce.

However, we need to ensure the *** horizontal rules are preserved exactly (three asterisks). We'll include blank lines around.

Now, let's construct the final answer.

But I'd like to think about "Bundle" etc. Maybe "What's in the box" is better as "収録ツール" but we'll use "同梱内容".

Now, let's double-check "Event streams" bullet: "bridging PostgreSQL LISTEN/NOTIFY into the MCP poll model." Translating "bridging" to "橋渡しする" or "ブリッジする". "POST notify" is not code? It's a fixed. Keep.

Now, "Observability" bullet: "Prometheus /metrics endpoint + get_metrics_exposition tool for stdio." We must not translate "Prometheus".

Now, "Server-side cursors" bullet: "for pageable reads over millions of rows" -> "何百万行でもページング読み取りが可能". Good.

Now, let's write.

One more nuance: In the "Diagnose a slow query" block, the agent's response has the code line "CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_at DESC);" We should keep exactly. Also "Run validate_migration on it before applying" - "適用前に validate_migration をそれに対して実行して" maybe.

The "to confirm there's no locking surprise" - "ロックの予期せぬ問題がないことを確認するため" (no locking surprise). We'll translate.

Now, "Catalog introspection" bullet: "schemas, tables..." Actually "and" after functions? Let's copy list.

Let's now finalize.

Potential issue: "generated columns" - "生成列" is common. "複合型" for composite types.

Now, let's write.

We need to avoid wrapping in a code fence. We'll provide only the translated text.

Let's now output.| 変数 | デフォルト | 説明 | | --- | --- | --- | | <VENDOR>_API_KEY | — | ベンダーの慣用的なキーを設定すると、そのプロバイダーが有効になります。標準スラッグ: ANTHROPIC_API_KEYOPENAI_API_KEYDEEPSEEK_API_KEYOPENROUTER_API_KEYPERPLEXITY_API_KEYXAI_API_KEYGROQ_API_KEYMISTRAL_API_KEYTOGETHER_API_KEYFIREWORKS_API_KEYCEREBRAS_API_KEYNEBIUS_API_KEYSAMBANOVA_API_KEYMOONSHOT_API_KEY。 | | *(規則から外れるキー)* | — | <VENDOR>_API_KEY に従わないベンダーがいくつかあります: GeminiGEMINI_API_KEY または GOOGLE_API_KEY; QwenDASHSCOPE_API_KEY または QWEN_API_KEY; Hugging FaceHF_TOKEN; GitHub ModelsGITHUB_TOKEN; DeepInfraDEEPINFRA_TOKEN。 | | MCPG_NL2SQL_PROVIDER | 自動選択 | 組み込みのスラッグ(上記の一覧)またはカスタム名を指定します。ツールが provider= なしで呼び出されたときに使用されるデフォルトプロバイダーを固定します。未設定で、かついずれかのベンダーキーが存在する場合、MCPg はレジストリ順に自動選択します。 | | MCPG_NL2SQL_API_KEY | — | 設定済み MCPG_NL2SQL_PROVIDER に対する明示的なキー。そのプロバイダーに限り、ベンダー標準の環境変数を上書きします。MCPG_NL2SQL_PROVIDER が設定されている必要があります。 | | MCPG_NL2SQL_MODEL | プロバイダーのデフォルト | デフォルトのモデルを上書きします(例: claude-sonnet-4-6gpt-4o-minigrok-3-mini)。デフォルトプロバイダーにのみ適用されます。 | | MCPG_NL2SQL_BASE_URL | — | デフォルトプロバイダーのエンドポイントを上書きします(プライベートゲートウェイ / リージョナルエンドポイント)。 | | MCPG_NL2SQL_CUSTOM_PROVIDERS | — | 自前のプロバイダーを持ち込む — コード変更は不要です。 コンマ区切りまたは改行区切りの name=base_url\|model エントリで、組み込みのものに加えて 追加の OpenAI 互換プロバイダーを宣言します(ローカルの Ollama / vLLM / LM Studio、または任意のニッチなベンダー)。キーは慣例として <NAME>_API_KEY から取得します。それに従わないものには \|KEY_ENV_VAR を追加します。ループバックエンドではキーなしも許可されます。すべての名前は provider= で呼び出し可能になります。 | | MCPG_NL2SQL_MAX_TOKENS | 2048 | 生成トークンの上限(ハードリミット: 16384)。 |


利用例

MCP ツールは、自然言語の指示に応じてエージェント(Claude、Cursor、Continue など)が呼び出します。以下は、実際の往復例をいくつか示したものです。

スキーマの調査

あなた: public スキーマにはどのテーブルがあり、行数で最大のものはどれですか?

エージェント(list_tables + summarize_table × N の使用): 6つのテーブル: customers(1.2M 行)、orders(4.7M)、line_items (18.3M)、products(340)、addresses(1.4M)、audit_log (45.8M — 最大。保持期間なしで蓄積され続けます)。

遅いクエリの診断

あなた: なぜこのクエリは SELECT * FROM orders o JOIN line_items l ON o.id = l.order_id WHERE o.created_at > now() - interval '7 days' 8秒かかるのですか?

エージェント(why_is_this_slow + recommend_indexes の使用): EXPLAIN ANALYZE は、created_at でフィルタリングされる orders(4.7M 行)に対するシーケンシャルスキャンを示しています。orders.created_at にはインデックスがありません。推奨: CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_at DESC); 期待される改善: ~95% の削減(インデックススキャンはフルテーブルの代わりに約 ~33K 行を参照します)。適用前に validate_migration を実行して、ロックに関する予期しない問題がないことを確認してください。

自然言語からSQLへの変換

あなた: 今月に注文したが、過去3ヶ月間には一度も注文していないお客様を探し、そのメールアドレスと現在の累計購入額を表示してください。

エージェント(translate_nl_to_sql の使用):

SELECT c.email, SUM(l.price * l.quantity) AS lifetime_spend
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN line_items l ON l.order_id = o.id
WHERE EXISTS (
  SELECT 1 FROM orders o2 WHERE o2.customer_id = c.id
    AND o2.created_at >= date_trunc('month', now()))
  AND NOT EXISTS (
  SELECT 1 FROM orders o3 WHERE o3.customer_id = c.id
    AND o3.created_at >= date_trunc('month', now()) - interval '3 months'
    AND o3.created_at <  date_trunc('month', now()))
GROUP BY c.email;

スキーマの図解

あなた: public スキーマの ER 図を描いてください。

エージェント(generate_schema_diagram の使用): GitHub / Notion / Obsidian にそのまま貼り付けられる Mermaid ダイアグラムを返します。

データベースの監査

あなた: このデータベースは今どのくらい健全ですか?

エージェント(audit_database の使用): 等級付きレポートを返します: メモリ & I/O スコア 92(良好)、トランザクション & 接続 78(警告: ロールバック率 0.4% 、アプリのログを確認)、並行処理 & ロック 60 (クリティカル: 14 バックエンド待機中)、クリーンさ & ブロート 88(良好)、 スロークエリ 70(警告: トップクエリテンプレートが 5000回実行、平均 90 ms — optimize_query を参照)。

ガード付き書き込みの実行

あなた: 5年以上前の注文をすべて論理削除してください。

エージェント(run_writeMCPG_AUDIT_PERSIST=true で使用): safe-SQL カーネルを使用してステートメントを検証し、トランザクション内で実行し、影響を受けた行数を返し、呼び出し(sql + arguments にシークレットを正規表現でマスク、+ ステータス)を mcpg_audit.events に永続化して、事後レビューできるようにします。

さらに多くのレシピ(マルチテナントルーティング、RLS テスト、自然言語→SQL、ベクトル+フルテキストのハイブリッド検索、Apache AGE Cypher、TimescaleDB、ORM スキーマ、サーバーサイドカーソル)については、docs/cookbook.md を参照してください。


同梱内容

カテゴリ別の簡潔なリストです。完全で最新のツールリファレンスについては docs/tools.md を、ガイド付きウォークスルーについては docs/tour.md を参照してください。

  • カタログイントロスペクション — スキーマ、テーブル、カラム、インデックス、制約、ビュー、関数、トリガー、シーケンス、パーティション、ポリシー、ロール、権限、列挙型、ドメイン、複合型、FDW、パブリケーション、サブスクリプション、拡張機能、生成カラム。

  • クエリインテリジェンスrun_selectrun_select_parallelexplain_queryanalyze_query_planwhy_is_this_slowrecommend_indexesanalyze_workloadcheck_database_healthdetect_n_plus_oneaudit_database

  • 検索fuzzy_search(trigram)、full_text_searchvector_searchhybrid_search(pgvector + FTS via RRF)、geo_search(PostGIS k-NN)。

  • 自然言語 → SQLtranslate_nl_to_sql(アンサンプル、OpenAI、Gemini、xAI、Groq、Mistral、Hugging Face、… を含む22の組み込みプロバイダーに加え、任意のカスタム OpenAI 互換エンドポイントに対応。出力は手書きクエリと同じ safe-SQL カーネルを通過します)。

  • 可視化generate_schema_diagram(ER)、generate_fk_cascade_graphON DELETE CASCADE の影響範囲)、generate_graph_diagram(Apache AGE プロパティグラフ)。

  • 構造差分とマイグレーションcompare_schemasvalidate_migration、段階的なprepare_migration / complete_migration / cancel_migration ワークフロー。

  • Apache AGE グラフ + Cypherlist_graphsdescribe_graphrun_cyphercreate_graphdrop_graphgenerate_graph_diagram

  • 複合+アドバイザーツールsummarize_tablefind_unused_objectsfind_sensitive_columns(PII ヒューリスティック)、lint_naming_conventionstest_rls_for_rolelist_locksfind_blocking_chainsread_pg_stat_io(PG16+)、generate_test_data

  • ライブ運用とメンテナンスlist_active_queriesverify_connection_encryption(ライブリンクの TLS ステータス)、run_maintenance(VACUUM/ANALYZE)、prune_audit_events(監査ログ保持)、cancel_queryterminate_backendrun_writerun_ddlenable_extension

  • データ移行export_query / export_table(CSV/JSON)、dump_database / restore_databaseimport_csv / import_json(COPY FROM STDIN)、copy_table_between_databases

  • サーバーサイドカーソルopen_cursorfetch_cursorclose_cursorlist_cursors。数百万行にわたるページング可能な読み取りに対応します。

  • TimescaleDBlist_hypertableslist_chunkscreate_hypertableadd_compression_policyadd_retention_policy

  • ORM スキーマエクスポーター — Prisma、Drizzle、SQLAlchemy、sqlc、Diesel、jOOQ、Ent、Ecto。

  • イベントストリームsubscribe_channelpoll_notificationsunsubscribe_channellist_notification_subscriptions。PostgreSQL の LISTEN/NOTIFY を MCP ポールモデルにブリッジします。

  • 可観測性 — Prometheus /metrics エンドポイント+ stdio 用 get_metrics_exposition ツール。正規表現ベースの資格情報マスキング付き構造化監査トレイル。


ドキュメント


セキュリティ

  • 脆弱性の報告: SECURITY.md を参照してください。90日間の 協調的開示期間を設けています。報告先は devopam@gmail.com です。

  • 多層防御: 機能ゲート、SafeSQL カーネル、識別子 許可リスト、監査ログの編集、起動時の PG TLS 強制、 レート制限、OIDC JWT 検証、セッションごとのタイムアウト。

  • 出荷済み(✅)および保留中(⬜)の堅牢化項目の最新ロードマップは docs/security-hardening.md を参照してください。

プライバシーポリシー

MCPg はセルフホスト型です。データベースの内容がインフラストラクチャの外に出ることは一切なく、テレメトリやホームコールも一切ありません。唯一の明示された例外は、オプトインの translate_nl_to_sql ツールです。このツールは、あなたの質問とスキーマコンテキスト(行データではなく名前)を、あなたが設定した LLM プロバイダーに送信します。データ収集、利用、保存、第三者との共有、保持期間、連絡先を含む完全なポリシーは、PRIVACY.md に記載されています。


リリースノートと変更履歴

完全なバージョン履歴は CHANGELOG.md、リリースの切り出し方法は docs/release-process.md、ダウンロード可能な成果物は GitHub Releases ページを参照してください。


コントリビューション

プルリクエスト歓迎です。開発ループのセットアップ、テスト規約、PR ごとのレビューチェックリストについては、CONTRIBUTING.md を参照してください。


ライセンス

MIT — LICENSE を参照してください。SQL 安全性カーネル(src/mcpg/sql/)はファーストパーティ製で、MIT ライセンスの crystaldba/postgres-mcp から再作成されたものです。系譜については NOTICE を参照してください。

ラップされた拡張機能 — 知っておくべきライセンス

MCPg のソースコードは MIT ですが、ラップしている PostgreSQL 拡張機能はそれぞれ独自のライセンスを保持しています。ラッパー自体はアームズレングス(SQL レベルの呼び出しであり、MCPg の Python プロセスへの静的・動的リンクはありません)であるため、MCPg プロジェクト自体はそれらの派生物ではありません。MCPg + 特定の拡張機能をベースに構築されたサービスをデプロイする運用者は、その拡張機能のライセンスが課す義務を負うことになります — 拡張機能を直接インストールするのと同じです。以下の表は、ラップされた拡張機能ごとのライセンスを示しており、情報に基づいた選択ができるようにしています。

拡張機能

ライセンス

運用者向けの注意事項

pgvector

PostgreSQL License(BSD スタイル)

寛容型。特別な義務はありません。

pg_partman

PostgreSQL License

寛容型。

pg_cron

PostgreSQL License

寛容型。

pg_turboquant

MIT

寛容型。

pg_buffercache / pg_walinspect / pgstattuple

PostgreSQL contrib

寛容型。

TimescaleDB

Apache 2.0(コミュニティ)+ Timescale License(TSL、ソース利用可能)一部機能向け

混合 — TSL の対象となる機能については Timescale のドキュメントを参照してください。

Apache AGE

Apache 2.0

寛容型。

pg_search (ParadeDB)

AGPL-3.0

ユーザーが pg_search を操作できるネットワークサービスを運営する場合、AGPL のネットワーク条項の対象となります — 通常、pg_search(およびその変更版)のソースコードをそれらのユーザーに提供する義務が生じます。MCPg のラッパーはその義務を MCPg 自体に拡張するものではありません。義務が生じるのは、拡張機能をデプロイしてネットワーク経由で「伝達」したときです。サービス再配布モデルが AGPL のネットワーク条項と互換性がない場合は、別の BM25 実装を選択してください(BM25 プラン に代替案が記載されています)。

この表は出発点にすぎません。特定のデプロイメントに関する拘束力のある回答については、拡張機能のアップストリームの LICENSE ファイルと(法的に重要となる場合は)自身の顧問弁護士に相談してください。

免責事項。 MCPg を本番グレードにするために最善の努力が払われていますが、これは活発に開発が進められているプロジェクトであり、問題が含まれている可能性があります。補償の詳細についてはライセンス条項を参照してください。

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
8dResponse time
4dRelease cycle
19Releases (12mo)
Commit activity
Issues opened vs closed

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol server that enables powerful PostgreSQL database management capabilities including analysis, schema management, data migration, and monitoring through natural language interactions.
    18
    2,467
    198
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI assistants with secure, read-only access to PostgreSQL databases while offering comprehensive tools for schema exploration, query validation, and performance optimization.
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/devopam/MCPg'

If you have feedback or need assistance with the MCP directory API, please join our Discord server