ELF-MCP 服务器实现
使用说明(简明操作步骤,便于快速上手)
-
项目简介
- ELF 提供一个专门的 MCP 服务器组件,用于将 LLM 客户端的上下文需求通过标准化的 MCP 协议暴露给客户端,并将实际操作转发给 ELF 的 HTTP API 实现。核心功能包括读取/管理 资源(Memory/Notes)、注册并执行 Tools、以及通过 MCP 客户端实现的对 Prompts 的使用和渲染。
-
主要功能点
- MCP 协议支持:实现基本的 MCP 服务器框架,注册并暴露工具集,处理请求/响应。
- 资源与工具管理:提供对内存资源(notes)的读取、创建、更新、删除等能力,以及通过工具远程调用 ELF API。
- 转发与对接:将 MCP 客户端的工具调用转换为对 ELF HTTP API 的请求,返回标准的 JSON-RPC 风格结果。
- 会话与安全:通过配置管理会话与能力声明,保证对资源的访问安全与多租户隔离。
- 搭配 ELF 其他组件使用:与 elf-api、elf-storage、elf-config 等组件协同工作,提供完整的后端上下文服务。
-
安装步骤
- 确保系统上已安装 Rust 工具链与 Cargo。
- 编译并运行 MCP 服务:
- 进入仓库根目录,执行构建目标:cargo build 或 cargo run -p elf-mcp -- --help
- 更具体的运行方式请参考仓库中 elf-mcp 的 README/文档(若有 elf.example.toml 配置模板,请按模板准备配置文件)。
- 同步依赖的其他服务:
- 在部署前,请确保 PostgreSQL、向量数据库等 ELF 组件可用并已正确配置(如 PostgreSQL + pgvector、Qdrant、以及嵌入/检索/提取提供端点)。
-
服务器配置(MCP 客户端使用的配置,示例以 JSON 表示)
- 说明:以下配置用于 MCP 客户端在首次连接时了解服务器信息,并在实际运行时通过 MCP 客户端启动连接。配置信息包含服务器名称、启动命令及参数等,客户端本身不需要此配置代码。
- JSON 配置示例(文本描述,不是代码): { "server_name": "elf-mcp", "command": "cargo", "args": ["run", "-p", "elf-mcp", "--", "-c", "elf.toml"] // 说明:使用 cargo 启动 elf-mcp 服务,配置文件 elf.toml 中包含对 MCP 服务能力、绑定地址、API 基地址等信息(示例位于 elf/example.toml / elf.toml 中,请按实际项目模板生成配置文件)。 }
-
基本使用方法
- 启动
- 启动 ELF 的 MCP 服务端 wad(例:cargo run -p elf-mcp -- -c elf.toml),确保对应的 elf-api、elf-storage 等依赖服务可用。
- 连接与交互
- MCP 客户端(如 Claude 等)通过 MCP 协议向 elf-mcp 服务器发起请求,访问内存资源、调用工具(如 memory_add_note / memory_search 等),以及获取提示/模板相关信息。
- 常见流程
- 客户端请求调用某个工具,如 memory_add_note,服务器将请求转发到 ELF HTTP API,返回工具执行结果。
- 客户端可通过获得的资源/工具能力组合,动态生成上下文信息供 LLM 使用。
- 监控与调试
- 通过 ELFs 的日志输出与部署脚本,监控 MCP 服务器的启动、请求处理以及对外部 API 的调用情况。
- 启动
-
运行与调试建议
- 使用仓库提供的模板配置 elf.toml(或 elf-mcp.toml),确保配置中的 MCP 能力、绑定地址、以及 ELF API 的基地址正确无误。
- 将 ELF 组件(API、存储、向量数据库等)与 MCP 服务器对齐,在相同网络环境下运行以减少通信延迟。