SubNetree MCP 服务器
使用说明
- 项目简介
- SubNetree 的 MCP 服务器实现是一部分子系统,负责实现 MCP 协议的核心功能:向 LLM 客户端提供资源数据、注册并执行工具,以及暴露和渲染提示模板。服务器通过 JSON-RPC 与客户端通信,支持多种传输模式,在此实现中采用标准的 Stdio 传输(通过子进程的标准输入输出进行通信)。
- 主要功能点
- 资源托管与数据访问:通过 MCP 服务器暴露 Recon/设备、硬件、拓扑等相关资源,供 LLM 在对话中查询。
- 工具注册与执行:将一组“工具”注册到 MCP 服务端,LLM 客户端可以通过调用工具获得外部功能(如获取设备信息、查询硬件、列出服务等)。
- 适配与组合:实现了基于 Recon、SvcMap 等模块的数据适配器,使 MCP 服务器可以利用现有的内部存储与查询能力。
- 事项处理与会话管理:支持对会话上下文的能力声明,以及在 MCP 客户端请求下的执行与返回。
- 安装与运行
- 构建方式:通过项目的构建流程将子系统编译为可执行二进制。该 MCP 服务是通过子命令“mcp”启动的。
- 启动 MCP 服务器(标准流程):
- 运行子命令:subnetree mcp
- 这将启动一个 MCP 服务器实例,使用标准输入/输出与 MCP 客户端通信。
- 部署说明:由于 MCP 客户端通常通过标准输入输出与服务器通信,使用时应将 MCP 客户端与 SubNetree 的二进制以合适方式组合(例如在同一主机上通过父进程方式启动,或在需要时通过管道持久化通信)。
- 服务器配置
- MCP 客户端的配置要以 JSON 形式描述,用于连接到 MCP 服务器。配置包含 server name、command、args 等字段;具体示例如下(请按实际环境传递给客户端并由客户端解析):
- 配置示例(以 JSON 表述,非代码块呈现,便于理解): { "server_name": "subnetree-mcp-stdio", "command": "./subnetree", "args": ["mcp"] }
- 注释说明:
- server_name: MCP 服务器的标识名称,便于客户端在多服务器场景中区分。
- command: 启动 MCP 服务器的可执行程序路径。在本仓库中,MCP 服务端是在 SubNetree 的主二进制中通过子命令“mcp”启动,因此此字段应指向可执行的 SubNetree 二进制路径。
- args: 启动 MCP 服务器所需的命令行参数列表。此处的参数为 ["mcp"],表示以 MCP 模式启动。
- 基本使用方法
- 客户端连接方式:MCP 客户端应通过标准输入/输出与 MCP 服务器建立交互,收到 MCP 的 JSON-RPC 请求后执行相应的资源查询、工具调用等操作,并返回 JSON-RPC 响应。
- 常见工作流:
- 客户端启动并连接到 MCP 服务器(通过上述命令+参数组合)。
- 客户端通过 MCP 的工具注册与调用接口,向服务器请求设备信息、硬件信息、服务查询等功能。
- MCP 服务器将结果以 JSON-RPC 的规范格式返回,客户端进行处理并将上下文信息用于后续的 LLM 交互。
- 调试提示:如需在开发阶段排错,请关注 MCP 服务器对信号的处理、工具注册过程,以及适配层是否正确暴露数据库/查询能力。