Skip to main content

FastMCP server for the Cisco Catalyst SD-WAN Manager (vManage) API, generated dynamically from the official OpenAPI specs.

Project description

catalyst-sdwan-super-mcp

lint test docs PyPI License: Apache 2.0

A FastMCP server that exposes the Cisco Catalyst SD-WAN Manager (vManage) REST API as MCP tools, so any MCP-compatible LLM client (Claude Desktop, Claude Code, Cursor, …) can query and manage your SD-WAN overlay.

Tools are generated dynamically from the official OpenAPI specs — drop in a new spec, the tools rebuild themselves. No per-version Python.

Documentation: https://thomaschristory.github.io/catalyst-sdwan-super-mcp/


Try it in 60 seconds against the Cisco DevNet sandbox

git clone https://github.com/thomaschristory/catalyst-sdwan-super-mcp.git
cd catalyst-sdwan-super-mcp
uv sync

# Credentials for Cisco's public always-on SD-WAN sandbox
cat > .env <<'EOF'
VMANAGE_USERNAME=devnetuser
VMANAGE_PASSWORD=RG!_Yw919_83
EOF

uv run sdwan-mcp        # stdio, read-only, adaptive tool splitting (default)

The shipped sdwan-mcp.yaml points at sandbox-sdwan-2.cisco.com and ships specs for vManage 20.15, 20.16, and 20.18 in specs/. 20.18 is the default. You don't need a vManage of your own to try it.

Supported vManage versions: 20.15+. Older releases are out of scope — see issue #13.

Install from PyPI

uv tool install catalyst-sdwan-super-mcp
sdwan-mcp --help

The PyPI package ships the server only — no bundled specs. On first run the loader auto-fetches the spec for sdwan.active_version from developer.cisco.com and writes it under sdwan.specs_dir (set sdwan.auto_fetch: false to opt out, e.g. for air-gapped deployments). For predictable behaviour you can pre-warm with sdwan-mcp fetch --version 20.18. Full instructions: docs/getting-started/install.md.


What you get

  • Adaptive tool splitting. A size-driven splitter (max_actions_per_tool, default 150) chops huge OpenAPI sections into right-sized tools — 360 tools on 20.18 RW out of the box, all under the cap. See docs/guides/tool-splitting.md.
  • Read-only by default. --read-write registers POST/PUT/DELETE/PATCH explicitly.
  • Two auth modes to vManage: JWT (vManage 20.18.1+) and JSESSIONID + XSRF (older).
  • Three transports: stdio, SSE, streamable-HTTP. The HTTP transports ship with first-class bearer-token auth (transport.auth.type: bearer) and auto-demote non-loopback binds to 127.0.0.1 when no auth is configured. See docs/guides/mcp-clients.md.
  • Response pagination for bulk endpoints. The dispatcher auto-follows scroll and offset endpoints up to a configurable cap and returns a stitched payload with a resumable cursor. See docs/guides/pagination.md.
  • Configurable retry + timeout on the httpx client. Transient 5xx and connection errors retry with exponential backoff + jitter; mutating verbs are skipped by default. See docs/reference/configuration.md.
  • Auto-fetch specs. Bump sdwan.active_version and the loader pulls the matching spec from developer.cisco.com on startup. Pre-warm explicitly with sdwan-mcp fetch --version <V> or list known versions with sdwan-mcp list-versions. See docs/guides/spec-versions.md.
  • Version diff: sdwan-mcp --diff 20.15 20.18 shows added/removed/changed operations before upgrade.
  • Docker: multi-stage image, specs mounted as a volume so versions ship without rebuilding.

Project layout

sdwan_mcp/          source package
  server.py         entrypoint, CLI, subcommands (fetch, list-versions)
  config.py         YAML + env interpolation
  loader.py         spec loading, adaptive splitting, indexing
  auth.py           JWT + session login to vManage
  transport_auth.py bearer-token middleware for SSE / streamable-HTTP
  dispatcher.py     httpx client, retry + timeout, param routing
  pagination.py     scroll + offset auto-follow
  fetcher/          live spec ingestion from developer.cisco.com (20.16+)
  tools.py          dynamic MCP tool registration
  diff.py           version diff utility
tests/              pytest suite (respx for HTTP)
docs/               mkdocs-material site, deployed to GitHub Pages
specs/{version}/    OpenAPI YAML/JSON, one folder per vManage version
.github/workflows/  lint, test, docker, docs, release

Architecture quick look

See docs/architecture/overview.md. At a glance:

LLM ──(MCP)──► FastMCP ──► tools.py ──► dispatcher.py ──► httpx ──► vManage
                  ▲                           │
                  │           auth.py ◄───────┘
              loader.py
                  ▲
              specs/{version}/*.{yaml,json}

Status

Pre-1.0. Read-only is the safe default and the recommended starting posture; --read-write opt-in is exercised against the DevNet sandbox. Released versions are tagged on PyPI and tracked in CHANGELOG.md. Open work is on the issue tracker.

License: Apache 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

catalyst_sdwan_super_mcp-0.4.1.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

catalyst_sdwan_super_mcp-0.4.1-py3-none-any.whl (55.4 kB view details)

Uploaded Python 3

File details

Details for the file catalyst_sdwan_super_mcp-0.4.1.tar.gz.

File metadata

  • Download URL: catalyst_sdwan_super_mcp-0.4.1.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for catalyst_sdwan_super_mcp-0.4.1.tar.gz
Algorithm Hash digest
SHA256 c75091a3434a14ffc8b8fd34687229ae8aaa004d6f9f59e823f7f2a96bf1b003
MD5 7df7b81445a0d2498f5cb5b305c21e53
BLAKE2b-256 563a3af2e2b5b7aa7fc1f183358f30cb91ae917c532a1c3bf4a961da28d10df5

See more details on using hashes here.

Provenance

The following attestation bundles were made for catalyst_sdwan_super_mcp-0.4.1.tar.gz:

Publisher: release.yml on thomaschristory/catalyst-sdwan-super-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file catalyst_sdwan_super_mcp-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for catalyst_sdwan_super_mcp-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7efcebf5fe867a8cebadc235481b78721f5215117813eb20c537cd9067b3b170
MD5 af9e0c1a034d404edb38b75911d8e347
BLAKE2b-256 81749ba00e56c40fcbe6908317d5b8a95061d8f7e470c6cb1d3432fb528b0b3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for catalyst_sdwan_super_mcp-0.4.1-py3-none-any.whl:

Publisher: release.yml on thomaschristory/catalyst-sdwan-super-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page