MCP Postgres Query Server について
MCP Postgres Query Serverは、Claude DesktopなどのMCPクライアントからPostgreSQLを読み取り専用で照会するサーバーです。SELECT文のみを許可し、タイムアウト保護とJSON形式の結果を備えています。
主な機能
- 01SELECT文のみ実行
- 02SQLクエリの検証
- 03クエリのタイムアウト保護
- 04JSON形式での結果返却
活用シーン
- 01PostgreSQLのレコード確認
- 02MCPクライアント経由の読み取り専用クエリ
MCP 対応
MCPサーバーとしてquery-postgresツールを公開し、設定済みのPostgreSQLデータベースに読み取り専用SQLを実行してJSON形式で結果を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Postgres Query サーバー
PostgreSQL データベースに読み取り専用でクエリを実行するための、Model Context Protocol(MCP)サーバーの実装です。Claude Desktop やその他の MCP クライアントでの使用を想定しています。
概要
このプロジェクトでは、次の機能を提供する Model Context Protocol(MCP)サーバーを実装しています。
- PostgreSQL データベースへの安全な読み取り専用インターフェース
- MCP プロトコルを介した Claude Desktop との連携
- SELECT クエリのみが実行されることを保証する SQL クエリの検証
- クエリのタイムアウト保護(10 秒)
前提条件
- Node.js(v14 以降)
- npm(Node.js に付属)
- PostgreSQL データベース(接続情報はコマンドラインで指定)
インストール
# Clone the repository
git clone https://github.com/RathodDarshil/mcp-postgres-query-server.git
cd mcp-postgres-query-server
# Install dependencies
npm install
# Build the project
npm run build
Claude Desktop への接続
Claude Desktop を設定して、MCP サーバーを自動的に起動し、接続できます。
-
Claude Desktop の設定ファイルにアクセスします。
- Claude Desktop を開きます
- Settings > Developer > Edit Config に移動します
- 既定のテキストエディターで設定ファイルが開きます
-
claude_desktop_config.jsonのmcpServersセクションに postgres-query-server を追加します。
{
"mcpServers": {
"postgres-query": {
"command": "node",
"args": [
"/path/to/your/mcp-postgres-query-server/dist/index.js",
"postgresql://username:password@hostname:port/database"
]
}
}
}
/path/to/your/をプロジェクトディレクトリの実際のパスに置き換えます。- PostgreSQL の接続文字列を、実際のデータベース認証情報に置き換えます。
- ファイルを保存し、Claude Desktop を再起動します。MCP サーバーが Settings の MCP サーバー選択ドロップダウンに表示されます。
設定例
postgres-query を含む設定ファイルの完全な例を以下に示します。
{
"mcpServers": {
"postgres-query": {
"command": "node",
"args": [
"/Users/darshilrathod/mcp-servers/mcp-postgres-query-server/dist/index.js",
"postgresql://user:password@localhost:5432/mydatabase"
]
}
}
}
設定の更新
Claude Desktop の設定を更新するには、次の手順を実行します。
- Claude Desktop を開きます
- Settings > Developer > Edit Config に移動します
- 設定ファイルを編集します
- ファイルを保存します
- 変更を反映するために Claude Desktop を再起動します
- MCP サーバーのコードを更新した場合は、再起動する前に
npm run buildでビルドし直してください
機能
- 読み取り専用のデータベースアクセス:セキュリティのため、SELECT クエリのみ実行できます
- クエリの検証:有害な可能性がある SQL 操作を防止します
- タイムアウト保護:10 秒を超えて実行されるクエリを自動的に終了します
- MCP プロトコルのサポート:Model Context Protocol を完全に実装しています
- JSON レスポンス形式:クエリ結果を構造化された JSON 形式で返します
API
ツール
query-postgres
設定済みの PostgreSQL データベースに対して、読み取り専用の SQL クエリを実行します。
パラメーター:
query(文字列):実行する SQL SELECT クエリ
レスポンス:
- 以下を含む JSON オブジェクト:
rows:結果セットの行rowCount:返された行数fields:列のメタデータ
例:
query-postgres: SELECT * FROM users LIMIT 5
開発
メインのサーバー実装は src/index.ts にあります。主なコンポーネントは次のとおりです。
- PostgreSQL 接続プールのセットアップ
- クエリ検証ロジック
- MCP サーバーの設定
- ツールとリソースの定義
サーバーの動作を変更するには、次の操作ができます。
isReadOnlyQuery()のクエリ検証ロジックを編集する- MCP サーバーにツールやリソースを追加する
- クエリのタイムアウト時間を変更する(現在は 10 秒)
セキュリティに関する考慮事項
- サーバーは、すべてのクエリを検証して読み取り専用であることを確認します
- データベースへの接続には SSL を使用します
- クエリのタイムアウトにより、リソースの枯渇を防ぎます
- 書き込み操作は許可されません
- データベース認証情報はファイルに保存せず、コマンドライン引数で直接渡します
ライセンス
ISC
貢献
皆さまからの貢献を歓迎します。Pull Request をお気軽にお送りください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。