mcpField
A
anirbanbasu-pymcp

anirbanbasu-pymcp

リモート
github.com/anirbanbasu開発ツール83 週間前に更新
リポジトリ

anirbanbasu-pymcp について

PyMCPは、MCPサーバーを開発する人向けのFastMCPベースのPythonテンプレートです。サンプルのツール、リソース、プロンプトを備え、トランスポートを設定できます。

主な機能

  1. 01Python MCPサーバーテンプレート
  2. 02挨拶とパスワード生成
  3. 03ウェブ検索と順列計算
  4. 04Pythonコードの実行
  5. 05ロゴと剰余のリソース
  6. 06設定可能なサーバートランスポート

活用シーン

  1. 01FastMCPサーバープロジェクトの開始
  2. 02MCPクライアントへのウェブ検索提供
  3. 03MCP経由でのPythonコード実行

MCP 対応

MCPクライアントにツール、リソース、プロンプトを公開します。stdio、streamable HTTP、SSEの各トランスポートに対応します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://server.smithery.ai/@anirbanbasu/pymcp/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://server.smithery.ai/@anirbanbasu/pymcp/mcp認証が必要

ツール

詳細

Python 3.12+ pytest PyPI GitHub commits since latest release CodeQL Advanced OpenSSF Scorecard

pymcp のロゴ

PyMCP は、主に Python で FastMCP を使った MCP サーバー開発のテンプレートリポジトリとして使用することを目的としており、TypeScript の公式 everything MCP サーバーにやや着想を得ています。

コンポーネント

この MCP サーバーでは、以下のコンポーネントを利用できます。

ツール

  1. greet
  • 定番の Hello World メッセージで呼び出し元に挨拶します。
  • 入力
    • name: string(省略可能):挨拶する相手の名前です。デフォルト値はありません。
  • 出力
    • UTC のタイムスタンプ付き挨拶を含む TextContent。
  1. generate_password
  • 指定した長さのランダムなパスワードを生成します。特殊文字を含めるかどうかを指定でき、小文字を 1 文字以上、大文字を 1 文字以上、数字を 2 文字以上含む複雑さの要件を満たします。特殊文字を含める場合は、そのような文字も 1 文字以上含まれます。
  • 入力
    • length: integer:生成するパスワードの長さです。8 以上 64 以下の整数を指定してください。
    • use_special_chars: boolean(省略可能):パスワードに特殊文字を含めるかどうかを示すフラグです。デフォルト値は False です。
  • 出力
    • 生成されたパスワードを含む TextContent。
  1. text_web_search
  • Dux Distributed Global Search(DDGS)を使用して、テキストクエリでウェブを検索します。
  • 入力
    • query: string:結果を取得するための検索クエリです。空でない文字列を指定してください。
    • region: string(省略可能):2 文字の国コード、ハイフン、2 文字の言語コードの順に指定します。例:uk-en または us-en。デフォルト値は uk-en です。
    • max_results: integer(省略可能):取得する結果の最大数です。デフォルト値は 10 です。
    • pages: integer(省略可能):結果を分散させるページ数です。デフォルト値は 1 です。
  • 環境変数
    • DDGS_PROXY: string(省略可能):ウェブ検索リクエストの送信に使用するプロキシサーバーです。
  • 出力
    • 検索結果を含む辞書のリストを含む TextContent。
  1. permutations
  • 重複なし、順序ありで、$n$ 個の項目から $k$ 個を選ぶ方法の数を計算します。$k$ が指定されていない場合、デフォルトで $n$ になります。
  • 入力
    • n: integer:選択元となる項目の数です。0 以外の正の整数を指定してください。
    • k: integer(省略可能):選択する項目の数です。デフォルト値は n の値です。
  • 出力
    • $n$ 個の項目から $k$ 個を選ぶ方法の数、つまり ${}^{n}P_{k}$ を含む TextContent。
  1. run_python_code
  • Pydantic Montyを使用して、安全で高速なインタープリターで任意の Python コードを実行します。Pydantic Monty は実験段階であり、2026 年 2 月 8 日時点で Python 言語のサポートは一部に限られている点に注意してください。
  • 入力
    • code: string:実行する Python コードです。
    • inputs: dict[str, Any](省略可能):Python コードへの入力値の辞書です。デフォルト値は None です。
    • script_name: str(省略可能):トレースバックやエラーメッセージで使用するスクリプト名です。デフォルト値は main.py です。
    • check_types: bool(省略可能):型をチェックするかどうかを示すフラグです。デフォルト値は True です。
    • type_definitions: str(省略可能):型チェックに使用する型定義です。デフォルト値は None です。
  • 出力
    • Python コードの出力がある場合は、その出力を含む TextContent。

