mcpField
A
A Template MCP Server

A Template MCP Server

ローカル
github.com/Alexander-Nestor-Bergmann開発ツール079 週間前に更新

A Template MCP Server について

A Template MCP Serverは、PostgreSQLを利用したMCPサーバー構築の学習用サンプルです。ユーザー情報の簡単な操作を通じてツール定義とリクエスト処理を示し、本番用途を想定していません。

主な機能

  1. 01カスタムMCPツールの公開
  2. 02PostgreSQLへの接続
  3. 03ユーザーの追加と一覧表示
  4. 04メールアドレスによるユーザー検索
  5. 05メールアドレスによるユーザー削除
  6. 06構造化された結果とエラーの返却

活用シーン

  1. 01MCPサーバー実装の学習
  2. 02データベース連携ツールの試作
  3. 03クライアントからデータベースへのリクエストの実演

MCP 対応

ユーザー管理のサンプルツールをMCPクライアントに公開します。クライアントのリクエストをPostgreSQL操作に変換し、結果またはエラーを返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"agents-mcp-demo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

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

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

詳細

MCP サーバーのテンプレート

このリポジトリは、MCP(Model Context Protocol)サーバーの実装方法を示すテンプレートです。MCP は、AI エージェントや Claude などのサービスをツールやデータソースに接続するために設計されたオープン標準です。このリポジトリの主な目的は、基本的な MCP サーバーの構築、設定、実行方法を説明することです。 ツールは簡略化されたサンプルであり、本番環境での使用を目的としていません。

このサンプルサーバーは、ユーザーデータを管理するためにシンプルな PostgreSQL データベースをバックエンドとして使用し、MCP が AI エージェントと外部リソースの橋渡しをする方法を示しています。

概要

このサーバーは、MCP クライアント(例:AI エージェント)と外部データソース(この場合は users テーブルを含むサンプル PostgreSQL データベース)をつなぐ安全なゲートウェイとして機能します。次の方法を示します。

  • MCP 標準を通じてカスタムツールを定義し、公開する。
  • MCP クライアントからのリクエストを処理する。
  • それらのリクエストをバックエンドリソースに対する操作(例:データベースクエリ)に変換する。
  • 構造化された結果やエラーをクライアントに返す。

この例で使用するデモ用の users テーブルは、次の構造です。

  • id(整数、主キー)
  • name(テキスト)
  • email(テキスト、一意)

サーバーが公開するツールの例

ツールの定義と公開方法を示すため、このサーバーではユーザーデータベースを操作する次のサンプル関数を実装しています。

  • add_user:データベースに新しいユーザーを追加します。
    • パラメーター:name(文字列)、email(文字列)
    • 戻り値:確認メッセージ(文字列)またはエラー。
  • get_all_users:データベースからすべてのユーザーのリストを取得します。
    • パラメーター:なし
    • 戻り値:ユーザーオブジェクトのリスト(各オブジェクトは id、name、email を持つ辞書)またはエラー。
  • find_user_by_email:メールアドレスで特定のユーザーを検索します。
    • パラメーター:email(文字列)
    • 戻り値:単一のユーザーオブジェクト(辞書)または、見つからない場合はエラー。
  • delete_user_by_email:メールアドレスを指定して、データベースからユーザーを削除します。
    • パラメーター:email(文字列)
    • 戻り値:確認メッセージ(文字列)またはエラー。

これらのツールは、MCP サーバーが利用可能にする操作の具体例です。

前提条件

  • Python 3.10+
  • PostgreSQL データベースへのアクセス。サーバーには接続情報が必要です。
  • Docker(サーバーを手軽に実行するため推奨)。
  • uv(ローカル開発での依存関係管理用)。

設定

データベース接続とサーバー設定には環境変数を使用します。.env.example ファイルを .env にコピーし、値を更新してください。

cp .env.example .env
# Edit .env with your database details and desired server settings

主な変数:

