思科DC FastMCP服务器
当前实施的服务器:
- ACI FastMCP服务器 --表面思科ACI(APIC)操作。
- Intersight FastMCP服务器 --思科Intersight库存和政策操作。
注: 存储库不提供依赖关系。使用适合您环境的工作流安装它们(uv,pip等等)。以下示例假设uv.
特性
- APIC(用户名/密码)和Intersight(承载令牌)的安全身份验证。
- 常见ACI任务的工具:
- 列出租户和应用程序配置文件。 - 在应用程序配置文件下检查EPG。 - 列出VRF、网桥域、合约、筛选器、L3 Outs、域、VLAN池、静态路径绑定、硬件清单、故障、接口统计、策略对象和操作端点数据。 - 创建或删除租户。
- 每会话APIC连接覆盖,因此每个MCP客户端都可以针对自己的结构,而无需重新启动服务器。
- 通过环境变量或
.env文件。 - 设备注册(加上过滤搜索)、目标、工作流执行、计算清单、服务器配置文件、模板、配置助手、警报和结构互连的间隙覆盖。
- 作为适用于Codex/Claude Desktop集成的MCP HTTP服务器运行。
入门指南
- 安装依赖项(选择您的工作流):
# Option A: use uv
uv sync
# Option B: standard pip/venv
python3 -m venv .venv
source .venv/bin/activate
pip install -e .- 提供ACI证书。导出环境变量或复制
.env.example并对其进行编辑:
cp .env.example .env- 运行服务器:
# With uv
uv run aci-mcp-server --host 0.0.0.0 --port 8000
# With vanilla Python (after activating your venv if used)
python -m aci_mcp_server.main --host 0.0.0.0 --port 8000- 使用HTTP端点配置MCP兼容客户端,例如:
{
"transport": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}运行Intersight服务器
- 按照上述说明安装依赖项。
- 通过环境变量或
.env文件(预生成INTERSIGHT_API_TOKEN或aINTERSIGHT_API_KEY_ID加INTERSIGHT_API_PRIVATE_KEY(_PATH)).
- 运行服务器:
# With uv
uv run intersight-mcp-server --host 0.0.0.0 --port 8001
# With vanilla Python
python -m intersight_mcp_server.main --host 0.0.0.0 --port 8001- 配置您的MCP客户端以连接到Intersight端点(默认
http://localhost:8001/mcp).
配置
自动配置基础设施
| 变量 | 必填 | 描述 |
|---|---|---|
ACI_BASE_URL | ✅ | APIC实例的基本URL,例如。 https://apic.example.com. |
ACI_USERNAME | ✅ | 用于APIC登录的用户名。 |
ACI_PASSWORD | ✅ | 用于APIC登录的密码(考虑生产中的机密管理)。 |
ACI_VERIFY_TLS | ❌ | 吃起来 false 跳过TLS验证(仅限开发)。 |
ACI_REQUEST_TIMEOUT | ❌ | 请求超时(秒);默认值为30.0。 |
ACI_TENANT_PROTECT_TOKEN | ❌ | 如果设置,调用者必须将相同的令牌传递给 delete_tenant 以避免意外删除。 |
Intersight
| 变量 | 必填 | 描述 |
|---|---|---|
INTERSIGHT_BASE_URL | ✅ | Intersight租户的基本URL,例如。 https://intersight.com. |
INTERSIGHT_API_TOKEN | ⚠️ | 从Intersight API密钥生成的承载令牌(前者 INTERSIGHT_ACCESS_TOKEN).提供这个 或 下面的密钥对。 |
INTERSIGHT_API_KEY_ID | ⚠️ | API密钥标识符(看起来像 5ddf.../6335.../68f9...).在本地生成签名时需要。 |
INTERSIGHT_API_PRIVATE_KEY | ⚠️ | PEM私钥内容(使用 \n 用于换行)。 |
INTERSIGHT_API_PRIVATE_KEY_PATH | ⚠️ | 前一个变量的替代方案——磁盘上PEM文件的路径。 |
INTERSIGHT_VERIFY_TLS | ❌ | 吃起来 false 跳过TLS验证(仅限开发人员)。 |
INTERSIGHT_REQUEST_TIMEOUT | ❌ | 请求超时(秒);默认值为30.0。 |
INTERSIGHT_PAGE_SIZE | ❌ | 迭代分页结果时的页面大小(默认值200)。 |
引用值(例如。 ACI_USERNAME="admin")支持并有助于保持凭据的可读性 .env 文件夹。
可用工具
ACI服务器
list_tenants()--返回所有租户的元数据。list_application_profiles(tenant)--列出租户内的应用程序配置文件。list_vrfs(tenant)--列出租户的VRF(上下文)。list_bridge_domains(tenant)--列出租户内的网桥域。list_contracts(tenant)--列出为租户配置的合同。list_contract_relationships(tenant, contract?)--列出引用合同的EPG/提供商/消费者关系,可选择按合同名称过滤。list_epg_contracts(tenant, app_profile, epg, contract_name?, relationship_type?)--列出EPG提供或使用的合同,并带有可选过滤器。list_contract_subjects(tenant)--列出租户内的合同主题。list_contract_subject_filters(tenant, contract, subject)--列出绑定到合同主题的筛选器。list_filters(tenant)--列出为租户定义的筛选器。list_filter_entries(tenant, filter)--列出租户筛选器内配置的条目。list_l3outs(tenant)--列出租户的L3 Outs(外部路由网络)。list_physical_domains()--列出结构物理域。list_vmm_domains()--列出VMM域。list_aeps()--列出可连接的访问实体配置文件。list_aep_domains(aep)--列出与AEP关联的域。list_access_policies()--列出访问端口策略组。list_access_policy_aep_bindings(policy)--列出访问策略的AEP绑定。list_cdp_policies()--列出CDP接口策略。list_lldp_policies()--列出LLDP接口策略。list_aaep_bindings()--列出AAEP以切换配置文件绑定。list_switch_profiles()--列出交换机配置文件。list_span_sessions()--列出SPAN目标组。list_qos_policies()--列出QoS自定义策略。list_endpoints(tenant?, app_profile?, epg?, mac_contains?)--列出具有可选作用域的fvCEp端点。list_ip_endpoints(tenant?, app_profile?, epg?, ip_contains?)--列出具有可选作用域的fvIp记录。list_mac_reachability(mac_contains?, epg_contains?)--列出结构MAC可达性条目。list_maintenance_policies()--列出维护策略。list_firmware_policies()--列出固件控制器策略。list_fabric_nodes()--列出具有序列、角色和模型的结构节点。list_system_info()--列出包含软件详细信息的顶级系统条目。list_firmware_versions()--列出节点/组件的运行固件条目。list_faults(severity?, ack?)--列出具有可选严重性或确认过滤器的活动故障(警报)。list_fault_records(limit?)--列出最近的历史故障记录。list_vlan_pools()--列出VLAN池及其封装块。list_interface_stats(contains?)--列出接口操作数据和ethpm遥测数据,可选择过滤。list_epgs(tenant, app_profile)--列出应用程序配置文件的EPG。list_bridge_domain_subnets(tenant, bridge_domain)--列出连接到网桥域的子网。list_epg_static_paths(tenant, app_profile, epg)--列出EPG上的静态路径绑定。create_physical_domain(name, description?, vlan_pool_dn?)/delete_physical_domain(name)--管理物理域。create_vmm_domain(provider, name, description?)/delete_vmm_domain(provider, name)--管理VMM域。bind_aep_to_domain(aep, domain_dn, instr_imedcy?, res_imedcy?)/unbind_aep_from_domain(aep, domain_dn)--管理AEP域绑定。create_static_path_binding(tenant, app_profile, epg, path_dn, encap, …)/delete_static_path_binding(tenant, app_profile, epg, path_dn)--管理静态路径绑定。create_aep(name, description?)/delete_aep(name)--管理可连接的访问实体配置文件(AAEP)。create_vrf(tenant, vrf, description?)/delete_vrf(tenant, vrf)--管理租户内部的VRF。create_bridge_domain(tenant, bd, description?, vrf?, arp_flood?)/delete_bridge_domain(tenant, bd)--管理网桥域。create_application_profile(tenant, ap, description?)/delete_application_profile(tenant, ap)--管理应用程序配置文件。create_epg(tenant, ap, epg, description?, bridge_domain?)/delete_epg(tenant, ap, epg)--管理端点组。create_tenant(name, description?)--如果租户不存在,则创建租户。delete_tenant(name)--删除租户(可选择需要确认令牌)。set_session_aci_connection(base_url, username, password, verify_tls?, request_timeout?)--覆盖当前MCP会话的APIC连接详细信息。get_session_aci_connection()--显示当前应用于此会话的APIC终结点和用户名。clear_session_aci_connection()--删除会话覆盖并恢复到服务器默认值。
每个工具都会发出结构化的MCP响应,Codex或其他客户端可以呈现这些响应。
Intersight服务器
list_device_registrations()--显示已注册的设备连接器。search_device_registrations(hostname_contains?, connector_state?)--按主机名子字符串或连接器状态筛选设备连接器。list_targets(name_contains?, health?, connection_status?, target_type?)--列出具有可选筛选器的声明目标。get_target_details(target_moid?, name?)--检索特定目标的详细元数据。list_physical_compute()--报告物理计算库存摘要。list_server_profiles()--列出服务器配置文件及其分配。get_server_profile(profile_moid)--通过Moid检索特定的服务器配置文件。create_domain_profile(name, organization_moid, description?, fabric_moid?)--为UCS结构配置创建域配置文件。create_chassis_profile(name, organization_moid, description?, target_platform?)--创建准备部署的机箱配置文件。create_server_profile(name, organization_moid, description?, template_moid?, target_server_moid?)--创建服务器配置文件,可以选择绑定模板或服务器。create_policy(resource_path, name, organization_moid, description?, additional_properties?)--发布到任何Intersight策略端点(例如NTP、IMC访问),同时允许您提供特定于策略的字段。list_server_profile_templates()--列出可用的服务器配置文件模板。list_workflows(status?)--列出工作流执行情况,可选择按状态筛选。list_alarms(severity?)--列出当前警报,可选择按严重程度过滤。list_fabric_interconnects()--列出由Intersight管理的结构互连。
开发说明
- 代码是
async/await驱动和依赖httpx.AsyncClient. - 测试不包括在内。对于生产环境,使用APIC沙箱添加集成测试。
- 将此存储库视为起点——扩展工具集以匹配您的操作清单。
许可证
baavtan@cisco.com
麻省理工学院
