使用说明(Markdown 格式)
-
项目简介
- 本仓库实现了基于 MCP(Model Context Protocol)的 NetBox 基础设施后端服务器。它能托管资源、注册和执行工具、并提供可渲染的提示模板,供 LLM 客户端查询、获取上下文并执行外部功能。核心组件包括结构化协议、工具集、以及对 Vault、PostgreSQL、NetBox 的集成。
-
主要功能点
- MCP 协议核心支持:能够处理 MCP 请求与响应,注册工具、执行工具调用,渲染和传输提示信息。
- 资源与工具管理:实现 Host、VM、IP、VLAN 等工具集合,支持读取、查询、搜索等多种操作。
- 提示模板与渲染:提供结构化的提示输出,支持将数据整理成适合 LLM 理解的格式(列表、详情、搜索等)。
- LLM 的集成与优化:内置 Tiny LLM、LLMOptimizer、LLMCache 等组件,支持局部/云端模型和并发处理、缓存、延迟模拟等特性。
- 安全与数据源整合:接入 HashiCorp Vault 实现 JIT 令牌 minted,NetBox API 的访问,以及 PostgreSQL 的状态置信度查询能力(可选)。
- 多传输与测试友好性:以标准 MCP 服务器形态实现(基于 stdio 的 JSON-RPC 流),附带完善的测试用例和示例脚本,便于持续集成与验证。
-
安装步骤
- 获取代码
- 克隆仓库:git clone https://github.com/fringemonkey/mcp-dc.git
- 安装依赖
- 使用 Python 环境安装 requirements.txt 及可选的开发依赖 requirements-dev.txt
- 运行服务器
- 在项目目录执行:python -m src.server
- 服务器启动后,MCP 客户端可以通过标准的 JSON-RPC 调用与之交互,例如读取资源、执行工具、获取 Prompt 等。
- 环境与配置(示例变量,具体以实际部署为准)
- NETBOX_URL: NetBox 实例地址
- VAULT_ADDR: Vault 服务地址
- POSTGRES_HOST/POSTGRES_DB/POSTGRES_USER/POSTGRES_PASSWORD: PostgreSQL 状态置信度数据库配置
- 以上变量也可通过 .env 文件设置,服务器会在启动时自动加载。
- 获取代码
-
服务器配置(MCP 客户端所需的最小化描述)
- server_name: netbox-infrastructure
- command: python -m src.server
- args: [ {"NETBOX_URL": "http://localhost:8000"}, {"VAULT_ADDR": "http://localhost:8200"}, {"POSTGRES_HOST": "localhost"}, {"POSTGRES_DB": "state"}, {"POSTGRES_USER": "state_user"}, {"POSTGRES_PASSWORD": "state_pass"} ]
- 注释说明
- 服务器名称对应到实际运行的 MCP 服务器实例,这里以 netbox-infrastructure 为例,与仓库中的 src/server.py 实现对接。
- command 指定启动入口,使用 Python 模块方式运行服务器。
- args 为一组环境变量或配置项,用于提供 NetBox、Vault、PostgreSQL 的连接信息。MCP 客户端在启动时会通过这些信息建立与服务器的连接与认证。
- 实际部署时可按需调整环境变量,示例中给出常见默认值。MCP 客户端本身不需要编码,直接使用上述 JSON 配置即可连接到服务器并进行后续交互。
-
基本使用方式
- 启动服务器后,MCP 客户端可通过结构化协议与服务器进行交互,包含:
- 读取资源(read_resource 读取 NetBox 主机、VM、IP、VLAN 等资源信息)
- 注册并执行工具(call_tool 调用具体工具,如 list_hosts、get_ip 等)
- 获取和渲染 Prompt/LLM 请求(LLM 请求/响应、最终结果封装)
- 常见工作流:
- 客户端向 MCP 服务器注册可用工具集合
- 客户端根据用户输入构建 StructuredQuery
- 路由器决策分配所需模型及工具集
- LLM 请求提交并产生工具调用
- MCP 服务器逐项执行工具,聚合数据,返回最终结果
- 参考运行与测试
- 运行单元测试以验证工具实现、协议序列及性能特性
- 如需本地模拟 LLM,可使用 TinyLLM / TinyLLMClient 等模拟组件进行端到端测试
- 启动服务器后,MCP 客户端可通过结构化协议与服务器进行交互,包含:
-
基本注意事项
- 服务器依赖外部服务(NetBox、Vault、PostgreSQL),部署前请确保对应服务就绪并正确配置环境变量。
- 生产环境中应搭配合适的安全策略、令牌轮转与错误处理策略,确保数据安全与高可用性。
-
使用示例流程
- 启动并监听 MCP 客户端请求
- 客户端通过工具发现接口 list_tools,确认可用工具集
- 客户端发送查询请求,服务器返回结构化响应
- 客户端根据返回的提示进行后续交互与功能调用
-
其他说明
- 本实现包含多种服务器变体与示例,如标准 MCP 服务器、LLM 优化服务器、以及结构化 MCP 服务器,以便支持不同场景的需求与性能优化。
- 提供了全面的测试覆盖、示例脚本和集成组件,便于开发、测试和培训使用。
信息
分类
AI与计算