DeepSeek MCP 服务器(StdIO 通信实现)
使用说明(简要、可操作):
- 项目简介
- 该仓库实现了一个 MCP 服务器,用于向 LLM 客户端暴露模型上下文相关的能力,包括工具(Tools)、资源(Resources)以及提示(Prompts)的注册、查询与执行。
- MCP 服务器通过 JSON-RPC 协议接收请求(如初始化、列出工具、执行工具、列出资源等)并返回标准的 JSON-RPC 响应。
- 服务器端负责会话、能力声明,以及对传输通道(如 STDIO、SSE、WebSocket)等的扩展支持。
- 主要功能点(清晰直观)
- 处理 MCP 的核心请求:initialize、tools/list、tools/call、resources/list、prompts/list、ping、notifications/initialized 等。
- 工具暴露与执行:基于工具注册表(ToolRegistry)暴露工具,客户端可通过工具名称调用接口执行工具。
- 资源与模板:支持列出资源及资源模板,便于客户端获取可访问的数据入口。
- 配置驱动:从本地配置文件读取暴露的公开工具列表,以及是否需要审批等行为,提供灵活的安全策略。
- 运行模式与工作区绑定:服务器在指定工作区(workspace)下启动,能够对该工作区的资源进行操作和暴露。
- 安装步骤(易操作)
- 使用仓库自带的 Rust 构建工具链编译源码(需要已安装 Rust 和 Cargo)。
- 进入项目根目录,在命令行执行构建步骤,生成可执行的 MCP 服务组件。
- 通过命令启动 MCP 服务(示例:在工作空间目录中运行支持的可执行命令,具体命令取决于打包形式与运行方式)。
- 服务器配置(MCP 客户端需要的配置 JSON 示例,字段说明见注释)
配置文件采用如下结构,包含全局超时设置和每个服务器条目的定义:
{
"timeouts": {
"connect_timeout": 10, // 连接超时(秒)
"execute_timeout": 60, // 命令执行超时(秒)
"read_timeout": 120 // 读取响应超时(秒)
},
"servers": {
"example-mcp-server": {
"command": "/path/to/mcp-server-binary", // 启动 MCP 服务器的命令路径
"args": ["--workspace", "/path/to/workspace"], // 服务器启动时的参数
"env": {
"ENV_VAR": "value" // 启动时的环境变量(如有需要)
},
"url": null, // 若通过外部进程暴露,填 URL;如使用 STDIO,则为 null
"connect_timeout": 10, // 单独服务器的连接超时(可覆盖全局)
"execute_timeout": 60, // 单独服务器的执行超时
"read_timeout": 120, // 单独服务器的读取超时
"disabled": false // 是否禁用该 MCP 服务器
}
}
}
说明:
- 以上配置与仓库实现对接,确保 MCP 客户端能根据上述字段正确连接到服务器。服务器端会读取默认配置路径(如 ~/.deepseek/mcp_server.toml)或指定的配置文件来获取暴露工具的集合及行为。
- 基本使用方法(简易操作指引)
- 启动 MCP 服务器:在支持的工作目录中运行服务器进程(CLI 提供的 Serve 子命令可启动 MCP 服务,或直接执行打包后的 MCP 服务器二进制),确保所需工具已在工作区暴露。
- 与 MCP 客户端的交互:客户端通过 JSON-RPC 将请求写入服务器的 STDIN,服务器读取并返回对应的 JSON-RPC 响应至 STDOUT。
- 常用交互流程:
- initialize:握手与能力声明,建立基础上下文。
- tools/list:获取暴露的工具列表及其描述与输入模式。
- tools/call:指定工具名称及参数,执行工具并返回执行结果。
- resources/list:获取可用的工作区资源信息。
- ping:测试连通性。
- 重要提示
- MCP 服务器的暴露工具集合由配置决定,默认暴露基础工具集,确保在启动前配置正确的暴露列表。
- 客户端在调用工具时应正确传入参数和工作空间信息,确保工具执行在受控范围内。
- 如需自定义工具集或行为,可通过修改工具注册逻辑与暴露映射(ExposedTool)来实现扩展。