催化剂中心MCP服务器
一个模型上下文协议(MCP)服务器,通过FastMCP提供对Cisco Catalyst Center(DNA Center)API的安全访问。该服务器使AI助手和应用程序能够以编程方式与Catalyst Center网络基础设施进行交互。
特点/功能
- 安全认证为Catalyst Center提供的自定义令牌认证
- 基于角色的访问控制基于用户角色的可配置API端点暴露
- OpenAPI 集成根据Catalyst Center OpenAPI规范自动生成MCP工具
- SSL 配置针对不同环境的灵活SSL验证设置
- 令牌管理自动令牌刷新和过期处理
先决条件
- Python 3.12 或更高版本
- 访问一个Cisco Catalyst Center实例
- 有效的Catalyst Center凭证
安装
- 克隆仓库:
git clone
cd CatcMCPfromOpenAPI- 使用 uv 安装依赖项(推荐):
uv sync或者使用 pip:
pip install -r requirements.txt配置
环境变量
创建一个 .env 在项目根目录下创建一个文件,包含以下变量:
# Catalyst Center Configuration
CCC_HOST=your-catalyst-center-host
CCC_USER=your-username
CCC_PWD=your-password
# FastMCP Configuration
FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER=true使用方法/用途
启动MCP服务器
推荐:使用 uv(自动处理虚拟环境)
uv run catcmcpserver.py替代方法:
# Using virtual environment Python directly
.venv/bin/python catcmcpserver.py
# Or activate virtual environment first
source .venv/bin/activate
python3 catcmcpserver.py # Note: use python3, not python on macOS重要的:
- 不要使用系统自带的Python(
python3 catcmcpserver.py因为它没有安装所需的依赖项 - 在 macOS 上,使用
python3而不是python即使在激活的虚拟环境中
可用的API类别。使用标签进行分组。您可以在tags_endpoints.xlsx中找到所有标签
建筑学
组件
catcmcpserver.py主要MCP服务器实现
- FastMCP集成 - 路由映射和过滤 - 自定义身份验证处理
authcatc.py催化剂中心认证模块
- 代币获取与管理 - SSL配置处理
intent_api_2_3_7_9.jsonCatalyst Center API的OpenAPI规范
认证流程
- 服务器使用自定义(设置/配置/方案等,具体根据上下文确定)
CatCTokenAuth用于httpx认证的类 - 令牌在过期时(有效期为1小时)会自动刷新
- 身份验证失败会触发自动令牌更新
路线映射
服务器使用可配置的路由映射来控制暴露哪些API端点:
client_routes = [
RouteMap(methods=["GET"], tags={"Clients"}, mcp_type=MCPType.TOOL),
RouteMap(methods=["GET"], tags={"Topology"}, mcp_type=MCPType.TOOL),
# ... other route configurations
RouteMap(pattern=r"^/.*", mcp_type=MCPType.EXCLUDE), # Exclude all others
]发展
JSON模式验证
服务器包含了一个经过修补的JSON模式验证功能,用于处理返回数据的思科API null 在需要字符串的地方使用值。这样可以在保持功能的同时避免验证错误。
SSL 配置
SSL验证可以通过 check_ssl 认证模块中的参数。默认情况下,开发环境中的SSL验证是禁用的。
故障排除
常见问题
- 身份验证失败
- 验证Catalyst Center的凭证 .env 文件 - 检查与Catalyst Center主机的网络连接 - 确保用户具有适当的API访问权限
- SSL证书错误
- 对于开发环境:SSL验证默认是禁用的 - 对于生产环境:启用SSL验证 authcatc.py
- 令牌过期
- 令牌会自动刷新 - 如果问题仍然存在,请检查Catalyst Center的会话限制
贡献;做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 进行你的更改
- 彻底测试
- 提交一个拉取请求
许可证
\[在此添加您的许可证信息\]
支持
对于问题和疑问:
- 查看故障排除部分
- 审查Catalyst中心API文档
- 将问题提交到项目仓库
致谢
- 使用(某种材料/技术)建造 FastMCP
- 使用Cisco Catalyst Center API
- 受模型上下文协议规范的启发
