
Cisco Umbrella
io.github.WYRE-AI由 GitHub 帳號 WYRE-AI 發布v1.0.3更新於 Oct 29, 2026
MCP server for Cisco Umbrella's deployment, admin, policy, reporting, and investigate APIs.
概覽
針對 Cisco Umbrella 的唯讀 MCP 伺服器,讓助理檢視部署清單、管理員使用者與角色、原則、報表以及網域調查資訊。
- 可以做什麼
- 列出部署清單:公網與內部網路、站點、虛擬設備、漫遊用戶端電腦及內部繞過網域
- 列出管理主控台的角色、使用者與已設定的 API 金鑰
- 列出目標(允許/封鎖)清單及其中的目標項目
- 取得報表:熱門目標、請求總量、熱門分類、活動日誌、身分、App Discovery 應用程式及 API 用量
- 調查網域:分類、風險與安全評分、全球熱門網域排名、樣本、查詢量及被動 DNS 記錄
- 在清單與報表工具中透過 additionalParams 物件原樣傳遞額外的 Cisco 查詢篩選條件
- 適用情境
- 適合需要助理回答組織 Cisco Umbrella DNS 安全狀況問題的情境,例如部署了什麼、誰擁有管理員權限、有哪些封鎖清單、報表中出現哪些流量與威脅,或某個網域的風險如何。它是監控與調查連接器,而非佈建工具。
- 執行需求
- 以本機程序(stdio)方式從已發佈的容器映像執行,或透過 HTTP 執行。需要 Umbrella 管理主控台的 API Key 與 API Secret,透過 CISCOUMBRELLA_API_KEY 與 CISCOUMBRELLA_API_SECRET 提供(AUTH_MODE=env),或在閘道模式下於每次請求以 X-CiscoUmbrella-Api-Key 與 X-CiscoUmbrella-Api-Secret 標頭提供。HTTP 模式另需 CONDUIT_S2S_SECRET 與 X-Gateway-S2S 標頭。需要連線至 Cisco API 的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Cisco Umbrella,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Cisco Umbrella MCP Server
MCP server for Cisco Umbrella's NextGen REST API - deployment inventory, admin, policy, reporting, and investigate visibility - for AI assistants and the WYRE Conduit gateway.
Authentication
Create an API Key in the Umbrella admin console (Admin > API Keys, or Console Settings > API Keys on a Multi-org/MSP console) to receive an API Key and API Secret pair.
The secret is shown only once at creation time and cannot be retrieved later - store it somewhere safe immediately.
This server exchanges that pair for a short-lived (1-hour) Bearer access token via POST /auth/v2/token (grant_type=client_credentials, HTTP Basic auth), and handles the exchange and its refresh on expiry internally. Callers only ever need to supply the long-lived API Key/Secret below.
A note on a real discrepancy in Cisco's own documentation: Cisco's published Postman collection (CiscoDevNet/cloud-security, Umbrella/PostmanExamples/umbrella-external-postman-collection.json) encodes the token request as a bare GET with no body, while Cisco's DevNet "Getting Started" and "Quickstart" prose docs both independently specify POST with a grant_type=client_credentials form body. This server follows the prose docs (POST), since two independent doc pages agree and it matches the standard OAuth2 client_credentials flow Cisco names explicitly - but this was not verified against a live credential pair. If token exchange 401s against a real account, try a bare GET with no body before assuming the credentials are bad.
Configuration
Copy .env.example and set the variables below. The stdio transport reads CISCOUMBRELLA_* and does not use CONDUIT_S2S_SECRET.
/health and /healthz stay unauthenticated and do not read credentials.
HTTP authentication
With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/s2s-verify.ts: the header value is t=<unix seconds>,v1=<hex>, where the hex is HMAC-SHA256 of the literal string t=<unix seconds> keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header is HTTP 401, before vendor credentials are read. An empty secret refuses to start unless MCP_ALLOW_INSECURE_DEV=1. A known placeholder (replace-with-a-real-secret, your-s2s-secret, changeme, change-me, placeholder, secret, example, replace-me, s2s-secret, any case) refuses to start even with that flag, so a copied example cannot forge the header.
In AUTH_MODE=gateway, /mcp also requires both X-CiscoUmbrella-Api-Key and X-CiscoUmbrella-Api-Secret. Those headers are the only credential source for that request. A request missing either one returns 401 and does not fall back to CISCOUMBRELLA_* in the process environment.
AUTH_MODE=env still requires a valid X-Gateway-S2S header, then uses CISCOUMBRELLA_API_KEY and CISCOUMBRELLA_API_SECRET from the environment.
Request limits
- HTTP request bodies are capped at 256 KiB (262144 bytes). After the
X-Gateway-S2Scheck passes, aContent-Lengthabove the cap returns 413 with a JSON-RPC error; bodies withoutContent-Lengthare capped by the MCP SDK transport. Unauthenticated requests still get 401 first. tools/callarguments are capped at 10,000 elements (every array item and object key at any depth). Larger inputs return anisErrortool result and are never dispatched.
These limits address CVE-2026-111768 / GHSA-46jr-4wx8-v453 (memory exhaustion during validation) and GHSA-f897-62hf-6gxq (no request body / batch cap).
Tools
Deployments
umbrella_list_networks- list registered public-IP network identities.umbrella_list_internal_networks- list internal (RFC1918) network identities.umbrella_list_sites- list Umbrella sites.umbrella_list_virtual_appliances- list virtual appliances and their status.umbrella_list_roaming_computers- list roaming-client-enrolled computers.umbrella_get_internal_domains- get all internal domains configured to bypass Umbrella DNS.
Admin
umbrella_list_roles- list administrative roles.umbrella_list_users- list admin console users.umbrella_get_user- get a specific admin console user.umbrella_list_api_keys- list configured API keys.
Policies
umbrella_list_destination_lists- list destination (allow/block) lists.umbrella_list_destinations- list destinations within a specific destination list.
Reports
umbrella_top_destinations- most-requested destinations, optionally by traffic type (dns/proxy/firewall).umbrella_total_requests- total request counts, optionally by traffic type.umbrella_top_categories- most-requested content/security categories.umbrella_activity- raw activity log, optionally by traffic type.umbrella_identities- identities (roaming/network/mobile/AD users) with traffic summaries.umbrella_appdiscovery_applications- discovered cloud applications.umbrella_appdiscovery_app_identities- identities observed using a discovered application.umbrella_appdiscovery_app_risk- risk details for a discovered application.umbrella_api_usage_summary/umbrella_api_usage_requests/umbrella_api_usage_responses/umbrella_api_usage_keys- API usage reporting.
Investigate
umbrella_domain_categorization- content/security categorization for a domain.umbrella_domain_risk_score- Cisco's risk score for a domain.umbrella_domain_security_score- detailed security scoring signals for a domain.umbrella_top_most_seen_domains- the top million most globally-popular domains.umbrella_get_samples- malware/file samples for a domain, IP, or URL.umbrella_domain_volume- DNS query volume over time for a domain.umbrella_domain_resource_records- passive DNS resource records for a domain.
Every Reports/Investigate/Deployments/Admin/Policies list tool that Cisco's docs don't fully enumerate the filter set for accepts an optional additionalParams object, passed through verbatim as extra query-string parameters (e.g. categories, identityids, verdict, domains on Reports endpoints) - documented Cisco filters this client doesn't model as first-class arguments.
Scope
This is a v1, read-only surface: this server only implements GET endpoints across Deployments, Admin, Policies, Reports, and Investigate. Explicitly deferred, all real endpoints in Cisco's own Postman collection, out of scope for now:
- Add/remove internal domains (
POST/DELETE /deployments/v2/internaldomains) - Add/remove tunnels (
POST/DELETE /deployments/v2/tunnels) - Add tags and tag/untag devices (
POST /deployments/v2/tags*) - Create/delete users (
POST/DELETE /admin/v2/users) - Create API keys (
POST /admin/v2/apiKeys) - Add/remove destinations on a destination list (
POST/DELETE /policies/v2/destinationlists/{id}/destinations) - Update an App Discovery application's label (
PATCH /reports/v2/appDiscovery/applications/{id})
These are provisioning/mutation actions, out of scope for a read-only monitoring connector - consistent with how other connectors in this wave (Printix, WatchGuard Cloud) deferred provisioning-heavy writes. They can be added as a follow-up if a write-capable v2 is ever needed.
Also explicitly out of scope: the Legacy Umbrella Reporting v1/v2 APIs (different auth, different host - investigate.api.umbrella.com / management.api.umbrella.com) and any Multi-org/MSP child-organization switching via the X-Umbrella-OrgId header - real, documented Cisco behavior, but not covered in enough concrete request/response detail (whether it applies to the token request, every subsequent request, or both) to implement with confidence without a live credential pair to verify against.
Development
Docker
The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Startup still refuses to run without a real CONDUIT_S2S_SECRET. Publish the port on loopback. In gateway mode, Umbrella credentials arrive on each request as headers; they are not read from the environment.
Compose refuses to start when CONDUIT_S2S_SECRET is unset, defaults AUTH_MODE to gateway, publishes 127.0.0.1:8080:8080, and does not set CISCOUMBRELLA_API_KEY, CISCOUMBRELLA_API_SECRET, or env_file:
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses CISCOUMBRELLA_API_KEY and CISCOUMBRELLA_API_SECRET. It is separate from the gateway Compose service above.
Local HTTP without a secret is development-only. It binds 127.0.0.1 (including when MCP_HTTP_HOST is localhost or ::1) and logs a warning. A non-loopback MCP_HTTP_HOST makes startup exit. The container image sets MCP_HTTP_HOST=0.0.0.0, so the bypass inside Docker also needs -e MCP_HTTP_HOST=127.0.0.1. Do not publish that port off loopback.
來源:README.md,提交 817bedc
工具
0版本歷史
3- v1.0.3最新Oct 22, 2026
- v1.0.2Oct 19, 2026
- v1.0.0Sep 20, 2026
評分
已滿足適用檢查項的 40%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。