使用说明
项目简介
Nautobot MCP应用是一个Nautobot插件,它在Nautobot网络自动化平台上集成了 Model Context Protocol (MCP) 服务器。通过该应用,可以将 Nautobot 中的网络数据和功能以标准化的 MCP 协议暴露出来,供 AI 助手或应用使用。这使得 AI 系统能够安全、可扩展地访问和操作网络信息,实现更智能的网络自动化和管理。
主要功能点
- MCP 服务器集成: 在 Nautobot 框架内运行 MCP 服务器,无缝对接 Nautobot 的数据模型和认证体系。
- 工具 (Tools) 注册与发现: 自动发现和注册 Nautobot 平台的功能为 MCP 工具,包括核心工具和自定义工具。
- 资源 (Resources) 访问: 虽然文档中没有明确提及资源管理,但通过工具可以间接访问和操作 Nautobot 的网络资源数据。
- Prompt 模板 (Prompts) 支持: 仓库信息中未明确提及 Prompt 模板功能,但 MCP 协议本身支持,未来可能扩展。
- 多种部署方式: 支持手动启动和 Systemd 服务部署,方便开发测试和生产环境使用。
- Web UI 工具查看: 提供 Nautobot Web UI 页面,方便管理员查看和管理已注册的 MCP 工具。
- 自定义工具扩展: 允许用户通过简单的 Python 函数扩展自定义 MCP 工具,满足特定需求。
安装步骤
-
安装软件包:
pip install nautobot-mcp -
添加到 Nautobot 配置: 编辑你的 'nautobot_config.py' 文件,将 'nautobot_mcp' 添加到 'PLUGINS' 列表中:
# In your nautobot_config.py PLUGINS = [ "nautobot_mcp", # ... other plugins ] -
配置插件: 在 'nautobot_config.py' 中配置 'nautobot_mcp' 插件设置:
# In your nautobot_config.py PLUGINS_CONFIG = { "nautobot_mcp": { "MCP_PORT": 8005, # MCP 服务器端口 "MCP_HOST": "0.0.0.0", # MCP 服务器监听地址,默认为 0.0.0.0 (所有接口) "MCP_CUSTOM_TOOLS_DIR": "/path/to/your/custom/tools", # 自定义工具目录路径 (可选) "MCP_LOAD_CORE_TOOLS": False, # 是否加载内置核心工具,默认为 False }, }注意: 'MCP_CUSTOM_TOOLS_DIR' 是可选的,用于指定存放自定义 MCP 工具的目录。'MCP_LOAD_CORE_TOOLS' 用于控制是否加载插件自带的核心工具(如设备信息查询工具等)。
-
执行 Nautobot 后升级命令:
nautobot-server post_upgrade
服务器配置
MCP 客户端需要配置以下信息以连接到 Nautobot MCP 服务器。配置信息为 JSON 格式:
{ "server name": "Nautobot MCP Server", "command": "nautobot-server", "args": [ "start_mcp_server" ], "host": "0.0.0.0", "port": 8005, "transport": "sse" }
配置参数说明:
- 'server name': MCP 服务器的名称,可以自定义。
- 'command': 启动 MCP 服务器的命令,这里使用 'nautobot-server',Nautobot 的管理命令。
- 'args': 启动命令的参数,'start_mcp_server' 是 'nautobot-mcp' 插件提供的用于启动 MCP 服务器的子命令。
- 'host': MCP 服务器监听的地址,默认为 '0.0.0.0',表示监听所有网络接口。可以根据实际情况修改,例如 '127.0.0.1' 仅监听本地回环接口。
- 'port': MCP 服务器监听的端口,默认为 '8005',可以在 'nautobot_config.py' 中通过 'MCP_PORT' 参数修改。
- 'transport': MCP 服务器使用的传输协议,这里使用 'sse' (Server-Sent Events)。
注意: MCP 客户端需要根据实际部署 Nautobot MCP 服务器的环境,调整 'host' 和 'port' 参数。如果 Nautobot 服务器和 MCP 客户端部署在同一台机器上,可以使用 '127.0.0..1' 作为 host。
基本使用方法
- 启动 MCP 服务器:
- 手动启动: 运行以下命令手动启动 MCP 服务器:
nautobot-server start_mcp_server - Systemd 服务启动 (推荐生产环境): 配置 Systemd 服务 (参考 README.md 中的 "Deployment Options" 部分) 并启动服务。
sudo systemctl enable --now nautobot-mcp.service
- 手动启动: 运行以下命令手动启动 MCP 服务器:
- 查看可用工具: 启动 MCP 服务器后,可以通过 Nautobot Web UI 访问 'https://your-nautobot-server/plugins/nautobot-mcp/tools/' 查看已注册的 MCP 工具及其详细信息。
- 使用 MCP 客户端连接并调用工具: 使用任何兼容 MCP 协议的客户端 (例如 Librechat 或自定义 MCP 客户端),配置上面提供的服务器连接信息,即可连接到 Nautobot MCP 服务器。连接成功后,客户端可以列出可用工具,并调用相应的工具执行网络自动化和管理任务。例如,可以使用 'get_device_details' 工具查询设备详细信息,或使用 'get_prefix_details' 工具查询网络前缀信息。
示例客户端调用 (Python): 参考仓库中的 'nautobot_mcp/scripts/mcp_client_check.py' 文件,可以编写 Python 脚本使用 'mcp' 客户端库连接到 Nautobot MCP 服务器并调用工具。
from mcp import ClientSession from mcp.client.sse import sse_client from rich import print import asyncio async def run(): async with sse_client(url="http://127.0.0.1:8005/sse") as streams: async with ClientSession(*streams) as session: await session.initialize() tools = await session.list_tools() print("Available tools:", tools) device_result = await session.call_tool( name="get_device_details", arguments={"device_name": "your_device_name"} ) print("Device Details:", device_result.content[0].text) if __name__ == "__main__": asyncio.run(run())
注意: 需要将 'your_device_name' 替换为 Nautobot 中实际存在的设备名称。
信息
分类
开发者工具