FastMCP server for the Cisco ThousandEyes API, generated dynamically from the official OpenAPI spec.
Project description
thousand-eyes-super-mcp
FastMCP server for the Cisco ThousandEyes API, generated dynamically from the official OpenAPI spec.
ThousandEyes is Cisco's SaaS for end-to-end network and application visibility — synthetic agent tests, BGP monitoring, internet weather, endpoint experience. This server exposes the entire v7 REST API as MCP tools, ready to drop into Claude Desktop, Claude Code, Cursor, or any MCP-aware client.
Status
Read-only by default. See CHANGELOG.md for the current
release and what changed.
Install
uv tool install thousand-eyes-super-mcp
Configure
- Copy
.env.exampleto.envand fill inTHOUSANDEYES_BEARER_TOKEN. Generate a token at https://app.thousandeyes.com under Account Settings → Users and Roles → Profile → User API Tokens. - (Optional) Edit
thousand-eyes-mcp.yamlfor runtime knobs — transport, splitting cap, retries, pagination, default account group.
Run
thousand-eyes-mcp # stdio (Claude Desktop)
thousand-eyes-mcp --transport sse --host 0.0.0.0 --port 8000
thousand-eyes-mcp --read-write # enable mutating endpoints
CLI subcommands
thousand-eyes-mcp fetch 7.0.88 # download a spec without starting the server
thousand-eyes-mcp fetch --all-known # download every known version
thousand-eyes-mcp list-versions # offline: enumerate known + cached versions
thousand-eyes-mcp discover-versions # [experimental] diff DevNet vs KNOWN_SPEC_URLS
thousand-eyes-mcp --diff 7.0.88 7.0.89 # diff two on-disk spec versions
How it works
- Bearer token auth. ThousandEyes issues long-lived OAuth2 bearer tokens
out-of-band; the dispatcher sets
Authorization: Bearer <token>on every request. No login flow, no refresh. - Dynamic tool generation. At startup, the loader merges every spec file
under
specs/<version>/, groups operations by tag, and splits oversized groups via an adaptive algorithm (section → sub-tag → URL path depth) so no single tool overwhelms the LLM with too many actions. - Stable action names. Derived from
(method, path, tag)rather than upstreamoperationId, so naming stays consistent across spec releases. - Pagination auto-follow. Cursor pagination via
_links.next.hrefand offset/limit pagination are detected from spec parameters and stitched automatically. Override per-call with reserved params_max_pages,_page_size,_auto_follow. - Configurable retry. 429/502/503/504 are retried with exponential
backoff + jitter. Mutating methods are not retried by default; opt in
with
retry_mutating: true. - Transports. stdio (default), SSE, streamable-http. HTTP transports
refuse to bind a non-loopback host with
auth.type=noneunless--insecure-allow-publicis passed.
Docker
docker compose up --build
License
Apache-2.0 — see LICENSE.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file thousand_eyes_super_mcp-0.1.0.tar.gz.
File metadata
- Download URL: thousand_eyes_super_mcp-0.1.0.tar.gz
- Upload date:
- Size: 364.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b1d10401d498be3e545bb99e0ced810ec4421d664edb8c9f2f9879d4968d88e
|
|
| MD5 |
de61766a5cafc67c7bb0d19a717fc89f
|
|
| BLAKE2b-256 |
47cccf133f91b8db63444ba99a73c51ecc45c37a3fad3c1ac85059832efe403e
|
Provenance
The following attestation bundles were made for thousand_eyes_super_mcp-0.1.0.tar.gz:
Publisher:
release.yml on thomaschristory/thousand-eyes-super-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thousand_eyes_super_mcp-0.1.0.tar.gz -
Subject digest:
9b1d10401d498be3e545bb99e0ced810ec4421d664edb8c9f2f9879d4968d88e - Sigstore transparency entry: 1647855217
- Sigstore integration time:
-
Permalink:
thomaschristory/thousand-eyes-super-mcp@da77005fb172cc72e8d134f813b2be32d310d33a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/thomaschristory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@da77005fb172cc72e8d134f813b2be32d310d33a -
Trigger Event:
push
-
Statement type:
File details
Details for the file thousand_eyes_super_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: thousand_eyes_super_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a84dbfbe84a907f1ceac437b7c474b9c9ed554500469f7a8e20e8b122195dbf2
|
|
| MD5 |
4ef0a410cca4cf48ddd77ec3142b3ce1
|
|
| BLAKE2b-256 |
333d74dce4344492dcdbe41cc06152ae91c6b04e67b2da17469267ee86e0c0de
|
Provenance
The following attestation bundles were made for thousand_eyes_super_mcp-0.1.0-py3-none-any.whl:
Publisher:
release.yml on thomaschristory/thousand-eyes-super-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thousand_eyes_super_mcp-0.1.0-py3-none-any.whl -
Subject digest:
a84dbfbe84a907f1ceac437b7c474b9c9ed554500469f7a8e20e8b122195dbf2 - Sigstore transparency entry: 1647855236
- Sigstore integration time:
-
Permalink:
thomaschristory/thousand-eyes-super-mcp@da77005fb172cc72e8d134f813b2be32d310d33a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/thomaschristory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@da77005fb172cc72e8d134f813b2be32d310d33a -
Trigger Event:
push
-
Statement type: