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、自动重连、遥测)等运行时特性
- 提供文档、示例和开发指南,方便上手与扩展
-
安装步骤
- 安装 Elixir(并确保 Phoenix/Elixir 生态及 Hex 包管理器就绪)
- 将 ExMCP 作为依赖加入你的 Elixir 项目,或在现有应用中引入并编译
- 获取依赖并编译:
- 运行依赖安装与编译命令
- 确保测试通过后即可启动服务
- 启动服务器并按需配置传输通道与路由(如 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 服务器。
-
基本使用方法
- 启动服务器:按照配置启动 ExMCP 服务器,使其对外提供 MCP 服务。
- 客户端连接:使用 MCP 客户端连接到服务器(根据所选传输通道,可能是 stdio、HTTP/SSE、BEAM 传输等)。
- 读取资源、调用工具、获取 Prompts:
- 列出可用工具、资源、Prompts
- 通过工具名调用工具,传入参数并获取返回结果
- 读取/渲染提示模板以获得对话上下文模板
- 监控与运维:利用 OTP/ supervision、遥测、错误重试策略确保服务稳定性