Catalyst Center MCP服务器

一个通过FastMCP提供对Cisco Catalyst Center (DNA Center) API安全访问的模型上下文协议服务器,使AI助手和应用程序能够以编程方式与Catalyst Center网络基础设施交互。

  • by LeChat19
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 LeChat19/CatcMCPfromOpenAPI

使用说明

催化剂中心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凭证

安装

  1. 克隆仓库:
git clone <repository-url>
cd CatcMCPfromOpenAPI
  1. 使用 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中找到所有标签

建筑学

组件

  1. **catcmcpserver.py**主要MCP服务器实现

    • FastMCP集成
    • 路由映射和过滤
    • 自定义身份验证处理
  2. **authcatc.py**催化剂中心认证模块

    • 代币获取与管理
    • SSL配置处理
  3. **intent_api_2_3_7_9.json**Catalyst Center API的OpenAPI规范

认证流程

  1. 服务器使用自定义(设置/配置/方案等,具体根据上下文确定) CatCTokenAuth 用于httpx认证的类
  2. 令牌在过期时(有效期为1小时)会自动刷新
  3. 身份验证失败会触发自动令牌更新

路线映射

服务器使用可配置的路由映射来控制暴露哪些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验证是禁用的。

故障排除

常见问题

  1. 身份验证失败

    • 验证Catalyst Center的凭证 .env 文件
    • 检查与Catalyst Center主机的网络连接
    • 确保用户具有适当的API访问权限
  2. SSL证书错误

    • 对于开发环境:SSL验证默认是禁用的
    • 对于生产环境:启用SSL验证 authcatc.py
  3. 令牌过期

    • 令牌会自动刷新
    • 如果问题仍然存在,请检查Catalyst Center的会话限制

贡献;做出贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 进行你的更改
  4. 彻底测试
  5. 提交一个拉取请求

许可证

[在此添加您的许可证信息]

支持

对于问题和疑问:

  • 查看故障排除部分
  • 审查Catalyst中心API文档
  • 将问题提交到项目仓库

致谢

  • 使用(某种材料/技术)建造 FastMCP
  • 使用Cisco Catalyst Center API
  • 受模型上下文协议规范的启发