メモ

pirate_summary(LLM クライアントのサンプリング)と vonmises_random(クライアントのエリシテーション)のサンプルツールは削除されました。どちらもサーバー起点のリクエスト(ctx.sample() と ctx.elicit())に依存していましたが、SEP-2577 により、サーバーがクライアントを呼び出すためのバックチャネルを持たない、リクエストごとのステートレスなエンベロープ方式が、最新の MCP プロトコル(2026-07-28)で採用されました。FastMCP は現在、両方の API を非推奨として扱っています。引き続き動作しますが、古いハンドシェイク時代の(セッションベースの)プロトコルでのみ動作します。これらのツールは、非推奨となったプロトコル時代でも動作し続けるようにするのではなく、削除されました。

これは、引き続き提供されるツール、リソース、プロンプトには影響しません。基盤となる MCP SDK は接続ごとにプロトコルバージョンをネゴシエートし、コードを変更することなく、2026-07-28 以降とハンドシェイク時代のクライアントの両方に自動的に対応します。サーバー起点のバックチャネルパターン(つまり、ctx.sample() または ctx.elicit() を使うもの)のみが、レガシー版でしか利用できません。このテンプレートをフォークして、クライアントのサンプリングまたはエリシテーションに依存するツールを追加する場合、古い非推奨プロトコルをネゴシエートするクライアントでのみ動作することにご注意ください。

リソース

  1. resource_logo
  • PyMCP の Base64 エンコードされた PNG ロゴと、その SHA3-512 ハッシュを取得します。
  • URL:data://logo
  • 出力
    • Base64EncodedBinaryDataResponse Pydantic オブジェクトを含む TextContent。このオブジェクトには以下のフィールドがあります。
      • data:string:PyMCP の Base64 エンコードされた PNG ロゴです。
      • hash:string:生のバイナリデータの 16 進数エンコードされた暗号学的ハッシュです。このデータは、data に Base64 エンコードされた文字列として表されます。(16 進数エンコードされたハッシュ値は 6414b58d9e44336c2629846172ec5c4008477a9c94fa572d3419c723a8b30eb4c0e2909b151fa13420aaa6a2596555b29834ac9b2baab38919c87dada7a6ef14 です。)
      • hash_algorithm:string:使用された暗号学的ハッシュアルゴリズムです。例:sha3_512。
  1. resource_logo_svg
  • PyMCP の SVG ロゴを取得します。
  • URL:data://logo_svg
  • 出力
    • PyMCP ロゴの SVG データを含む TextContent。
  1. resource_unicode_modulo10
  • 指定された数値の 10 を法とする剰余を計算し、その結果を表す Unicode 文字を返します。文字は、剰余が奇数か偶数かに応じて選択されます。奇数の剰余には、Unicode 文字 ❶(U+2776)、❸(U+2778)、❺(U+277A)、❼(U+277C)、❾(U+277E)を使用します。偶数の剰余には、Unicode 文字 ⓪(U+24EA)、②(U+2461)、④(U+2463)、⑥(U+2465)、⑧(U+2467)を使用します。
  • URL:data://modulo10/{number}
  • 入力
    • number:integer:1 から 1000 までの正の整数(両端を含む)です。
  • 出力
    • 正しい Unicode 文字を表す文字列を含む TextContent。

プロンプト

  1. code_prompt
  • 指定されたタスクに基づいて、Python でコードスニペットを書くためのプロンプトを取得します。。
  • 入力
    • task:string:コード実装プロンプトを生成する対象となるタスクの説明です。
  • 出力
    • プロンプトを表す str。

