mcp2py — 任意のMCPサーバをPythonモジュール化するライブラリ

Library

概要

mcp2pyは「任意のMCPサーバをPythonモジュールとして扱う」ことを目指した軽量ラッパーです。コマンド文字列(例: npxコマンド)でサーバを起動し、ライブラリのload関数を呼ぶだけで、そのサーバ上で提供されるAPIをPythonの同期メソッドとして利用できます。設定ファイルや非同期プログラミングは不要で、短いコードでMCP対応サーバを統合できる点が最大の特徴です。READMEにある「3行で使える」というコンセプトがそのまま体現されています(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 27
  • フォーク数: 1
  • ウォッチャー数: 27
  • コミット数: 16
  • ファイル数: 13
  • メインの言語: Python

主な特徴

  • 任意のMCPサーバをコマンド一発で読み込み、Pythonオブジェクト経由で呼び出せる
  • 非同期(async/await)不要の同期APIを提供し、既存の同期コードベースに統合しやすい
  • npx などのコマンドを使ってNode系MCPサーバともシームレスに連携可能
  • 最小限の依存とシンプルな設計で、導入が容易

技術的なポイント

mcp2pyのコアアイデアは「任意プロセスとして動くMCPサーバをプロキシして、Python側で透過的に呼べるようにする」ことです。ユーザはload(“任意のコマンド”)でサーバプロセスを起動し、ライブラリはその標準入出力やソケットを使ってMCPプロトコルで通信するラッパーを作成します。実装上は、以下のような要素が重要になります:

  • プロセス管理:指定コマンドの起動・終了、再起動やタイムアウトなどのライフサイクル管理
  • シリアライズ/メッセージング:MCPプロトコルに基づくリクエスト/レスポンスの整形、JSONやバイナリなどのペイロード処理
  • 同期APIラッパー:非同期なIOやイベント駆動のやりとりを内部で吸収し、ユーザ側にはブロッキングなメソッド呼び出しとして提供
  • エラー処理とフォールトトレランス:サーバが落ちた場合の例外変換やログ出力、再接続の方針
  • セキュリティとサンドボックス:任意コマンド実行によるリスク(シェル注入や不審プロセス)への注意喚起と利用上のガイド

READMEに示された例ではnpxを用いたNode製のMCPサーバをロードしています。これにより、配布されているMCPサーバパッケージをローカルにインストールせずに利用可能で、言語や実行環境の違いを気にせずPythonから機能を呼び出せる点が実用的です。一方で、ネイティブなランタイム(Nodeや外部バイナリ)をプロセスとして実行するため、起動コスト・依存環境・権限やパスの扱い(PATHにnpxが存在するか等)に注意する必要があります。リポジトリには実装計画やレビューのドキュメント(IMPLEMENTATION_PLAN.md / IMPLEMENTATION_REVIEW.md)が含まれており、設計や今後の改善点についての考察が見られます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .coverage: file
  • .gitignore: file
  • .python-version: file
  • IMPLEMENTATION_PLAN.md: file
  • IMPLEMENTATION_REVIEW.md: file

…他 8 ファイル

(README抜粋)

mcp2py: Turn any MCP server into a Python module

Use any MCP server in 3 lines of Python code.

from mcp2py import load

server = load("npx -y @modelcontextprotocol/server-filesystem /tmp")
server.list_directory(path="/tmp")

That’s it. No configuration, no async/await, no setup. Just import, load, and call.


まとめ

設定不要で手軽、MCPサーバのPython統合に最適。

リポジトリ情報: