mcpField
M
MCPheonix

MCPheonix

ローカル
github.com/jmanhypeAI・エージェント6731 週間前に更新

MCPheonix について

MCPheonix は Elixir の Phoenix フレームワークで構築された MCP サーバーです。SSE と JSON-RPC のエンドポイントを公開し、JSON 設定で定義された複数の子 MCP サーバーを管理します。Elixir 環境で開発する利用者を想定しています。

主な機能

  1. 01MCP リクエスト用の JSON-RPC エンドポイント
  2. 02クライアントへイベントを送信する SSE ストリーム
  3. 03OTP 監視下で動作する子サーバー
  4. 04stdio 経由で子サーバーへ振り分けるツール呼び出し
  5. 05JSON ファイルによる子サーバーの設定

活用シーン

  1. 01Flux 画像生成と Dart タスク管理のサーバーを単一のエンドポイントで提供する
  2. 02OTP の監視ツリーで MCP 子プロセスを管理する実装を調べる

MCP 対応

本プロジェクトは MCP サーバーとして動作し、/mcp/rpc と /mcp/stream のエンドポイントを MCP クライアントに提供して、ツール呼び出しを設定済みの子 MCP サーバーへ転送します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCPhoenix

Phoenix Framework(Elixir)を基盤とする MCP サーバーです。MCP クライアント向けに Server-Sent Events と JSON-RPC のエンドポイントを提供し、JSON 設定を通じて複数の子 MCP サーバーを管理できます。

注:コードベース全体で、モジュール名とディレクトリ名には「MCPheonix」(「o」を含まない表記)が使用されています。

できること

ポート 4001 で Phoenix ウェブサーバーを実行し、次の機能を提供します。

  1. POST /mcp/rpc で MCP JSON-RPC リクエストを受け付けます
  2. GET /mcp/stream で SSE を介してクライアントにイベントをストリーミングします
  3. 子 MCP サーバー(Flux 画像生成、Dart タスク管理など)を監視対象プロセスとして管理します
  4. stdio を介してツール呼び出しを適切な子サーバーにルーティングします

子サーバーは priv/config/mcp_servers.json で定義され、起動時に自動的に開始されます。

ステータス

項目状態
トランスポートHTTP(SSE + JSON-RPC)
フレームワークPhoenix 1.7、Elixir >= 1.14、Erlang >= 25
子 MCP サーバーFlux(画像生成)、Dart(タスク管理)
OTP による監視はい — 子サーバーは監視対象プロセスです
Cloudflare 統合Durable Objects クライアント(実験的、カスタム hex パッケージを使用)
イベントシステムパイプライン処理に Broadway + GenStage を使用
テストExUnit、テストファイル 2 件(Cloudflare DO クライアント、モック WebSocket)
ライセンスMIT

アーキテクチャ

lib/
  mcpheonix/
    application.ex         — OTP application, supervision tree
    mcp/
      server.ex            — Core MCP server logic
      server_manager.ex    — Manages child MCP server processes
      server_process.ex    — GenServer wrapping a child stdio process
      supervisor.ex        — Supervisor for MCP server processes
      config.ex            — Reads mcp_servers.json
      connection.ex        — Client connection state
      json_rpc_protocol.ex — JSON-RPC 2.0 parsing
      jsonrpc_client.ex    — Client for calling child servers
      flux_server.ex       — Flux-specific server config
      features/
        resources.ex       — Resource listing
        tools.ex           — Tool listing and dispatch
    events/
      broker.ex            — Pub/sub event broker
    cloud/
      durable_objects/
        client.ex          — Cloudflare Durable Objects HTTP client
    resources/
      message.ex, registry.ex, user.ex — Domain resources (Ash framework)
  mcpheonix_web/
    endpoint.ex            — Phoenix endpoint
    router.ex              — Routes: /mcp/stream (SSE), /mcp/rpc (JSON-RPC)
    controllers/
      mcp_controller.ex    — SSE stream and RPC handler
      page_controller.ex   — Default page
    plugs/
      mcp_rpc_plug.ex      — Parses JSON-RPC body
      raw_body_*.ex        — Raw body reading for RPC

MCP サーバーの追加

priv/config/mcp_servers.json を編集します。

{
  "mcpServers": {
    "your_server": {
      "command": "/path/to/executable",
      "args": ["arg1"],
      "env": { "API_KEY": "value" },
      "tools": {
        "tool_name": {
          "description": "What it does",
          "parameters": [
            { "name": "param1", "type": "string", "description": "..." }
          ]
        }
      }
    }
  }
}

サーバーは OTP 監視下の子プロセスとして起動し、障害が発生すると再起動します。

セットアップ

git clone https://github.com/jmanhype/MCPhoenix.git
cd MCPhoenix       # note: the repo name uses correct spelling
mix deps.get
mix phx.server     # starts on port 4001
要件
依存関係バージョン
Elixir>= 1.14
Erlang/OTP>= 25
Phoenix~> 1.7.0
Node.js>= 18(子 MCP サーバー用)
Python>= 3.9(Flux/Dart 統合用)
オプションの統合
統合必要なもの
Flux 画像生成Python 3.9 以降、Flux CLI、BFL_API_KEY
Dart タスク管理Node.js 18 以降、DART_TOKEN
Cloudflare Durable ObjectsWorker のデプロイ、CLOUDFLARE_WORKER_URL、CLOUDFLARE_ACCOUNT_ID、CLOUDFLARE_API_TOKEN

MCP エンドポイント

エンドポイントメソッド用途
/mcp/streamGETSSE ストリーム。x-mcp-client-id ヘッダーを返します
/mcp/rpcPOSTJSON-RPC 2.0。x-mcp-client-id ヘッダーを渡します

主要な依存関係

パッケージバージョン用途
phoenix~> 1.7.0ウェブフレームワーク
phoenix_live_view~> 0.19.0LiveView(含まれていますが、主要なインターフェースではありません)
ash~> 2.9リソースフレームワーク
broadway~> 1.0イベント処理
gen_stage~> 1.2イベントストリーム
finch~> 0.16HTTP クライアント
mint_web_socket~> 1.0WebSocket サポート
jason~> 1.4JSON エンコード

制限事項

  • Cloudflare Durable Objects 統合は、一般公開されていない可能性があるカスタム GitHub hex パッケージ(cloudflare_durable_ex)に依存しています
  • MCP エンドポイントに認証はありません
  • SSE 接続はサーバー再起動後に維持されません
  • Ash フレームワークのリソース(User、Message、Registry)はひな形として追加されていますが、完全には統合されていないようです
  • LiveView と LiveDashboard は含まれていますが、MCP インターフェースには使用されていません
  • ログファイル(dev.log、phoenix_server.log)と一時ファイルがリポジトリにコミットされています

ライセンス

MIT

コメント

MCP は初めてですか?

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

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