変数説明例必須デフォルト
DB_URLPostgreSQL の完全な接続 URL。postgresql+asyncpg://user:pass@host:5432/dbnameはい
DB_HOSTMCP サーバーがリッスンするホストアドレス。0.0.0.0いいえ0.0.0.0
DB_PORTMCP サーバーがリッスンするポート。8051いいえ8051
MCP_SIGNING_KEYクライアントとサーバー間のリクエスト署名に使用する任意のシークレットキー。your_very_secret_keyいいえ

注: DB_URL には、postgresql+asyncpg:// のような asyncpg 対応のドライバープレフィックスを指定してください。

使用方法

Docker の使用(推奨)
  1. イメージをビルドする: (Docker がインストールされ、実行中であることを確認してください)

    # プロジェクトのルートディレクトリ(agents-mcp-demo)に移動します
    docker build -t sql-mcp-demo-server --build-arg PORT=${DB_PORT:-8051} .
    
  2. コンテナーを実行する:

    docker run --rm -d --env-file .env -p ${DB_PORT:-8051}:${DB_PORT:-8051} --name sql-mcp-server sql-mcp-demo-server
    
ローカル開発
  1. 依存関係をインストールする:uv が必要です。プロジェクトのルートディレクトリに移動してください。
    # 仮想環境を作成します(推奨)
    python -m venv .venv
    source .venv/bin/activate # または Windows では .\.venv\Scripts\activate
    # uv を使用してインストールします
    uv pip install -e .[dev]
    
  2. 環境変数を設定する:必要な DB_URL がシェル環境に設定されているか、ルートディレクトリの .env ファイルに記載されていることを確認してください(dotenv を使用します)。
  3. サーバーを起動する:
    uv run python sqlmcp/server.py
    
    (サーバーは環境変数のホスト/ポート、またはデフォルト値を使用します)
MCP クライアントとの接続

実行中のサーバーに接続するよう、MCP クライアントを設定してください。接続の詳細は、サーバーの実行方法によって異なります。

SSE 設定例(Docker/Compose で実行する場合):

{
  "mcpServers": {
    "sqlDemoServer": { // Choose a name for this server connection
      "transport": "sse",
      "url": "http://localhost:8051/sse", // Adjust port if changed from default
    }
  }
}

Stdio 設定例(ローカル開発の場合):

これにより、クライアントがサーバープロセスを直接管理できます。

{
  "mcpServers": {
    "sqlDemoServerLocal": { // Choose a name
      "command": "python", // Or path to python in your venv e.g., ".venv/bin/python"
      "args": ["sqlmcp/server.py"], // Path relative to workspace root
      "env": {
        "TRANSPORT": "stdio", // Crucial: Tells server to use stdio
        "DB_URL": "postgresql+asyncpg://user:pass@host:5432/dbname", // MUST provide DB URL
      },
      "workingDirectory": "." // Ensure paths are resolved correctly
    }
  }
}

(ご利用の環境に合わせて、パス、URL、ポート、接続の詳細を調整してください)

開発プラクティス

  • リンティング/フォーマット:Ruff を使用します(pyproject.toml で設定済み)。
    uv run ruff check .
    uv run ruff format .
    
  • テスト:Pytest を使用します。(テストはまだ実装されていません)
    # プレースホルダーコマンドです。tests/ ディレクトリにテストを追加してください
    # uv run pytest
    
    • テストは sqlmcp の構造に合わせて、tests/ ディレクトリの下に追加してください。標準的な Pytest の規約に従ってください。

コントリビューション

これは主にサンプルリポジトリです。MCP サーバー開発の明確さや正確性を高めるもの、またはベストプラクティスを示すものは、プルリクエストで歓迎します。提出前に、コードがフォーマットされ、リンティングされていることを確認してください。

ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルを参照するか、https://opensource.org/licenses/MIT をご覧ください。

コメント

MCP は初めてですか?

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

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