Raven MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介 Raven 提供一个基于 MCP 的后端服务器,用来以标准化的 JSON-RPC 形式向 LLM 客户端暴露 Raven 的能力,包括资源托管、工具注册与执行,以及 Prompt/模板的定义与渲染。服务器通过 Raven CLI 作为工具执行入口,将客户端请求转换为对 Raven 的命令并返回结果。
-
主要功能点
- MCP 核心能力暴露:
- 资源管理:列出和读取 vault 中的资源(如文档、示例、模式说明等)。
- 工具注册与执行:以工具的形式暴露 Raven 的命令,客户端可调用 raven_new、raven_query 等工具并获取结果。
- 内容与提示模板:支持对 Prompts/模板的定义和渲染,使 LLM 能获取到合适的对话上下文。
- 基于 JSON-RPC 的通信:
- initialize/工具列表(tools/list)、工具调用(tools/call)、资源列表(resources/list)与读取(resources/read)等方法。
- 兼容测试与集成:提供测试用例与集成示例,方便在本地或 CI 环境验证 MCP 交互。
- 针对 Vault 的绑定方式:
- 可通过 --vault-path 将某个 vault 锁定到 MCP 会话,或使用动态解析来决定 vault 的定位。
- 本地化运行与测试友好:
- 提供 NewServer、NewServerWithExecutable 等构造函数,支持在测试中注入自定义执行路径与输入输出流,方便持续集成验证。
- MCP 核心能力暴露:
-
安装步骤
- 将仓库源码克隆到本地环境。
- 构建 Raven 的 MCP 服务器组件,确保 Go 环境与依赖就绪。
- 准备好 Vault 目录结构与 Raven CLI 安装环境,确保 raven 命令可在系统 PATH 中被调用。
-
服务器配置(描述性说明) MCP 客户端在与 Raven MCP 服务器建立连接时,需要指定服务器名称、启动命令以及启动参数等信息,以便后续通过 JSON-RPC 与 Raven 服务器交互。配置供客户端使用的核心字段包括:
- server name:服务器实例的唯一标识,例如 raven。
- command:执行 Raven MCP 服务器的可执行文件路径,通常指向 Raven 的主二进制(rvn)。
- args:启动 Raven 服务器时的默认参数,例如用于绑定 Vault 的 --vault-path 或动态路径解析的选项。配置应清晰注释每个参数的用途,帮助 MCP 客户端建立稳定的连接。 说明中不直接暴露代码块,而以文本描述方式呈现,确保 MCP 客户端能够理解如何启动与连接。
-
基本使用方法
- 启动 Raven MCP 服务器:以包含 vault 路径的方式启动 Raven 的 rvn 服务,使 MCP 客户端能够对指定 vault 进行上下文服务的暴露与调用。
- 通过 MCP 客户端发送 initialize、tools/list、tools/call、resources/list、resources/read 等请求,获取 Raven 提供的工具与资源信息,并按需进行调用与读取。
- 使用 Raven 提供的工具进行对象查询、数据访问与代理代理式推理,结合代理/Agent 的对话能力实现高层次的上下文服务。
-
重要注意
- MCP 客户端与 Raven 服务器的交互遵循 JSON-RPC 2.0 规范,且以行-delimited JSON 的形式在 stdin/stdout 流中传输。
- Raven 的 MCP 实现依赖于 Raven 的 CLI 命令作为工具入口,服务器通过构造相应的命令并执行来实现工具调用。
-
参考与扩展
- 服务器实现包含对 Tools、Resources、Prompts 的完整暴露与处理逻辑,适合作为 LLM 代理的后端上下文提供。
- 如需扩展,请基于现有的服务器入口(如 initialize、tools/list、tools/call、resources/list、resources/read)扩充新的 MCP 请求与响应。