使用说明(Markdown 格式)
项目简介
- Silo 的 MCP 服务器实现了一个本地的 JSON-RPC 2.0 服务,运行在本地进程中,通过标准输入输出与 LLM 客户端进行通信。核心功能包括握手初始化、工具列表如 silo_list_files、silo_read_file、silo_get_config、以及通过 tools/call 执行工具操作,提供一致的错误处理和可扩展的工具系统。
主要功能点
- MCP 握手初始化:实现 initialize 请求,协商 protocolVersion,返回服务器能力和服务器信息。
- 工具注册与调用:提供工具定义(name、description、input_schema),LLM 客户端可通过 tools/list 获取工具清单,通过 tools/call 传入参数执行并返回结果内容。
- JSON-RPC 2.0 处理:服务器为 stdio 形式的 MCP 请求提供 JSON-RPC 响应;对无 id 的通知消息不回复,具备零崩溃设计(错误也以结构化 JSON 返回)。
- 本地数据与文件能力:内置文件系统相关工具,允许列出目录、读取文件,以及与本地配置、索引根等交互(Milestone 1 阶段)。
- 容错与可扩展性:错误信息以可读文本或结构化字段返回,具备 feature-gated 机制以在未来启用 LanceDB 等附加能力。
安装步骤
- 项目依赖
- 需要 Rust 工具链(通过 rustup 安装)。
- 构建与运行 MCP 服务器
- 在工作区根目录执行:进入 apps/mcp-server 目录后运行 cargo run,或者从工作区直接 cargo run -p mcp-server。
- 测试示例(可选)
- 握手测试(标准输入输出,JSON-RPC)示例:将包含 initialize 的 JSON 发送给服务器并接收响应。
- 工具调用测试示例:通过 tools/call 发送参数,查看返回的 content。
服务器配置 以下 JSON 配置用于 MCP 客户端启动并连接该服务器。说明如下:serverName 表示服务器在 MCP 客户端中的名称标识;command 为启动命令;args 为启动参数,指示要执行的具体程序和入口。该配置基于仓库中的实现与启动方式(本地 cargo 运行 mcp-server crate)。 { "serverName": "silo-mcp-server", "command": "cargo", "args": ["run", "-p", "mcp-server"] } 注释:
- serverName: 客户端对该 MCP 服务器的唯一标识,便于在多服务器场景中区分。
- command: 启动服务器所用的命令,这里为 Rust 的 cargo。
- args: 启动参数,等效于在 Maven/Gradle 等环境下的 run 命令;这里指定要运行的 mcp-server crate。
基本使用方法
- 启动服务器后,客户端应通过标准输入输出建立 JSON-RPC 连接,先发送 initialize 请求进行握手,确认 protocolVersion 与能力。
- 获取工具列表:发送方法名为 tools/list(或 mcp.list_tools)的请求,服务器将返回可用工具及其输入模式。
- 调用工具:发送方法名为 tools/call(或 mcp.call_tool)并携带参数,服务器执行并返回 ToolResult 的内容与错误标志。
- 服务器在出错时以结构化的 JSON 形式返回错误信息,避免直接崩溃,并尽量提供可诊断的 detail 字段。
- 如需后续扩展,请参考现有实现的模块结构(state、config、filesystem、extract、database 等),便于接入更多资源、工具与数据源。
关键词 本地 AI 服务, JSON-RPC, 工具调用, 文件系统索引, 数据存储
分类ID 6
信息
分类
AI与计算