Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Governed Cisco Meraki + ACI fabric ops: uplink RCA, ACI endpoint trace; 37 tools with audit/undo.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"fabric-aiops": {
"command": "uvx",
"args": [
"fabric-aiops"
]
}
}
}在终端中运行这条命令
claude mcp add fabric-aiops -- uvx fabric-aiops粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"fabric-aiops": {
"command": "uvx",
"args": [
"fabric-aiops"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"fabric-aiops": {
"type": "stdio",
"command": "uvx",
"args": [
"fabric-aiops"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 AIops-tools 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.15.0)于8天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Signoff
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Audit availability: Real writes require a committed
pendingaudit row and stop before contacting the platform if storage is unavailable. Reads and previews may continue with a warning; new audit rows store outcome summaries rather than full responses.
Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Cisco, Meraki, Arista, Ubiquiti, or any network-controller vendor. "Cisco", "Meraki", "Catalyst", "DNA Center", "Arista", "CloudVision", "Ubiquiti", "UniFi", "ACI", "APIC" and all product/trademark names belong to their respective owners. MIT licensed.
Governed AI-ops for network fabrics managed through a controller — the Cisco Meraki Dashboard API (the reference platform, full read + write), Cisco Catalyst Center (formerly DNA Center; read subset), Arista CloudVision Portal (CVP) (read subset), and UniFi Network (self-hosted controller or UniFi OS console; read subset + device restart), plus read-only Cisco ACI (APIC) endpoint path reconstruction and faults — with a built-in governance harness: unified audit log, token/runaway budget guard, undo-token recording, and descriptive risk tiers. Multi-platform by construction: a registry keyed by platform maps every *canonical operation* onto each controller's REST API (path templates + response adapters), so adding a controller is a registry entry, never new ops/CLI/MCP surface. An operation a platform doesn't map returns a clear teaching error ("not supported on X yet — open an issue"), never a silent no-op. No platform has yet been exercised against a live controller by this tool; the ACI reads are the one part built from real controller responses (anonymized APIC payloads a production user supplied) — see docs/VERIFICATION.md.
Three flagship signature analyses, plus the guarded reads and writes around them:
fabric-aiops ...): init, overview, org, network, device, client, health, aci, remediate, secret, doctor, mcp.fabric-aiops mcp or fabric-aiops-mcp): 37 tools (28 read, 9 write), every one wrapped with the bundled @governed_tool harness.username:password / CVP service-account token / UniFi API key) lives in an encrypted store ~/.fabric-aiops/secrets.enc (Fernet + scrypt) — never plaintext on disk. Unlock with a master password from FABRIC_AIOPS_MASTER_PASSWORD (MCP/CI) or an interactive prompt (CLI).update_device/update_network_vlan restore prior values; claim↔remove; bind↔unbind/rebind). Irreversible ops (reboot_device, blink_device_leds) record the prior state for audit but declare no undo.--dry-run and requires double confirmation; every write MCP tool takes a dry_run preview.| Domain | Tools | Count | R/W |
|---|---|---|---|
| Overview | overview | 1 | read |
| Organizations | org_list, org_get, org_licensing, org_admins, org_device_statuses, org_api_requests | 6 | read |
| Networks | network_list, network_get, network_vlans, network_alerts, network_traffic | 5 | read |
| Devices | device_inventory, device_status, device_uplinks, switch_ports, wireless_ssids | 5 | read |
| Clients | client_list, client_get, client_usage, client_connectivity | 4 | read |
| Health (flagship) | uplink_loss_and_latency_rca, network_health_score, config_template_drift | 3 | read |
| Cisco ACI (APIC only) | aci_endpoint_trace, aci_epg_segment, aci_faults_list | 3 | read |
| Remediation | reboot_device, claim_devices_into_network, remove_device_from_network, bind_network_to_template, unbind_network_from_template | 5 | write (high) |
update_device, update_network_vlan | 2 | write (medium) | |
blink_device_leds | 1 | write (low) | |
| Undo | undo_list | 1 | read |
undo_apply | 1 | write (medium) |
network_health_score and config_template_drift are injected-only (they score data you already hold); uplink_loss_and_latency_rca accepts injected records for offline analysis or pulls live from a configured target. Device models carry a product-type prefix: MX appliance, MS switch, MR wireless AP, MV camera, MG cellular gateway.
One tool, five controller platforms. For the four in the table below the ops/CLI/MCP surface is identical everywhere; each platform maps the canonical operations it supports and raises a teaching error for the rest ("not supported on yet — open an issue or PR"). ACI maps none of these — see Cisco ACI below.
| Canonical operation | meraki | catalyst | cvp | unifi |
|---|---|---|---|---|
overview (org/site/container rollup) | ✅ | ✅ | ✅ | ✅ |
org_list / org_get | ✅ | ✅ sites | ✅ containers | ✅ sites (list; get ❌) |
org_licensing, org_api_requests | ✅ | ❌ | ❌ | ❌ |
org_admins | ✅ | ❌ | ✅ users | ❌ |
org_device_statuses | ✅ | ✅ device-health | ✅ inventory + streaming status | ✅ stat/device (state, uptime, firmware) |
network_list / network_get | ✅ | ✅ site-health / site | ✅ containers | ✅ sites / stat/health (subsystem rollup) |
network_vlans, network_traffic | ✅ | ❌ | ❌ | ❌ |
network_alerts | ✅ | ✅ issues (P1→critical, P2→warning) | ✅ events | ✅ alarms (*_Lost_Contact→critical) |
device_inventory, device_status | ✅ | ✅ network-device | ✅ inventory (+ complianceCode drift signal) | ✅ stat/device (id = device MAC) |
device_uplinks | ✅ | ❌ | ❌ | ❌ |
switch_ports | ✅ | ✅ interface stats (pass the device uuid) | ❌ | ✅ device port_table (pass the device MAC) |
wireless_ssids | ✅ | ❌ | ❌ | ❌ |
client_list / client_get | ✅ | ✅ client-health (aggregate) / client-detail (by MAC) | ❌ | ✅ stat/sta (connected) / stat/user (by MAC) |
client_usage, client_connectivity | ✅ | ❌ | ❌ | ❌ |
uplink_loss_and_latency_rca (live pull) | ✅ | ❌ (injected records still work) | ❌ (injected records still work) | ❌ (injected records still work) |
network_health_score, config_template_drift (injected-only) | ✅ | ✅ | ✅ | ✅ |
reboot_device | ✅ | ❌ teaching error | ❌ teaching error | ✅ cmd/devmgr restart-device |
| The other 7 writes (blink/update/claim/remove/bind/unbind/VLAN) | ✅ | ❌ teaching error | ❌ teaching error | ❌ teaching error |
Concept mapping: canonical *organizations/networks* are Catalyst Center sites, CVP containers, and UniFi sites (the canonical id is the site's short name — the /api/s/{site}/ path segment); all have one global tree, so the org scope does not filter their lists. On unifi, device-scoped calls (device get / switch_ports / reboot) fill the site from the target's default org_id — set it in config.yaml (or the init wizard). Writes are Meraki-only except UniFi device restart — Catalyst Center and CVP change models (task/configlet workflows) don't map cleanly onto these canonical writes, so each write fails fast with a teaching error *before* any controller call (never a silent no-op). CVP config-drift surfaces through device_inventory (complianceCode/complianceIndication per device) and network_alerts (events); configlet-content retrieval and deep pagination on catalyst/cvp/unifi are known deferrals.
ACI has two axes — tenant → VRF → bridge domain → EPG, and pod → node → interface — and neither is an organization → network → device tree. Rather than make every network_id mean something different per call, an aci target answers the canonical tools with a teaching error and gets three read-only ACI-native tools that take ACI references (MAC/IP, tenant/app/EPG names, DNs):
| Tool (CLI) | What it answers |
|---|---|
aci_endpoint_trace (aci trace --mac/--ip) | Where is this endpoint and what carries it: attachment (pod / leaf / interface or vPC) → EPG → bridge domain → VRF → the EPG's contracts → filter entries, plus faults whose DN names the EPG or the attachment interface |
aci_epg_segment (aci segment TENANT APP EPG) | The same EPG → BD → VRF → contracts chain from an EPG name |
aci_faults_list (aci faults) | Fabric faults, worst severity first |
How to read them:
staticPathResolved: true means the fabric is configured to carry the endpoint, not that traffic flows. Nothing is written to the APIC and no troubleshooting session is created.tDn), so cross-tenant links into common are followed; a relation that is not formed is a finding with its state.delegated record mirrors a fault on another object. A cleared fault keeps the description it had when raised.notChecked): vzAny contracts, taboo contracts, imported contract interfaces, preferred-group peers, service graphs / L3Out.Leaf/spine inventory and interface state (fabricNode, topSystem, l1PhysIf) are not in this release — they will be built once real responses for those classes are available, as the ones above were.
| Platform | platform: | Secret stored (encrypted) | Auth on the wire | Base URL |
|---|---|---|---|---|
| Cisco Meraki Dashboard | meraki | API key (Dashboard → Organization → Settings → API access) | Authorization: Bearer (or auth_style: meraki-key → X-Cisco-Meraki-API-Key) | default https://api.meraki.com/api/v1 |
| Cisco Catalyst Center | catalyst | username:password (one string) | exchanged via POST /dna/system/api/v1/auth/token (HTTP Basic) for a ~1 h X-Auth-Token, auto-refreshed once on a 401 | required, e.g. https:// |
| Arista CloudVision Portal | cvp | service-account token (Settings → Access Control → Service Accounts) | Authorization: Bearer | required, e.g. https:// |
| Cisco ACI (APIC) | aci | username:password (one string; a read-only role is enough — every ACI read is a GET, only the login is a POST) | POST /api/aaaLogin.json opens a session carried as a cookie; extended via /api/aaaRefresh.json at half its lifetime; one fresh login on a 401/403 (APIC reports an expired session as 403) | required, e.g. https:// |
| UniFi Network | unifi | API key (UniFi OS: Settings → Control Plane → Integrations; self-hosted Network Server 9.0+) | X-API-KEY (stateless; legacy cookie login is a known deferral) | required — classic controller https:// :8443, or UniFi OS console `https:// /proxy/net
只显示了开头部分;其余内容请在仓库中阅读