PostgreSQL MCP Server について
PostgreSQL MCP Server は、標準化された MCP インターフェースを通じて PostgreSQL の探索とクエリを行うためのサーバーです。任意クエリは SELECT に限定され、テーブル、スキーマ、絞り込み、統計のツールも備えています。
主な機能
- 01任意の SELECT クエリを実行
- 02データベースのテーブル一覧
- 03テーブルスキーマの確認
- 04等価条件によるレコードの絞り込み
- 05データベース統計の表示
活用シーン
- 01PostgreSQL データベース内のテーブルを確認
- 02テーブルのスキーマを調査
- 03SELECT クエリでデータを取得
- 04データベース容量とテーブル統計を確認
MCP 対応
PostgreSQL の探索・クエリ機能を、テーブル、スキーマ、絞り込み、統計などの MCP ツールとして公開します。PostgreSQL 接続文字列を使用して接続し、stdio に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PostgreSQL MCP サーバー
PostgreSQL データベースの探索とクエリ実行を行うための、Model Context Protocol(MCP)サーバー実装です。
目次
概要
このプロジェクトは、PostgreSQL データベースに接続し、さまざまなデータの検出機能やクエリ機能を MCP ツールとして公開する Model Context Protocol(MCP)サーバーを提供します。これらのツールを使うと、標準化されたインターフェースを通じて、データベースの構造を調べたり、データをクエリしたり、データベースの統計情報を取得したりできます。
機能
- 標準的な接続文字列を使って、任意の PostgreSQL データベースに接続
- カスタムの SELECT クエリを実行し、構造化された形式で結果を返す
- 接続先データベースのすべてのテーブルを一覧表示
- 任意のテーブルの詳細なスキーマ情報を取得
- 単純な等価条件でデータベースのレコードを絞り込み
- データベースのサイズ、テーブル数、最大サイズのテーブルなどの統計情報を取得
要件
- Python 3.7+
- 必要な Python パッケージ(
requirements.txtに記載):- mcp
- pg8000
- sqlalchemy
インストール
- このリポジトリをクローンするか、ソースコードをダウンロードします
- 仮想環境を作成します(推奨)
- 必要なパッケージをインストールします:
pip install -r requirements.txt
使い方
基本的な使い方
PostgreSQL の接続文字列を指定して、サーバーを起動します:
python server.py postgresql://username:password@hostname:port/database
Claude Desktop での使用
Claude Desktop と連携するには、次の設定を Claude Desktop の設定ファイルに追加します:
{
"mcpServers": {
"postgres": {
"command": "python",
"args": [
"/ABOSLUTE/PATH/TO/postgres-mcp-server/server.py",
"postgresql://user:password@host:port/database"
]
}
}
}
上記の設定ファイルを追加または変更した後は、Claude Desktop を強制終了してから再起動してください。
設定ファイルの場所
Claude Desktop の設定ファイルは通常、次の場所にあります:
- macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
利用可能なツール
サーバーは次の MCP ツールを提供します:

execute_query
カスタムの SELECT SQL クエリを実行し、結果を返します。
list_tables
現在の PostgreSQL データベースにあるすべてのテーブルを一覧表示します。
get_table_schema
指定したテーブルのスキーマ定義を取得します。
filter_instances
指定した条件に基づいてデータベースのレコードを絞り込みます。
get_database_stats
PostgreSQL データベースの一般的な統計情報とメタデータを取得します。
セキュリティに関する考慮事項
- このサーバーは、データベースの変更を防ぐため、SELECT クエリのみを許可します
- 接続認証情報はコマンドライン経由で渡され、保存されません
- 本番環境では、環境変数または安全な設定方法の使用を検討してください
Claude での対話例
Claude Desktop に接続したら、次のような質問ができます:
- 「データベースにはどのテーブルがありますか?」
- 「customers テーブルのスキーマを表示してください」
- 「orders テーブルにはレコードがいくつありますか?」
- 「データベースの合計サイズはいくつですか?」

Claude は PostgreSQL データベースにクエリを実行し、質問に答えるために適切な MCP ツールを使用します。
トラブルシューティング
-
接続に失敗する場合は、PostgreSQL の接続文字列が正しいことを確認してください。
-
PostgreSQL サーバーがクライアントマシンからの接続を許可していることを確認してください。
-
サーバーが見つからない場合:設定ファイル内のパスが正しく、絶対パスであることを確認してください。
where pythonを実行して、コマンドに指定する絶対パスを確認してください。たとえば、
"command": "python"は"command": "/Users/username/miniconda3/bin/python"のように記述してください。 -
権限の問題:Claude Desktop アプリにスクリプトを実行する権限があることを確認してください。
-
サーバーがクラッシュする場合:サーバーログにエラーがないか確認し、必要な依存関係がすべてインストールされていることを確認してください。
お問い合わせ
このリポジトリでお気軽に Issue を作成してください。
SSE および Streamable-HTTP の postgres-mcp-server は開発中です……
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。