pgEdge MCP Server for Postgres について
pgEdge Postgres MCP Server は、MCP 対応クライアントから PostgreSQL に対して SQL クエリを実行できる MCP サーバーです。自然言語から SQL を組み立てる Natural Language Agent も備えています。全ユーザーが信頼できる社内ツールや開発者のワークフロー向けで、公開アプリケーションには想定されていません。
主な機能
- 01デフォルトで読み取り専用トランザクションにおけるクエリ実行
- 02クエリ実行とスキーマ分析のツール
- 03BM25 と MMR を用いたハイブリッド検索
- 04Web UI、Go 製コマンドラインクライアント、HTTP モード
- 05ユーザーと API トークンによる認証、TLS 対応
- 06PostgreSQL 14 以上への対応
活用シーン
- 01Claude Desktop や Cursor からのデータベース照会
- 02自然言語による SQL の作成と実行
- 03チーム内の Web インターフェースでのスキーマ探索
MCP 対応
本プロジェクトは MCP サーバーであり、PostgreSQL のクエリツール、統計リソース、プロンプトを MCP クライアントへ公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/pgedge/postgres-mcp:latestローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/pgedge/postgres-mcp:lateststdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
pgEdge Postgres MCP サーバーと自然言語エージェント
- pgEdge Postgres MCP サーバーについて
- MCP サーバーのインストール
- MCP サーバーの設定
- クライアントアプリケーションの設定と使用
- サーバーログの確認
- 認証とセキュリティ
- リファレンス
- 高度なトピック
- 開発者向け
- コントリビューション
- オンラインヘルプへのアクセス
- トラブルシューティング
- リリースノート
- ライセンス pgEdge Postgres Model Context Protocol(MCP)サーバーを使用すると、MCP 対応クライアントを介して PostgreSQL データベースに対する SQL クエリを実行できます。Natural Language Agent は、自然言語で SQL クエリを作成できるようにする補助機能を提供します。
対応バージョン: PostgreSQL 14 以降。
一般公開アプリケーション向けではありません:この MCP サーバーは、LLM にデータベース全体のスキーマとデータへの読み取りアクセスを提供します。 内部ツール、開発者向けワークフロー、またはすべてのユーザーが信頼できる環境でのみ使用してください。一般公開アプリケーションでは、代わりに pgEdge RAG Server をご検討ください。詳細は、 適切なソリューションの選択 ガイドをご覧ください。
クイックスタート
クイックスタートガイドでは、サポート対象のすべてのクライアントのインストールとセットアップについて説明しています。
| クライアント | トランスポート | 最適な用途 |
|---|---|---|
| CLI(Stdio) | Stdio | ローカルでの単一ユーザー開発 |
| CLI(HTTP) | HTTP | 複数ユーザーまたはリモートアクセス |
| Web UI | HTTP | ブラウザー上のチャットインターフェース |
| Claude Code | Stdio | Anthropic CLI エージェント |
| Claude Desktop | Stdio | Anthropic デスクトップアプリ |
| Cursor | Stdio | AI コードエディター |
| Windsurf | Stdio | Codeium コードエディター |
| VS Code Copilot | Stdio | GitHub Copilot エージェント |
サンプルデータを使ったガイド付きデモについては、 Northwind を使ったクイックスタートデモをご覧ください。
主な機能
- 読み取り専用保護 - すべてのクエリは、デフォルトで読み取り専用トランザクション内で実行されます
- リソース - PostgreSQL の統計情報などにアクセスできます
- ツール - クエリの実行、スキーマ分析、高度なハイブリッド検索(BM25+MMR)、埋め込みの生成、リソースの読み取りなど
- プロンプト - セマンティック検索のセットアップ、データベースの調査、クエリの診断などを行うガイド付きワークフロー
- 本番環境向けチャットクライアント - Anthropic のプロンプトキャッシュ(コストを90%削減)を備えたフル機能の Go クライアント
- HTTP/HTTPS モード - ユーザー認証とトークン認証による直接 API アクセス
- Web インターフェース - 自然言語によるデータベース操作が可能な、AI を活用したチャット機能を備える最新の React ベース UI
- Docker サポート - GitHub Container Registry のビルド済みイメージと Docker Compose によるデプロイ
- セキュア - TLS サポート、ユーザー認証とトークン認証、読み取り専用の強制
- ホットリロード - サーバーを再起動せずに認証ファイルを自動で再読み込み
開発
前提条件
- Go 1.21 以降
- PostgreSQL 14 以降(テスト用)
- golangci-lint v1.x(リンティング用)
リンターのセットアップ
このプロジェクトでは golangci-lint v1.x を使用します。次のコマンドでインストールしてください。
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
注:設定ファイル .golangci.yml は golangci-lint v1.x に対応しています(v2 には対応していません)。
ビルド
git clone https://github.com/pgEdge/pgedge-postgres-mcp.git
cd pgedge-postgres-mcp
make build
テスト
# Run all tests
make test
# Run server tests with a database
export TEST_PGEDGE_POSTGRES_CONNECTION_STRING=\
"postgres://localhost/postgres?sslmode=disable"
go test ./...
# Run with coverage
go test -v -cover ./...
# Run linting
make lint
Web UI テスト
Web UI には包括的なテストスイートがあります。詳細は web/TEST_SUMMARY.mdをご覧ください。
cd web
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage
セキュリティ
- 読み取り専用トランザクションの強制(データベースごとに設定可能)
- 有効期限付きのユーザー認証と API トークン認証
- TLS/HTTPS サポート
- SHA256 によるトークンのハッシュ化
- ファイル権限の強制(0600)
- 入力の検証とサニタイズ
包括的なセキュリティドキュメントについては、セキュリティガイドをご覧ください。
トラブルシューティング
Claude Desktop にツールが表示されない場合
- 設定には絶対パスを使用してください
- Claude Desktop を完全に終了してから再起動してください
- JSON の構文を確認してください
データベース接続エラーが発生する場合
- サーバーを起動する前に、設定ファイル、環境変数、またはコマンドラインフラグでデータベース接続を設定してください
- PostgreSQL が稼働していることを確認してください:
pg_isready - 接続パラメーターが正しいことを確認してください
詳しい解決方法については、トラブルシューティングガイドをご覧ください。
サポート
ソフトウェアに関する問題を報告するには、次のページをご覧ください。 GitHub Issues
詳しくは、次のページをご覧ください。 docs.pgedge.com
このプロジェクトは、PostgreSQL License のライセンスで提供されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。