返回市场
aci_mcp服务器

aci_mcp服务器

作者:automateyournetwork10 星标更新:2025-05-20

项目介绍

🚀 ACI FastMCP 服务器

一个模型上下文协议(MCP)服务器,通过结构化的自然语言工具提供对Cisco ACI API的完整CRUD访问。该服务器从可配置的urls.json文件中暴露所有相关的ACI端点,并动态构建用于读取(GET)和写入(POST)操作的工具。

基于FastMCP框架,完全兼容LangGraph、Claude、ChatGPT和VS Code Copilot,用于AI辅助的基础设施操作。


🔧 特性

  • ✅ 基于令牌的Cisco APIC身份验证
  • ✅ 完整支持GETPOST(CRUD就绪,可选PUTDELETE
  • ✅ 支持分组和未分组的ACI端点
  • ✅ 验证并自动封装符合APIC规范的数据负载
  • ✅ 兼容STDIO,可用于Claude、VS Code或LangGraph
  • ✅ 使用.env和结构化日志
  • 🧠 自动发现来自JSON的工具模式

📁 文件夹结构

ACI_MCP/
├── aci_mcp/
│   ├── main.py           # MCP服务器
│   └── urls.json         # 按类别分组的端点
├── .env                  # 你的密钥(APIC_URL, USERNAME, PASSWORD)
├── README.md             # 本文件
🧪 环境变量
在项目的根目录创建一个 .env 文件:

env
复制
编辑
APIC_URL=https://sandboxapicdc.cisco.com
USERNAME=admin
PASSWORD=!v3G@!4@Y
URLS_PATH=aci_mcp/urls.json
🚀 如何运行
🧑‍💻 在VS Code(Copilot / LangGraph)中:
在您的MCP客户端配置中使用以下JSON条目:

json
复制
编辑
"aci": {
  "type": "stdio",
  "command": "wsl",
  "args": [
    "env",
    "APIC_URL=https://sandboxapicdc.cisco.com",
    "USERNAME=admin",
    "PASSWORD=!v3G@!4@Y",
    "URLS_PATH=/home/johncapobianco/ACI_MCP/aci_mcp/urls.json",
    "python3",
    "/home/johncapobianco/ACI_MCP/aci_mcp/main.py"
  ]
}
这将在WSL中启动MCP服务器,使用stdin/stdout进行工具发现和调用。

🤖 在Claude或其他A2A兼容代理中:
Claude兼容助手可以使用此基于STDIO的服务器通过模型上下文协议自动发现工具。

📦 暴露的工具
分组工具(例如BGP、L3、L2):每个组一个工具,具有动态端点选择

未分组工具:每个端点都有自己的工具:

GET工具(例如tenants_get)

POST工具(例如tenants_post)

🧠 示例提示
我的网络中有多少租户?
创建名为MCP_Tenant的租户
获取所有IP地址
显示BGP对等体和路由反射器
获取网络的健康状态
向/api/node/mo/uni/tn-NewTenant.json发布状态“created”

📄 示例POST负载
json
复制
编辑
{
  "fvTenant": {
    "attributes": {
      "name": "MCP_Tenant",
      "rn": "tn-MCP_Tenant",
      "status": "created"
    }
  }
}
确保您包括“status”: “created”和正确的rn(例如,tn-<name>),以便APIC接受POST。

📘 扩展它
您可以轻松扩展此服务器:

在urls.json中添加更多组

[
  {
    "Group": "L3",
    "Endpoints": [
      {
        "URL": "/api/node/class/l3extOut.json",
        "Name": "三层外部"
      },
      {
        "URL": "/api/node/class/l3extDomP.json",
        "Name": "三层域"
      },
      {
        "URL": "/api/node/class/ipv4Addr.json",
        "Name": "IPv4地址"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "L2",
    "Endpoints": [
      {
        "URL": "/api/node/class/l2extOut.json",
        "Name": "二层外部"
      },
      {
        "URL": "/api/node/class/fvnsEncapBlk.json",
        "Name": "VLAN封装块"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Fabric",
    "Endpoints": [
      {
        "URL": "/api/node/class/fabricNode.json",
        "Name": "网络节点"
      },
      {
        "URL": "/api/node/class/fabricPod.json",
        "Name": "网络模块"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Access Policies",
    "Endpoints": [
      {
        "URL": "/api/node/class/infraSpineP.json",
        "Name": "脊柱交换机策略"
      },
      {
        "URL": "/api/node/class/infraAccBndlGrp.json",
        "Name": "接入捆绑组"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Contracts",
    "Endpoints": [
      {
        "URL": "/api/node/class/vzBrCP.json",
        "Name": "合同"
      },
      {
        "URL": "/api/node/class/vzEntry.json",
        "Name": "vz条目"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "BGP",
    "Endpoints": [
      {
        "URL": "/api/node/class/bgpRRNodePEp.json",
        "Name": "BGP路由反射器"
      },
      {
        "URL": "/api/node/class/bgpDom.json",
        "Name": "BGP域"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Interfaces",
    "Endpoints": [
      {
        "URL": "/api/node/class/infraPortS.json",
        "Name": "接口策略"
      },
      {
        "URL": "/api/node/class/pkiFabricNodeSSLCertificate.json",
        "Name": "网络节点SSL证书"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Access Control",
    "Endpoints": [
      {
        "URL": "/api/node/class/actrlEntity.json",
        "Name": "访问控制实体"
      },
      {
        "URL": "/api/node/class/actrlInst.json",
        "Name": "访问控制实例"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Compute",
    "Endpoints": [
      {
        "URL": "/api/node/class/compCtrlr.json",
        "Name": "计算控制器"
      },
      {
        "URL": "/api/node/class/compDom.json",
        "Name": "计算域"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "CDP",
    "Endpoints": [
      {
        "URL": "/api/node/class/cdpAdjEp.json",
        "Name": "CDP邻接端点"
      },
      {
        "URL": "/api/node/class/cdpEntity.json",
        "Name": "CDP实体"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "Equipment",
    "Endpoints": [
      {
        "URL": "/api/node/class/eqptBSlot.json",
        "Name": "设备板槽"
      },
      {
        "URL": "/api/node/class/eqptBoard.json",
        "Name": "设备板"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "LLDP",
    "Endpoints": [
      {
        "URL": "/api/node/class/lldpAdjEp.json",
        "Name": "LLDP邻接端点"
      },
      {
        "URL": "/api/node/class/lldpEntity.json",
        "Name": "LLDP实体"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "Group": "VPC",
    "Endpoints": [
      {
        "URL": "/api/node/class/vpcDom.json",
        "Name": "VPC域"
      },
      {
        "URL": "/api/node/class/vpcEntity.json",
        "Name": "VPC实体"
      },
      {
        以下省略...
      }
    ]
  },
  {
    "URL": "/api/node/class/fvTenant.json",
    "Name": "租户"
  },
  {
    "URL": "/api/node/mo/uni.json",
    "Name": "在根处创建租户"
  },
  {
    "URL": "/api/node/class/fvAEPg.json",
    "Name": "端点组"
  },
  {
    "URL": "/api/node/class/fvBD.json",
    "Name": "桥接域"
  },
  {
    "URL": "/api/node/class/fvCtx.json",
    "Name": "上下文"
  },
  {
    "URL": "/api/node/class/fvAp.json",
    "Name": "应用配置文件"
  },
  {
    "URL": "/api/node/class/topSystem.json",
    "Name": ""
  },
  {
    "URL": "/api/node/class/fvSubnet.json",
    "Name": ""
  },
  {
    "URL": "/api/node/class/fvCEp.json",
    "Name": "子网"
  },
  {
    "URL": "/api/node/class/infraNodeP.json",
    "Name": "叶交换机配置文件"
  },
  {
    "URL": "/api/node/class/infraAttEntityP.json",
    "Name": "可连接接入实体配置文件"
  },
  {
    "URL": "/api/node/class/physDomP.json",
    "Name": "物理域"
  },
  {
    "URL": "/api/node/class/qosClass.json",
    "Name": "服务质量类"
  },
  {
    "URL": "/api/node/class/faultSummary.json",
    "Name": "故障摘要"
  },
  {
    "URL": "/api/node/class/fvIp.json",
    "Name": "IP地址"
  },
  {
    "URL": "/api/node/class/licenseEntitlement.json",
    "Name": "许可权限"
  },
  {
    "URL": "/api/node/class/infraProfile.json",
    "Name": "接口配置文件"
  },
  {
    "URL": "/api/node/class/aaaUser.json",
    "Name": "用户"
  },
  {
    "URL": "/api/node/class/aaaDomain.json",
    "Name": "安全域"
  },
  {
    "URL": "/api/node/mo/topology/health.json",
    "Name": "健康"
  },
  {
    "URL": "/api/node/class/topSystem.json?query-target=subtree&target-subtree-class=firmwareCtrlrRunning",
    "Name": "控制器固件运行"
  },
  {
    "URL": "/api/node/mo/topology/pod-1/node-1/av.json?query-target=children&target-subtree-class=infraWiNode",
    "Name": "有线节点(InfraWiredNodes)"
  },
  {
    "URL": "/api/node/class/vnsMDev.json",
    "Name": "设备包"
  },
  {
    "URL": "/api/node/class/arpAdjEp.json",
    "Name": "ARP邻接端点"
  },
  {
    "URL": "/api/node/class/arpDb.json",
    "Name": "ARP数据库"
  },
  {
    "URL": "/api/node/class/arpDom.json",
    "Name": "ARP域"
  },
  {
    "URL": "/api/node/class/arpEntity.json",
    "Name": "ARP实体"
  },
  {
    "URL": "/api/node/class/arpInst.json",
    "Name": "ARP实例"
  },
  {
    "URL": "/api/node/class/fcEntity.json",
    "Name": "光纤通道实体"
  },
  {
    "URL": "/api/node/class/firmwareCardRunning.json",
    "Name": "卡固件运行"
  },
  {
    "URL": "/api/node/class/firmwareRunning.json",
    "Name": "固件运行"
  },
  {
    "URL": "/api/node/class/fvEpPCont.json",
    "Name": "端点配置文件容器"
  },
  {
    "URL": "/api/node/class/fvLocale.json",
    "Name": "区域"
  },
  {
    "URL": "/api/node/class/fvRsBDToOut.json",
    "Name": "桥接域到外部"
  },
  {
    "URL": "/api/node/class/fvRsBd.json",
    "Name": "EPG桥接域链接"
  },
  {
    "URL": "/api/node/class/fvRsCons.json",
    "Name": "合同消费者"
  },
  {
    "URL": "/api/node/class/fvRsCtx.json",
    "Name": "上下文源关系"
  },
  {
    "URL": "/api/node/class/fvRsDomAtt.json",
    "Name": "域附件"
  },
  {
    "URL": "/api/node/class/fvRsPathAtt.json",
    "Name": "路径附件"
  },
  {
    "URL": "/api/node/class/fvRsProv.json",
    "Name": "合同提供商"
  },
  {
    "URL": "/api/node/class/fvRtBd.json",
    "Name": "桥接域目标关系"
  },
  {
    "URL": "/api/node/class/fvRtCtx.json",
    "Name": "上下文目标关系"
  },
  {
    "URL": "/api/node/class/infraFuncP.json",
    "Name": "功能策略"
  },
  {
    "URL": "/api/node/class/infraRsAttEntP.json",
    "Name": "可连接接入实体配置文件源关系"
  },
  {
    "URL": "/api/node/class/infraRsSpAccGrp.json",
    "Name": "脊柱接入策略组"
  },
  {
    "URL": "/api/node/class/infraWiNode.json",
    "Name": "有线节点(拓扑)"
  },
  {
    "URL": "/api/node/class/ipNexthopP.json",
    "Name": "静态路由下一跳策略"
  },
  {
    "URL": "/api/node/class/ipRouteP.json",
    "Name": "路由策略"
  },
  {
    "URL": "/api/node/class/lacpEntity.json",
    "Name": "LACP实体"
  },
  {
    "URL": "/api/node/class/lacpInst.json",
    "Name": "LACP实例"
  },
  {
    "URL": "/api/node/class/vmmCtrlrP.json",
    "Name": "虚拟机管理程序控制器配置文件"
  },
  {
    "URL": "/api/node/class/vmmDomP.json",
    "Name": "虚拟机管理程序域配置文件"
  },
  {
    "URL": "/api/node/class/vmmProvP.json",
    "Name": "虚拟机管理程序提供商配置文件"
  },
  {
    "URL": "/api/node/class/vmmUsrAccP.json",
    "Name": "虚拟机管理程序用户配置文件"
  }
]