ExMCP: Elixir MCP 服务器与 ACP 客户端实现

使用说明内容(Markdown格式)

  • 项目简介 ExMCP 是一个用 Elixir 实现的 MCP(Model Context Protocol)服务器端框架,包含服务器、客户端协议及 Phoenix 插件等组件,能够以标准化方式向 LLM 客户端提供上下文信息和功能。核心职责包括托管资源、注册和执行工具、定义与渲染提示模板,并通过 JSON-RPC 形式与客户端通信,支持多传输通道(如 HTTP/SSE、stdio、原生 BEAM 传输),并具备会话管理、能力声明与安全性特性。

  • 主要功能点

    • 完整实现 MCP 协议的服务器端能力(请求/响应处理,JSON-RPC 风格交互)
    • 资源、工具、提示模板的管理(支持 DSL 定义和回调处理模式)
    • Phoenix Plug 集成,便于在 Phoenix 应用中直接使用
    • ACP(Agent Client Protocol)能力,支持对外部代理和编码代理的控制
    • 原生 BEAM 传输与多传输通道(stdio、HTTP/SSE、BEAM 消息传递)的支持
    • 任务管理、容错(OTP/ supervision、自动重连、遥测)等运行时特性
    • 提供文档、示例和开发指南,方便上手与扩展
  • 安装步骤

    1. 安装 Elixir(并确保 Phoenix/Elixir 生态及 Hex 包管理器就绪)
    2. 将 ExMCP 作为依赖加入你的 Elixir 项目,或在现有应用中引入并编译
    3. 获取依赖并编译:
      • 运行依赖安装与编译命令
      • 确保测试通过后即可启动服务
    4. 启动服务器并按需配置传输通道与路由(如 Phoenix 路由、Stdio 调用等)
  • 服务器配置(MCP 客户端连接所需最小信息) 为了让 MCP 客户端能够连接并与服务器建立通信,配置需要提供服务器名称、启动命令及参数。下面给出一个示例配置(JSON 格式,服务器名称与启动参数需与实际部署保持一致): { "server_name": "ex_mcp", "command": ["mix", "run", "--no-halt"], "args": [] } 说明:

    • server_name:标识服务器的唯一名称,便于 MCP 客户端进行识别与日志关联。
    • command:启动服务器的命令列表;对于 Elixir/ExMCP 的场景,常见为 mix run --no-halt。
    • args:启动命令附加参数,如需要指定传输模式、监听端口等,请在此数组中添加具体参数(若当前部署不需要额外参数,可留空)。 注:MCP 客户端在连接时不需要知道内部实现细节,只需要使用上述信息来启动并连接到 MCP 服务器。
  • 基本使用方法

    1. 启动服务器:按照配置启动 ExMCP 服务器,使其对外提供 MCP 服务。
    2. 客户端连接:使用 MCP 客户端连接到服务器(根据所选传输通道,可能是 stdio、HTTP/SSE、BEAM 传输等)。
    3. 读取资源、调用工具、获取 Prompts:
      • 列出可用工具、资源、Prompts
      • 通过工具名调用工具,传入参数并获取返回结果
      • 读取/渲染提示模板以获得对话上下文模板
    4. 监控与运维:利用 OTP/ supervision、遥测、错误重试策略确保服务稳定性

服务器信息