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
- Set
THOUSANDEYES_BEARER_TOKEN. Either export it in your shell, drop it in a.env(copy.env.example) in the directory you run from, or — when an MCP client launches the server — put it in the client's serverenvblock. 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.
The YAML file is optional — env vars alone are enough to run, which is what
makes uv tool install + an MCP client work (the client's working directory
isn't your project dir, so no YAML is on disk). Configuration precedence,
highest first: CLI flags → environment variables → YAML file → defaults.
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.
Metadata
Release files for thousand-eyes-super-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| thousand_eyes_super_mcp-0.3.0.tar.gz | 389.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| thousand_eyes_super_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 443.4 kB
Release files / thousand_eyes_super_mcp-0.3.0.tar.gz
| Download URL | thousand_eyes_super_mcp-0.3.0.tar.gz |
|---|---|
| Size | 389.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d615a561e18a33dd264186f5d26056e9b910b60c1f27ad8949717be89c191a34
|
|
BLAKE2b-256 checksum How to use checksums |
1d9429557c9a33c8c5527447048f34cc8d6b37e2b030519bb9da59ecaf7d3ef9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.
Transparency logRelease files / thousand_eyes_super_mcp-0.3.0-py3-none-any.whl
| Download URL | thousand_eyes_super_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 53.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
33816903db3ae2219627df2fb376c6777fa53ae282df620542a33a178da0751c
|
|
BLAKE2b-256 checksum How to use checksums |
390c06767288d2ffa7f1815e31c663ac75f6218fc8826dbc6441007b7f5ed71b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.
Transparency log