mcpField
M
MCPheonix

MCPheonix

本地服务
github.com/jmanhypeAI 与智能体6731 周前更新

关于 MCPheonix

MCPheonix 是基于 Elixir Phoenix 框架实现的简化版 MCP 服务,通过 SSE 和 JSON-RPC 端点与客户端通信。它可以通过 JSON 配置管理多个子 MCP 服务,适合 Elixir 开发者研究或搭建 MCP 网关。

主要功能

  1. 01通过 JSON-RPC 接收 MCP 请求
  2. 02通过 SSE 向客户端推送事件
  3. 03以 OTP 监督进程管理子 MCP 服务
  4. 04经 stdio 将工具调用路由到子服务
  5. 05基于 JSON 配置添加子服务

适用场景

  1. 01在 Elixir 项目中接入图像生成或任务管理类 MCP 服务
  2. 02研究基于 OTP 监督树管理 MCP 子进程的实现方式

MCP 相关

该项目作为 MCP 服务运行,向 MCP 客户端提供 /mcp/rpc 与 /mcp/stream 端点,并把工具调用转发给配置中的子 MCP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCPhoenix

基于 Phoenix Framework(Elixir)构建的 MCP 服务。为 MCP 客户端提供 Server-Sent Events 和 JSON-RPC 端点,并支持通过 JSON 配置管理多个子 MCP 服务。

注意:代码库中的模块和目录名称始终拼写为“MCPheonix”(不含字母“o”)。

功能

在端口 4001 上运行 Phoenix Web 服务器,以便:

  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.0Web 框架
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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。