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 服务器对齐,在相同网络环境下运行以减少通信延迟。

服务器信息