mcpField
P
PostgreSQL MCP Server

PostgreSQL MCP Server

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

PostgreSQL MCP Server について

PostgreSQL MCP Serverは、データベーステーブルの操作、スキーマ確認、SQLクエリ実行を行うMCPサーバーです。YAML設定でテーブル、カラム、CRUD操作へのアクセスを制御します。

主な機能

  1. 01PostgreSQLへの接続
  2. 02テーブルのCRUD操作
  3. 03テーブルとカラムのアクセス制御
  4. 04スキーマ確認
  5. 05カスタムSQLの実行
  6. 06YAMLによる設定

活用シーン

  1. 01設定済みテーブルのレコード管理
  2. 02テーブルスキーマの確認
  3. 03パラメーター付きSQLクエリの実行

MCP 対応

stdioモードで動作し、テーブル一覧、CRUD操作、スキーマ参照、カスタムSQL実行のツールをMCPクライアントに公開します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

PostgreSQL MCP サーバー

PostgreSQL データベーステーブルに対する CRUD 操作を提供する Model Context Protocol(MCP)サーバーです。

概要

この MCP サーバーを使用すると、指定したテーブルに対する作成、読み取り、更新、削除(CRUD)操作を提供する一連のツールを通じて、PostgreSQL データベースを操作できます。サーバーは FastMCP ライブラリを使用し、stdio モードで実行されるため、さまざまな MCP クライアントと互換性があります。

機能

  • PostgreSQL データベースへの接続
  • 指定したテーブルに対する CRUD 操作
  • テーブルおよび列単位のアクセス制御
  • スキーマの検査
  • カスタム SQL クエリの実行
  • YAML ファイルによる設定

インストール

  1. このリポジトリをクローンします。

    git clone https://github.com/yourusername/postgresql-mcp.git
    cd postgresql-mcp
    
  2. 必要な依存関係をインストールします。

    pip install -r requirements.txt
    

設定

サーバーは config.yaml ファイルを使用して設定します。このファイルには次の内容が含まれます。

  1. データベース接続の詳細
  2. 次の内容を含むテーブル設定:
    • アクセス可能なテーブル
    • 操作が許可される列
    • 許可される操作(作成、読み取り、更新、削除)

設定例:

database:
  host: localhost
  port: 5432
  dbname: postgres
  user: postgres
  password: postgres
  
tables:
  - name: users
    allowed_columns:
      - id
      - name
      - email
      - created_at
    allowed_operations:
      - create
      - read
      - update
      - delete
  
  - name: products
    allowed_columns:
      - id
      - name
      - price
      - description
      - category
    allowed_operations:
      - create
      - read
      - update
      - delete

使用方法

MCP サーバーを実行します。

python postgresql_mcp_server.py

サーバーは stdio モードで起動し、MCP クライアントからのコマンドを受け付けます。

利用可能な MCP ツール

list_tables

設定で利用可能なすべてのテーブルを一覧表示します。

response = list_tables()
create_record

指定したテーブルに新しいレコードを作成します。

response = create_record(
    table_name="users",
    data={
        "name": "John Doe",
        "email": "[email protected]"
    }
)
read_records

任意のフィルタリングを適用して、指定したテーブルからレコードを読み取ります。

response = read_records(
    table_name="users",
    filters={"name": "John Doe"},
    limit=10,
    offset=0
)
update_record

指定したテーブルのレコードを更新します。

response = update_record(
    table_name="users",
    record_id=1,
    data={"email": "[email protected]"},
    id_column="id"
)
delete_record

指定したテーブルからレコードを削除します。

response = delete_record(
    table_name="users",
    record_id=1,
    id_column="id"
)
execute_query

カスタム SQL クエリを実行します。

response = execute_query(
    query="SELECT * FROM users WHERE age > %s",
    params=[18]
)
get_table_schema

特定のテーブルのスキーマ情報を取得します。

response = get_table_schema(table_name="users")

レスポンス形式

すべてのツールは、標準形式でレスポンスを返します。

{
  "status": "success",
  "message": "Optional message",
  "records": [...],  // For read operations
  "record": {...},   // For create/update operations
  "count": 10        // For read operations
}

エラーの場合は次の形式です。

{
  "status": "error",
  "message": "Error message"
}

セキュリティに関する考慮事項

  • execute_query ツールでは任意の SQL を実行できるため、セキュリティリスクとなる可能性があります。使用を制限するか、追加の検証を実装することを検討してください。
  • データベースの認証情報は config.yaml ファイルにプレーンテキストで保存されます。本番環境では、環境変数または安全なシークレット管理ソリューションの使用を検討してください。
  • サーバーは設定に基づいてテーブルと列へのアクセスを検証しますが、設定自体の安全性を確保することが重要です。

ライセンス

MIT ライセンス

コメント

MCP は初めてですか?

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

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