mcpField
P
PG_MCP_SERVER

PG_MCP_SERVER

ローカル
github.com/cbc3929データベース081 週間前に更新

PG_MCP_SERVER について

PG_MCP_SERVER は PostgreSQL と PostGIS 向けの汎用 MCP サーバーです。データベース構造を必要とする LLM 向けに、スキーマ情報を事前取得してキャッシュし、Stdio と SSE に対応しています。

主な機能

  1. 01データベーススキーマの事前取得とキャッシュ
  2. 02テーブル、列、制約の提供
  3. 03外部キー、インデックス、空間情報の取得
  4. 04PostgreSQL と PostGIS に対応
  5. 05Stdio と SSE のトランスポート

活用シーン

  1. 01LLM にデータベース構造のコンテキストを提供
  2. 02テーブル間の関係やインデックスを確認
  3. 03PostGIS のジオメトリを含むデータベースを扱う

MCP 対応

初期化時に MCP リソースを通じてテーブル名、列、制約、外部キー、インデックス、ジオメトリ情報などを提供し、ツールの説明と入力スキーマでも構造情報を伝えます。Stdio と SSE に対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pg_mcp_server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

PG_MCP_SERVER

PostgreSQL + PostGIS サポートのカスタム実装

概要

中文文档

汎用の PostgreSQL MCP サーバーです。MCP 部分は go-mcp を使用して実装されており、Stdio と SSE のトランスポートをサポートしています。

PostGIS と PgVector の説明は、別のオープンソースプロジェクト https://github.com/stuzero/pg-mcp-server 🙏🙏🙏 から引用しています。 コンテキストを提供するこの方法は新鮮です。

⚠️ SQL インジェクションを防ぐため、データベースにはロールを定義する必要があります。機密データの漏洩を防ぐため、public スキーマに SELECT 権限を付与してください。 ⚠️ データを分離するため、新しいロールには temp スキーマのすべての権限を付与してください。

特徴

ローカルで LLM をデプロイする場合、コンテキストを効率的に管理する必要があります。呼び出しのたびにデータベーススキーマを読み込むと、時間と大量のトークンコンテキストを消費します。このプロジェクトでは、前処理のアプローチを採用しています。データベースからテーブル構造を取得する機能を標準で備えており、LLM に説明情報を提供します。

  • ツールの説明と入力スキーマを利用して、スキーマ情報を暗黙的または明示的に伝えます。
  • 初期化時に MCP リソースを活用して、テーブル名、カラム、制約、外部キー、インデックス、ジオメトリ型、EPSG コードを読み取り、大規模言語モデルの基礎的な理解を作成します。

インストール

main.go の場合:

// Here you can set the connection string for database interaction
schemaLoadConnID, err := dbService.RegisterConnection(tempCtx, "postgres://mcp_user:[email protected]:5432/postgres")

形式は postgres://user:pass@host:port/db です。
または、.env の SCHEMA_LOAD_DB_URL 変数のコメントを解除して設定することでも構成できます。 ここで、RegisterConnection はサーバーに初期接続文字列を渡し、データベースのテーブル情報をキャッシュします。
🏁 専用のサーバーロールを作成することを推奨します。SQL は次のとおりです。

-- Create a new role and set a password
CREATE ROLE mcp_user WITH LOGIN PASSWORD 'mcp123456';

-- Set basic permissions for mcp_user
GRANT CONNECT ON DATABASE postgres TO mcp_user;
GRANT USAGE ON SCHEMA public TO mcp_user;

-- Grant SELECT permission on all existing tables in the public schema
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_user;

-- Automatically grant SELECT on future tables in public schema to mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
   GRANT SELECT ON TABLES TO mcp_user;

-- Create a temp schema
CREATE SCHEMA temp;

-- Grant all privileges on the temp schema to mcp_user
GRANT USAGE, CREATE ON SCHEMA temp TO mcp_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA temp TO mcp_user;

-- Grant all privileges on future tables in temp schema to mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA temp
   GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO mcp_user;
Use code with caution.

実行

  • 🐋 Docker で実行
git clone https://github.com/cbc3929/pg_mcp_server.git
cd pg_mcp_server
docker build -t pg-mcp-server:latest .
docker run -d -p 8181:8181 --name my-mcp-server pg-mcp-server:latest
  • 🀄 直接実行
  1. プロジェクトをクローンする
git clone https://github.com/cbc3929/pg_mcp_server.git
cd pg_mcp_server
  1. 依存関係をインストールする
go mod tidy

または

go mod download
  1. 直接実行する
    必要な環境変数が設定されているか、.env ファイルが存在することを確認してください。
go run ./cmd/server/main.go
  1. ビルド(任意)
go build -o pg_mcp_server ./cmd/server/main.go
./pg_mcp_server

拡張機能のサポート

PostGIS ✅
PgVector ✅
PgRouting ⭕

TODO / 未完了

  • temp スキーマ内のテーブル管理:テーブルをクリーンアップ/再利用する仕組みを実装する必要があります。
  • 単体テスト。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。