MCP Diag:AI原生网络诊断的确定性、协议驱动架构
摘要
MCP Diag代表了一种基于模型上下文协议(MCP)的混合神经符号架构。它解决了大型语言模型(LLM)与网络操作(AIOps)集成中的两个基本挑战: *随机接地问题*,其中LLM无法可靠地解析非结构化CLI输出,以及 *安全缺口* 授予自治代理shell访问权限的固有特性。
该存储库包含MCP Diag的参考实现,包括一个能够进行确定性输出序列化的安全MCP服务器(通过 jc)以及协议强制的人在环(HITL)启发。它还包括一个交互式MCP客户端和一个全面的基准测试套件,用于根据基线方法验证系统的性能、令牌效率和可靠性。
存储库结构
monorepo分为以下工作区:
packages/mcp-server:实现模型上下文协议的核心诊断服务器。它暴露了工具(dig,ping,traceroute,geoiplookup)并处理raw的序列化stdout转换为严格的JSON模式。它管理双通道传输(Stdio用于控制,SSE用于数据流)。packages/mcp-client:一个基于交互式终端的客户端,协调用户、LLM(Google Gemini)和MCP服务器之间的会话。它管理会话状态和工具执行工作流。mcp_diag_experiments用于进行定量评估的实验框架。它包含针对顶级全局域运行比较基准($N=500$试验)并生成性能图的逻辑。
先决条件
- 运行时: 包子 (v1.2或更高版本)。
- Python环境: 紫外线 (用于可再现的绘图环境)。
- 系统实用程序:主机必须安装标准网络实用程序(
iputils-ping,traceroute,dnsutils/bind9-host). - API证书:有效的Google Generative AI API密钥。
安装
- 克隆存储库:
git clone https://github.com/devansh-lodha/mcp-diag.git
cd mcp-diag- 安装依赖项:
此项目使用Bun工作区。在根目录安装依赖项将引导所有包。
bun install- 构建包:
编译客户端和服务器端的TypeScript源代码。
bun run build配置
客户端需要一个API密钥来与推理模型通信。
- 导航到客户端包:
cd packages/mcp-client- 创建和编辑
.env并填充GEMINI_API_KEY变量。
交互式使用
要在交互模式下运行整个系统,其中客户端将服务器作为子进程生成:
bun run start这将启动 ChatSession 编排。用户可以发出自然语言查询(例如。, *“跟踪到google.com的路由并验证最后一跳的延迟”*).该系统将:
- 规划工具执行链。
- 通过Elicitation协议请求明确的用户批准。
- 通过MCP服务器执行工具。
- 将结果流式传输回客户端。
- 综合一个最终的答案。
实验结果的再现
本节详细介绍了重现相关论文中提出的定量评估所需的步骤。该基准测试将MCP Diag架构与基线“ShellTool”方法在延迟、内存占用和令牌消耗指标方面进行了比较。
1.基准执行
基准测试运行者对全球500强域名进行了对照试验。它处理JIT预热和路径启动,以确保统计有效性。
导航到实验目录:
cd mcp_diag_experiments安装实验依赖项:
bun install配置实验环境: 确保a .env 文件存在于 mcp_diag_experiments/ 包含有效 GOOGLE_API_KEY.
运行基准测试套件:
# This will execute N=500 trials for both Baseline and MCP systems
# Results are saved to benchmark_results.csv
bun run start2.数据可视化
可视化脚本使用Python。我们利用 uv 以确定性的方式管理Python环境和依赖关系。
确保 uv 已安装:
curl -LsSf https://astral.sh/uv/install.sh | sh生成性能图:
# uv will automatically create the venv and install dependencies (pandas, matplotlib, seaborn)
uv run plot.py这将在以下位置生成科学的6面板网格可视化 mcp_diag_experiments/plots/mcp_final_grid.pdf.
许可证
MIT许可证。看 LICENSE 文件全文。
