mcpField
M
MCP PostgreSQL Demo

MCP PostgreSQL Demo

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

MCP PostgreSQL Demo について

MCP PostgreSQL Demoは、PostgreSQLデータベースを探索・検索するLLM向けのFastMCPサーバーです。スキーマやテーブルの詳細をリソースとして公開し、SELECTクエリを実行して結果をYAML形式で返します。

主な機能

  1. 01データベーススキーマのメタデータ探索
  2. 02テーブル構造の確認
  3. 03SELECT限定のクエリ実行
  4. 04YAML形式での結果出力
  5. 05スキーマ・テーブル・クエリ用プロンプト

活用シーン

  1. 01LLMによるスキーマやテーブル構造の確認
  2. 02PostgreSQLテーブル内のデータ検索
  3. 03リソース経由でのスキーマやテーブル詳細の参照

MCP 対応

スキーマとテーブル詳細のリソース、SELECT限定のクエリツール、スキーマ・テーブルの説明やデータ取得用プロンプトをMCPクライアントに公開します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP PostgreSQL Demo

LLM が PostgreSQL データベースに接続して操作できるようにする FastMCP サーバーです。このプロジェクトでは、Model Context Protocol(MCP)を使用して、言語モデルがデータベースのスキーマやテーブルをクエリし、調査できるようにする方法を紹介します。

機能

  • スキーマの調査:データベーススキーマのメタデータを取得します
  • テーブルの確認:テーブル構造に関する詳細情報を取得します
  • データベースのクエリ:データベースに対して SQL クエリを実行します
  • YAML 形式:LLM が簡単に利用できるよう、結果は YAML 形式で返されます

リソース

サーバーは以下の MCP リソースを公開します。

  • database://{schema} - スキーマ内のすべてのテーブルに関する情報を取得します
  • database://{schema}/tables/{table} - 特定のテーブルに関する詳細情報を取得します

ツール

  • query_database - データベースに対して SQL クエリを実行します(SELECT クエリのみ)

プロンプト

サーバーには、以下の定義済みプロンプトが含まれています。

  • prompt_schema_description - データベーススキーマの説明を求めます
  • prompt_table_description - 特定のテーブルの説明を求めます
  • prompt_query_database - 特定のテーブルのデータを求めます

前提条件

  • Python 3.12 以降
  • PostgreSQL データベース
  • UV パッケージマネージャー(推奨)

インストール

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

    git clone <repository-url>
    cd mcp-demo
    
  2. 仮想環境を作成します。

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. UV をインストールします(まだインストールされていない場合)。

    pip install uv
    
  4. UV を使用して依存関係をインストールします。

    uv sync
    
  5. 環境変数を設定します。

    • .env.example を .env にコピーします
    • PostgreSQL の設定に合わせて値を更新します

設定

アプリケーションは環境変数を使用して設定します。

変数説明デフォルト
APP_NAMEアプリケーション名mcp-demo
DB_HOSTPostgreSQL ホストlocalhost
DB_PORTPostgreSQL ポート5432
DB_USERPostgreSQL ユーザー名postgres
DB_PASSWORDPostgreSQL パスワードpostgres
DB_NAMEPostgreSQL データベース名postgres

使用方法

  1. まず、ファイル末尾にある以下の行のコメントを削除して、src/main.py の run 関数のコメントを解除します。

    # if __name__ == "__main__":
    #     print("Starting FastMCP server...")
    #     mcp.run()
    
  2. FastMCP サーバーを起動します。

    python -m src.main
    
  3. サーバーに LLM が接続し、PostgreSQL データベースにクエリできるようになります。サーバーの実行中は、クライアントアプリケーションに MCP を読み込んで操作できます。

クライアントの設定

この MCP をクライアントアプリケーションで使用するには、クライアントの MCP 設定ファイル(例:.cursor/mcp.json)に以下の設定を追加します。

{
  "mcpServers": {
    "postgres-mcp-server": {
      "command": "/path/to/your/venv/bin/mcp",
      "args": ["run", "/path/to/your/postgres-mcp/src/main.py"],
      "env": {
        "APP_NAME": "mcp-demo",
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_USER": "postgres",
        "DB_PASSWORD": "postgres",
        "DB_NAME": "postgres"
      }
    }
  }
}

パスを仮想環境とプロジェクトディレクトリの実際のパスに置き換え、環境変数を PostgreSQL の設定に合わせて更新してください。

開発

UV を使用して開発用の依存関係をインストールします。

uv pip install -e ".[dev]"

含まれる開発ツール:

  • ノートブック用の JupyterLab
  • 型チェック用の Pyright
  • リンティング用の Ruff

Docker

Docker でアプリケーションを実行するには、以下の手順に従います。

  1. Docker イメージをビルドします。

    docker build -t mcp-demo .
    
  2. コンテナを実行します。

    docker run --env-file .env.docker -p 8000:8000 mcp-demo
    

使用例

スキーマ情報の取得
from mcp.client import get_client

client = get_client("http://localhost:8000")
schema_info = client.get_resource("database://public")
print(schema_info)
テーブルの詳細情報の取得
table_info = client.get_resource("database://public/tables/users")
print(table_info)
クエリの実行
result = client.invoke_tool("query_database", {"query": "SELECT * FROM users LIMIT 10"})
print(result)

ライセンス

[ライセンス情報をここに追加してください]

貢献者

コメント

MCP は初めてですか?

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

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