使用说明(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 等模拟组件进行端到端测试
  • 基本注意事项

    • 服务器依赖外部服务(NetBox、Vault、PostgreSQL),部署前请确保对应服务就绪并正确配置环境变量。
    • 生产环境中应搭配合适的安全策略、令牌轮转与错误处理策略,确保数据安全与高可用性。
  • 使用示例流程

    • 启动并监听 MCP 客户端请求
    • 客户端通过工具发现接口 list_tools,确认可用工具集
    • 客户端发送查询请求,服务器返回结构化响应
    • 客户端根据返回的提示进行后续交互与功能调用
  • 其他说明

    • 本实现包含多种服务器变体与示例,如标准 MCP 服务器、LLM 优化服务器、以及结构化 MCP 服务器,以便支持不同场景的需求与性能优化。
    • 提供了全面的测试覆盖、示例脚本和集成组件,便于开发、测试和培训使用。

信息

分类

AI与计算