mcpField
P
PostgreSQL MCP Server (Model Context Protocol)

PostgreSQL MCP Server (Model Context Protocol)

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

PostgreSQL MCP Server (Model Context Protocol) について

PostgreSQL MCP Serverは、AIクライアントからPostgreSQLにアクセスするFastMCPベースのサーバーです。スキーマ確認、データ検索、更新に使える構造化リソースとツールを提供します。

主な機能

  1. 01テーブル一覧とカラム定義の確認
  2. 02条件指定、並べ替え、件数制限付きの検索
  3. 03データの挿入、更新、削除
  4. 04テーブルの作成と削除
  5. 05任意のSQLクエリの実行
  6. 06テーブル、スキーマ、データプレビューのリソース

活用シーン

  1. 01AIクライアントからデータベースのスキーマを確認する
  2. 02自然言語を使ってデータを検索・絞り込む
  3. 03ツールでデータを書き込んだりテーブルを管理したりする

MCP 対応

stdio経由で、互換クライアントにPostgreSQLのリソースとツールを公開します。リソースにはテーブル一覧、スキーマ、最大100行のプレビューが含まれ、ツールは検索やデータ操作に対応します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

PostgreSQL MCP サーバー

FastMCP を利用した Model Context Protocol サーバーです。AI アシスタント(Claude、Cursor など)に PostgreSQL データベースへの完全かつ構造化されたアクセスを提供します。ユーザーが SQL の知識を持っている必要はありません。


概要

このサーバーは、stdio トランスポートを介して PostgreSQL データベースを MCP リソース(読み取り専用ビュー)と MCP ツール(読み書き操作)のセットとして公開します。MCP 互換の AI クライアントであれば接続してスキーマを調べ、自然言語でデータ操作を実行できます。

Claude / Cursor / any MCP client
        │  stdio (MCP protocol)
        ▼
 postgres_mcp_server.py   (FastMCP layer — resources & tools)
        │  async
        ▼
 postgres_manager.py      (asyncpg connection pool)
        │
        ▼
  PostgreSQL Database

機能

カテゴリ機能
スキーマすべてのテーブルの一覧表示、カラム定義の確認
読み取りフィルター、並べ替え、行数制限を指定した選択
書き込み行の挿入、更新、削除
DDLテーブルの作成と削除
生 SQL任意のクエリを実行
安全性全体を通してパラメーター化クエリを使用(SQL インジェクションなし)
ログ記録ツール/リソース呼び出しごとに構造化ログを stdout に出力

MCP リソース

リソースは、AI クライアントがサブスクライブできる読み取り専用の URI アドレス指定可能なデータフィードです。

URI説明
postgres://tablesデータベース内のすべてのテーブルの JSON リスト
postgres://schema/{table_name}テーブルのカラム名、型、制約
postgres://data/{table_name}テーブルの先頭 100 行(安全なプレビュー)

MCP ツール

ツールは、AI がユーザーに代わって呼び出せる操作です。

execute_query

任意の生 SQL 文を実行し、結果を JSON として取得します。

query: str  — the SQL to run
create_table

カスタムのカラム定義で新しいテーブルを作成します。

table_name: str
columns:    [{"name": "id", "type": "SERIAL PRIMARY KEY"}, ...]
drop_table

テーブルを完全に削除します。

table_name: str
insert_data

テーブルに 1 行挿入します。

table_name: str
data:       {"column": value, ...}
update_data

条件に一致する行を更新します。

table_name:       str
data:             {"column": new_value, ...}
condition:        "id = %s"
condition_params: [42]
delete_data

条件に一致する行を削除します。

table_name:       str
condition:        "status = %s"
condition_params: ["inactive"]
select_data

任意のフィルター、並べ替え、ページネーションを指定してテーブルをクエリします。

table_name:       str
columns:          ["id", "name"]          (optional, default: *)
condition:        "age > %s"              (optional)
condition_params: [18]                    (optional)
order_by:         "created_at DESC"       (optional)
limit:            100                     (optional, default: 100)

前提条件

  • Python 3.8+
  • PostgreSQL サーバー(ローカルまたはリモート)
  • uv パッケージマネージャー(推奨)— または pip
  • MCP 互換の AI クライアント(Claude Desktop、Cursor など)

インストール

# 1. Clone the repository
git clone https://github.com/VivekMalipatel/Postgres_MCP_Server.git
cd Postgres_MCP_Server

# 2. Create and activate a virtual environment
python -m venv .mcp
source .mcp/bin/activate        # macOS / Linux
# .mcp\Scripts\activate         # Windows

# 3. Install dependencies
pip install -r requirements.txt

設定

プロジェクトのルートに .env ファイルを作成します。

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=your_database
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password

Claude Desktop への接続

次のブロックを Claude Desktop の MCP 設定ファイルに追加します。
(macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "PostgreSQL MCP": {
      "command": "/absolute/path/to/.mcp/bin/uv",
      "args": [
        "run",
        "--with", "mcp[cli]",
        "--with", "asyncpg",
        "--with", "httpx",
        "--with", "python-dotenv",
        "--with", "psycopg2-binary",
        "mcp",
        "run",
        "/absolute/path/to/postgres_mcp_server.py"
      ],
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432",
        "POSTGRES_USER": "your_username",
        "POSTGRES_PASSWORD": "your_password",
        "POSTGRES_DB": "your_database"
      }
    }
  }
}

/absolute/path/to/ はすべて、使用する環境の実際のパスに置き換えてください。
.env ファイルを使用する場合は、env ブロックを省略できます。


手動での実行(stdio)

python postgres_mcp_server.py

サーバーが起動し、MCP プロトコルメッセージを stdin で待ち受けます。通常の使用では、上記の設定を通じて AI クライアントがサーバーを自動的に起動します。


依存関係

パッケージ用途
mcp[cli]MCP プロトコルと FastMCP フレームワーク
asyncpg高性能な非同期 PostgreSQL ドライバー
psycopg2-binary同期 PostgreSQL ドライバー(フォールバック)
python-dotenv.env ファイルの読み込み
httpx非同期 HTTP クライアント(ツールから利用可能)
uvicornASGI サーバー(将来の HTTP トランスポート向け)
uv高速な Python パッケージランナー

プロジェクト構成

Postgres_MCP_Server/
├── postgres_mcp_server.py   # FastMCP server — resources, tools, lifespan
├── postgres_manager.py      # Async DB manager (connection pool, CRUD)
├── requirements.txt
└── .env                     # (create this — not committed)

ライセンス

MIT — 自由に使用、変更、配布できます。

コメント

MCP は初めてですか?

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

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