Attention Matters MCP 服务端
使用说明(简明、直观)
-
项目简介
- 这是一个实现 MCP(Model Context Protocol)的后端服务器。它把记忆资源、可调用工具、以及提示模板统一托管,允许 LLM 客户端通过 JSON-RPC 的方式读取资源、执行工具、获取上下文提示等,从而在对话中获得一致、可扩展的上下文服务。
-
主要功能点
- MCP 服务器核心:实现对 MCP 请求的处理、响应与通知,提供会话级上下文管理和能力声明。
- 资源管理与数据访问:将“记忆资源(Neighborhoods/Occurrences)”等以规范形式托管,便于 LLM 客户端读取和组合上下文。
- 工具注册与执行:支持多种工具接口,LLM 客户端可调用以执行外部功能(如查询、导入导出、统计等)。
- Prompt/模板渲染:通过上下文模板与输出格式帮助 LLM 客户端获取标准化的 Prompt 与示例输出。
- 传输协议与握手:以 MCP 的 JSON-RPC 形式通信,支持 stdio(服务器内部实现)、SSE、WebSocket 等传输方式的扩展实现。
- 会话与能力声明:服务器端维护会话状态、记忆能力、以及提供的服务能力描述,保障可扩展性与安全性。
-
安装步骤
- 需求前提:需要 Rust 环境(Cargo)用于构建服务器。仓库中已经提供了 am-cli 组件,包含服务端实现。
- 构建与安装
- 选用 Cargo 构建并安装:在仓库根目录或工作区内执行相应构建命令,得到 am 可执行文件。
- 启动服务器
- 运行命令:am serve
- 该命令基于 MCP 服务器实现,通过 stdio 传输进行 MCP 握手与请求响应。
- 启动后服务器将等待 MCP 客户端的初始化握手,然后进入主循环,接收 JSON-RPC 请求并返回响应。
- 运行命令:am serve
-
服务器配置(MCP 客户端需要的最小信息)
- 配置作用:MCP 客户端需要知道服务器端信息(名称、启动命令和参数)以建立连接并通过 MCP 协议进行通信。下面给出一个符合仓库实现的配置示例描述,仅用于参考配置,不包含代码块。
- 配置要点
- 服务器名称:用于标识 MCP 服务端的名称,便于客户端管理和日志区分。
- 启动命令:用于启动 MCP 服务端的可执行文件命令。
- 启动参数(args):服务器启动时需要传递的参数集合。
- 示例(JSON 形式描述,便于 MCP 客户端解析):{"name":"attention-matters-mcp","command":"am","args":["serve"]}
- 说明:此配置表示客户端应通过命令 am serve 启动服务器并使用标准输入/输出(stdio)进行 MCP 握手与后续通信。实际握手流程遵循 MCP 协议,客户端需发送 initialize 请求,随后发送 notifications/initialized 通知以完成握手。服务器会返回 JSON-RPC 响应或通知。
- 传输模式
- 当前实现使用 stdio 传输(stdin/stdout)。理论上也支持 SSE、WebSocket 等传输模式(需相应客户端实现和服务端适配)。
-
基本使用方法
- 连接与请求
- 使用 MCP 客户端通过标准输入输出与 am serve 进行通信。最初路径是发送 initialize 请求,包含协议版本、能力等字段,随后发送 initialized 通知以完成握手。
- 常用操作
- 读取资源、查询记忆、调用工具、获取和导出上下文等均通过 JSON-RPC 请求完成,服务器返回结构化的 JSON-RPC 响应。
- 典型工作流(简述)
- 客户端启动并握手。
- 客户端提交 am_query 请求以获取上下文 recall。
- 客户端根据返回的上下文继续对话,并在需要时调用 am_buffer、am_ingest、am_stats、am_export、am_import、am_feedback 等工具。
- 客户端可通过 am_query_index、am_retrieve 等实现两阶段检索,提升大规模记忆的可控性与效率。
- 连接与请求
-
运行与测试
- 构建后执行 am serve 启动服务器。
- 使用 MCP 客户端进行握手并发送请求,确保服务端能够正确处理 MCP JSON-RPC 格式的请求与响应。
- 如需本地验证,仓库包含大量集成测试和示例用例,可用于对照运行。
-
注意事项
- MCP 客户端与服务端的协作依赖于严格的 JSON-RPC 数据结构和握手流程,请确保客户端实现与服务端实现的协议版本兼容。
- 由于服务端实现包含会话管理、资源管理、工具执行、以及多种查询/导出/导入功能,请在生产环境中对权限和数据持久化进行充分评估与保护。