ragweld 基于 Model Context Protocol 的 MCP 服务器实现
使用说明 (Markdown)
- 项目简介
- ragweld 在后端集成了对 MCP(Model Context Protocol)的服务器实现,核心职责是以标准化的 JSON-RPC 协议向 MCP 客户端提供资源、工具、以及 Prompt 模板的访问与执行能力,便于 LLM 客户端在对话中获取上下文信息和外部功能。
- 主要功能点
- MCP 服务端:在后端应用中挂载 MCP 服务端,提供 /mcp 路径的流式传输能力,遵循 MCP 的请求-响应模型。
- 资源管理(Resources/Corpus):通过 MCP 兼容接口对企业级语料、代码库等资源进行注册、查询与访问。
- 工具(Tools):注册和执行外部工具,例如代码检索、知识问答等,LLM 可以通过 MCP 调用这些工具来扩展能力。
- Prompt 模板(Prompts):定义与渲染用于 MCP 交互的 Prompt 模板,支持可定制的对话模式。
- JSON-RPC 通信:服务器端以标准的 JSON-RPC 形式接收请求并返回响应,和 MCP 客户端无缝对接。
- 多传输协议支持:嵌入式 MCP 服务通过 HTTP 流 transport、SSE、WebSocket 等实现对话上下文的持续交互(具体传输协议按实现部署选择)。
- 安装与运行
- 依赖与环境:后端为 Python FastAPI + MCP 服务实现,需搭建数据库与依赖环境(如 PostgreSQL/Neo4j 等,视具体实现而定)。
- 启动后端:通过常规的 uvicorn 启动后端应用(如 uvicorn server.main:app --host 0.0.0.0 --port 8012),MCP 会在 /mcp 路径挂载,供 MCP 客户端连接。
- MCP 客户端连接:MCP 客户端应配置连接端点为 http(s)://<服务器地址>:8012/mcp/,通过 JSON-RPC 与 ragweld 的 MCP 服务交互。
- 服务器配置(MCP 客户端需要的配置示例)
- server_name: ragweld-tribrid-mcp
- command: uvicorn
- args: ["server.main:app", "--host", "0.0.0.0", "--port", "8012"]
- 说明:ragweld 的 MCP 服务作为嵌入式传输挂载在后端同端口的 /mcp 路径下,无需单独部署独立的 MCP 服务进程。客户端配置应指向该端点,并可根据需要启用无会话/无状态模式等 MCP 设置。
- 基本使用方法
- 启动后端服务后,MCP 客户端通过 /mcp/ 接口进行资源读取、工具调用与提示模板获取等请求。
- 客户端可按需设置顶层模式(如 tribid/dense_only/sparse_only/graph_only)以及默认返回数量等,以实现跨模型上下文的统一访问。
- 通过 MCP 提供的工具接口实现外部功能调用,以及通过 prompts 获取或渲染定制化的提示模板。
- 重要注意
- MCP 服务的具体工具、资源、提示模板的定义、以及安全策略(如 API key 认证、跨域策略等),请参考 ragweld 的 MCP 配置文档与后端实现细节。