eMed MCP 服务端实现
使用说明内容(Markdown格式)
-
项目简介
- 本仓库实现一个基于 MCP 的后端服务器,允许 LLM 客户端通过 JSON-RPC 与服务器交互,注册并执行工具、检索知识库、存储潜在客户线索等操作。服务器采用无状态设计,支持通过不同传输方式与客户端通信,示例实现使用 Express + StreamableHTTPServerTransport。
-
主要功能点
- MCP 核心能力
- 注册并暴露工具(如 search_knowledge_base、save_lead),支持输入校验与结果封装。
- 通过 MCP 客户端执行工具并将结果回传给对端,支持多轮对话中的工具调用循环。
- 提供知识库向量检索能力,结合 Elasticsearch 存储的文本片段和嵌入向量进行检索。
- 资源与数据访问
- 通过工具接口访问并操作 Elasticsearch 索引:knowledge base(emed-kb)和 leads(emed-leads)。
- 安全与可扩展性
- 采用无状态服务器实例(每个请求新建 McpServer),便于水平扩展;提供简单的授权头校验入口。
- 兼容性与传输
- 具备与 MCP 客户端的传输适配示例,支持通过 StreamableHTTPTransport 与客户端交互。
- MCP 核心能力
-
安装步骤
- 安装依赖:在仓库根目录执行 pnpm install。
- 配置环境:复制并修改 .env 文件,例如 OPENAI_API_KEY、ELASTICSEARCH_URL 等。
- 启动 Elasticsearch:按照项目说明使用 docker Compose 启动本地 Elasticsearch。
- Ingest 知识库:执行 kb:_ingest 将 knowledge-base 目录中的文本分块、嵌入并索引到 Elasticsearch。
- 启动 MCP 服务器:进入 apps/mcp,执行轮廓命令启动(如 pnpm dev)。
- 启动前端应用(可选):进入 apps/web,执行 pnpm dev 启动前端界面。
-
服务器配置 MCP 客户端连接服务器需要的配置信息(json 格式,包含 server name、command、args 等)示例说明如下,请按实际环境填写: { "serverName": "emed-mcp", "workingDirectory": "apps/mcp", "command": "pnpm", "args": ["dev"], "notes": "在仓库根目录执行 pnpm install 后,进入 apps/mcp 目录运行 pnpm dev 即可启动 MCP 服务。该配置用于客户端建立与 MCP 服务器的连接。" }
-
基本使用方法
- 启动与连接
- 启动 MCP 服务器后,确保允许来自客户端的请求(如需要授权 token,请在环境变量中配置 MCP_AUTH_TOKEN)。
- 客户端通过配置的服务器地址建立连接,并在需要时调用工具(如 search_knowledge_base、save_lead)执行对应操作。
- 对话流程
- LLM 通过工具调用向 MCP 服务器发起请求,服务器执行工具并返回结果,LLM 基于结果生成最终回答。
- 安全与运维
- 服务器为无状态实例,确保横向扩展时每个请求都能被独立处理;如需认证,可以通过 MCP_AUTH_TOKEN 控制访问。
- 启动与连接