README
🚀 MCP-Nautobot
MCP-Nautobot 是一个适用于 Nautobot 网络自动化平台的模型上下文协议(MCP)服务器。该项目允许 AI 助手与你的 Nautobot 实例进行交互,从而访问网络库存数据。
⚠️ 重要提示
本项目与 Anthropic、Claude 或 Nautobot 没有官方关联。它是用于 Nautobot 集成的模型上下文协议的独立实现。
✨ 主要特性
- 异步 API:采用现代异步 Python 构建。
- MCP 兼容:可与 Claude 及其他支持 MCP 的 AI 助手协同工作。
- Nautobot 集成:可直接查询网络库存数据。
- 站点信息:获取详细的站点位置数据。
- 设备详情:访问设备规格和配置信息。
- 网络拓扑:可视化网络连接和关系。
- 基于角色的访问:通过用户角色控制数据访问。
- 灵活配置:可自定义数据展示方式。
📦 安装指南
# 克隆仓库
git clone https://github.com/aiopnet/mcp-nautobot.git
cd mcp-nautobot
# 创建并激活虚拟环境
# 如果未安装 uv,请参考:https://github.com/astral-sh/uv
uv venv
source .venv/bin/activate # 在 Windows 上使用:.venv\Scripts\activate
# 安装依赖
uv pip install -e . # 使用 pyproject.toml 进行可编辑安装需要 pip 21.3+
📚 详细文档
配置
复制示例环境文件并根据你的设置进行更新:
cp .env.example .env
# 使用你喜欢的编辑器编辑 .env 文件
环境变量
| 属性 | 详情 |
|------|------|
| NAUTOBOT_URL | 必需。你的 Nautobot 实例的 URL,无默认值 |
| NAUTOBOT_TOKEN | 必需。具有读取权限的 API 令牌,无默认值 |
| MCP_PORT | 可选。MCP 服务器监听的端口,默认值为 8000 |
| MCP_HOST | 可选。MCP 服务器绑定的主机,默认值为 127.0.0.1 |
| LOG_LEVEL | 可选。日志记录级别(DEBUG、INFO、WARNING、ERROR),默认值为 INFO |
⚠️ 重要提示
切勿将
.env文件提交到版本控制中,因为它包含敏感的 API 令牌。
如需了解高级配置选项,请参阅 docs/CONFIGURATION.md。
使用方法
运行服务器
# 启动 MCP 服务器
python -m mcp_nautobot.server
# 或者使用提供的 CLI
mcp-nautobot-server
服务器默认将在 http://127.0.0.1:8000 启动。
与 Claude Desktop 集成
- 打开 Claude Desktop,导航至“设置”>“工具”>“配置自定义工具”。
- 添加一个新工具,详细信息如下:
- 名称:Nautobot 网络数据
- 描述:从 Nautobot 访问网络库存数据
- 架构类型:MCP
- 端点 URL:http://127.0.0.1:8000(或你的自定义主机/端口)
- 保存并测试连接
现在你可以向 Claude 询问有关网络库存的问题:
- “我们在美国西部地区有哪些站点?”
- “显示芝加哥数据中心的所有设备。”
- “列出我们网络中的所有思科交换机。”
- “亚特兰大核心路由器的 IP 地址是什么?”
开发者指南
测试
# 安装开发依赖
uv pip install -e ".[dev]"
# 运行测试
pytest
# 运行带覆盖率的测试
pytest --cov=mcp_nautobot
代码风格和 linting
本项目遵循 PEP 8 指南,并使用 Black 和 isort 进行格式化。
# 格式化代码
black mcp_nautobot tests
isort mcp_nautobot tests
# 代码 linting
flake8 mcp_nautobot tests
mypy mcp_nautobot
路线图
- 设备配置检索:访问设备的运行配置。
- 拓扑可视化:生成网络地图和图表。
- 多租户支持:增强基于角色的访问控制。
- 电路信息:有关广域网电路和提供商的数据。
- 性能数据:集成历史性能指标。
贡献
欢迎贡献代码!请查看我们的 贡献指南 以开始贡献。
如果你遇到任何问题或有功能请求,请 提交一个 issue。
📄 许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
致谢
故障排除
如果你遇到问题,请查看 故障排除指南 或在 GitHub 上提交一个 issue。
Scan to join WeChat group