インストール

このリポジトリをクローンするディレクトリを、以降では 作業ディレクトリ または WD と呼びます。

uv をインストールします。just をインストールします。仮想環境に最小限の依存関係でプロジェクトをインストールするには、WD で以下を実行します。必須ではない依存関係(開発およびテストに必要です)もすべてインストールするには、以下のコマンドで install ターゲットを install-all ターゲットに置き換えます。

just install

環境変数

以下の環境変数を設定できます。

  • PYMCP_LOG_LEVEL:PyMCP サーバーのPython ログレベルを設定します。デフォルトは INFO です。
  • MCP_SERVER_TRANSPORT:この MCP サーバーのFastMCP サーバートランスポートの種類を設定します。デフォルトは stdio です。
  • RESPONSE_CACHE_TTL:サーバーからのプロンプト、リソース、ツールの応答をキャッシュするために有効化できる、有効期間(TTL)キャッシュの時間を秒単位で設定します。デフォルト値は 30 です。0~86400(一日)の整数値が有効です。0 に設定すると、応答キャッシュは実質的に無効になります。
  • FASTMCP_HOST:ネットワークトランスポート(例:streamable-http、sse)を使用する場合に、FastMCP サーバーのホストアドレスを設定します。デフォルトは localhost です。
  • FASTMCP_PORT:ネットワークトランスポートを使用する場合に、FastMCP サーバーのポート番号を設定します。デフォルトは 8000 です。
  • ASGI_CORS_ALLOWED_ORIGINS:MCP サーバーを HTTP トランスポートで起動する場合に、CORS の許可オリジンを設定します。デフォルトは ["*"] です。

スタンドアロンでの使用

以下を実行すると、PyMCP を stdio トランスポートの MCP サーバーとしてスタンドアロンで起動できます。また、MCP_SERVER_TRANSPORT 環境変数でトランスポートの種類を指定すると、streamable-http または sse トランスポートで起動できます。

uv run pymcp

MCP Inspector でテストする

MCP Inspector は、開発者が MCP サーバーのテストやデバッグに使用できる、Model Context Protocol の_公式_ツールです。MCP サーバーを詳しく調べるには、これが最も包括的な方法です。

使用するには、Node.js がインストールされている必要があります。MCP Inspector などのパッケージと node をインストールして管理する最善の方法は、Node Version Manager(nvm)を使用することです。nvm をインストールしたら、以下を実行して最新の Long Term Release バージョンの node をインストールし、使用できます。

nvm install --lts
nvm use --lts

続いて、WD で以下を実行し、MCP Inspector と PyMCP を起動します。

npx @modelcontextprotocol/inspector uv run pymcp

これにより、認証トークン付きのローカル URL がポート 6274 に作成されます。この URL をコピーして、ブラウザーで開いてください。MCP Inspector の UI が表示されたら、Connect を押して MCP サーバーに接続します。その後、サーバーで利用できるツールを確認できます。

また、just launch-inspector を実行して MCP inspector を起動することもできます。

Claude Desktop、Visual Studio などで使用する

Claude Desktop、Visual Studio Code などのシステムで使用できる、stdio トランスポートで起動するためのサーバーエントリーは次のとおりです。

{
    "command": "uv",
    "args": [
        "run",
        "pymcp"
    ]
}

args リストの最後の項目として pymcp を指定する代わりに、スクリプトへの完全なパス(例:WD/.venv/bin/pymcp)を指定する必要がある場合があります。

リモートホスト型のオプション

現在利用できるリモートホスト型のオプションは次のとおりです。

テストとカバレッジ

pytest を使って提供されているテスト一式を実行するには、WD で以下を実行してください。テストの実行時にカバレッジレポートを取得するには、WD で次を実行してください。

just test-coverage

次のような出力が生成されます。

Name    Stmts   Miss    Cover   Missing
---------------------------------------
TOTAL     214      0  100.00%

貢献

貢献ガイドを参照してください。

ライセンス

MIT。

コメント

MCP は初めてですか?

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

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