Token导航 LogoToken导航TokenDH.com
umbrella MCP logo
安全风控stdio官方级别未说明来源级核验

umbrella MCP

MCP Server

一个基于FastMCP构建的生产级MCP服务器,提供对87+ Cisco Umbrella API端点的全面访问,适用于AI助手直接与Umbrella安全平台交互的场景。

工具数

22

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude网络管理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

demon0110

提供方

demon0110

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

思科伞式MCP服务器

特性

  • OAuth2身份验证 --通过具有60秒刷新缓冲区的客户端凭据流进行自动令牌管理
  • 87+API终点 --涵盖管理、部署、报告、调查和策略部分
  • 16个预先注册的工具 --针对最常见操作(VPN、DNS、威胁、隧道等)的优化工具
  • 通用API网关call_umbrella_api 该工具提供对所有87个以上注册端点的访问
  • 两层缓存 --内存+基于文件的缓存,具有可配置的TTL(默认5分钟)
  • 多租户支持 --可选 X-Umbrella-OrgId 多组织环境的标题
  • 只读模式 --通过阻止写入操作来强制执行安全的审计/报告工作流程
  • 自动401重试 --令牌刷新和身份验证失败时请求重试
  • 方法发现 -搜索并列出运行时可用的API方法

建筑

┌──────────────────────┐     ┌──────────────────────┐     ┌──────────────────────┐
│   Claude Desktop /   │     │   Umbrella MCP       │     │   Cisco Umbrella     │
│   AI Assistant       │────▶│   Server (FastMCP)   │────▶│   API                │
│                      │ MCP │                      │HTTP │                      │
│   - 16 direct tools  │◀────│   - OAuth2 tokens    │◀────│   - Reports v2       │
│   - Generic API call │     │   - Request caching  │     │   - Deployments v2   │
│   - Method discovery │     │   - File caching     │     │   - Policies v2      │
└──────────────────────┘     └──────────────────────┘     │   - Admin v2         │
                                                          │   - Investigate v2   │
                                                          └──────────────────────┘

快速开始

1.克隆存储库

git clone https://github.com/demon0110/umbrella_mcp.git
cd umbrella_mcp

2.获取API凭据

  1. 登录到 思科伞形仪表板
  2. 引导到 管理员→ API密钥 (在左侧边栏的“管理”部分下)
  3. 点击 创建 生成新的API密钥对
  4. 给密钥一个描述性名称(例如。, MCP-Server-Key)
  5. 在...之下 关键范围,选择所需的范围:

- 报告 --DNS活动、主要威胁、主要目的地、摘要所需 - 部署 --漫游计算机、隧道组、站点需要 - 政策 --目标列表、专用资源、访问策略需要 - 调查 --域/IP/URL威胁查找所需 - 管理员 --VPN连接、警报、集成所需

  1. 复制 客户端ID客户端密钥 (秘密只显示一次!)
  2. 注意你的 组织ID (在Umbrella仪表板URL或“管理”下可见→ 账户)
重要提示: 每个API键的作用域为 组织 创建时您已登录。如果您管理多个Umbrella组织,请参阅 多租户设置 在......下面

3.配置环境

cp .env-example .env

单一组织(最常见)

如果您只管理一个Umbrella组织 .env 很简单:

# Required — from Umbrella Admin → API Keys
CISCO_CLIENT_ID="your-client-id-here"
CISCO_CLIENT_SECRET="your-client-secret-here"

# Optional — set this if API calls return data for the wrong org,
# or if your account has access to multiple orgs
CISCO_ORG_ID=""

双基URL(保护伞+安全访问)

Cisco的API平台使用 两个不同的基本URL 取决于端点类型:

基本URL用于端点
https://api.umbrella.com报告、调查、策略DNS活动、代理日志、威胁、摘要
https://api.sse.cisco.com部署、管理隧道组、漫游计算机、VPN连接

MCP服务器自动处理此问题-报告将转到Umbrella,而部署/管理调用将路由到安全访问(SSE)API。两者都使用相同的OAuth2令牌。

如果需要,您可以通过环境变量覆盖任一基本URL:

CISCO_BASE_URL="https://api.umbrella.com"        # Default for reports
CISCO_SSE_BASE_URL="https://api.sse.cisco.com"    # Default for deployments/admin

多租户设置

如果您管理多个Umbrella组织(例如,作为MSP或与父/子组织一起管理),您需要了解API密钥和组织ID是如何协同工作的:

它是如何工作的: 在Umbrella中创建API密钥时,将生成该密钥 在您当前登录的组织的上下文中。密钥的凭据(客户端ID+密钥)对您进行身份验证 CISCO_ORG_ID 告诉API通过 X-Umbrella-OrgId 头球

要设置多租户访问:

  1. 登录您的Umbrella仪表板 母公司/管理组织
  2. 在那里创建一个带有所需作用域的API键
  3. 查找每个子组织的组织ID:

- 首选 管理员→ 账户 在Umbrella仪表板中 - 或者检查URL——它通常包含组织ID(例如。, https://dashboard.umbrella.com/o/1234567/)

  1. CISCO_ORG_ID 在你的 .env 到您要查询的组织
# Required — API key created in the PARENT/management organization
CISCO_CLIENT_ID="your-parent-org-client-id"
CISCO_CLIENT_SECRET="your-parent-org-client-secret"

# Required for multi-tenant — specify which child org to query
# This sends the X-Umbrella-OrgId header with every API request
CISCO_ORG_ID="1234567"
注: 如果你需要同时查询多个组织,你可以运行 单独实例 MCP服务器,每个都有自己的 .env 指向不同的 CISCO_ORG_ID.在你的 claude_desktop_config.json为每个实例赋予一个唯一的名称(例如。, Umbrella_OrgA, Umbrella_OrgB).

示例——并行运行两个组织:

创建单独 .env 文件夹:

# .env.org-a
CISCO_CLIENT_ID="parent-key-client-id"
CISCO_CLIENT_SECRET="parent-key-client-secret"
CISCO_ORG_ID="1111111"

# .env.org-b
CISCO_CLIENT_ID="parent-key-client-id"
CISCO_CLIENT_SECRET="parent-key-client-secret"
CISCO_ORG_ID="2222222"

然后在 claude_desktop_config.json:

{
  "mcpServers": {
    "Umbrella_OrgA": {
      "command": "/path/to/umbrella_mcp/.venv/bin/python",
      "args": ["/path/to/umbrella_mcp/umbrella-mcp.py"],
      "env": {
        "CISCO_CLIENT_ID": "parent-key-client-id",
        "CISCO_CLIENT_SECRET": "parent-key-client-secret",
        "CISCO_ORG_ID": "1111111"
      }
    },
    "Umbrella_OrgB": {
      "command": "/path/to/umbrella_mcp/.venv/bin/python",
      "args": ["/path/to/umbrella_mcp/umbrella-mcp.py"],
      "env": {
        "CISCO_CLIENT_ID": "parent-key-client-id",
        "CISCO_CLIENT_SECRET": "parent-key-client-secret",
        "CISCO_ORG_ID": "2222222"
      }
    }
  }
}
提示: 使用时 env 挡住 claude_desktop_config.json,这些值覆盖了 .env 文件。这是多组织设置中最干净的方法,因为您可以重用相同的代码库。

4.安装依赖项

选项A:使用安装脚本(推荐)

chmod +x setup.sh
./setup.sh

选项B:手动安装

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

5.配置克劳德桌面

将以下内容添加到您的 claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "Umbrella_MCP": {
      "command": "/path/to/umbrella_mcp/.venv/bin/python",
      "args": ["/path/to/umbrella_mcp/umbrella-mcp.py"]
    }
  }
}
注: 服务器从读取凭据 .env 项目目录中的文件。或者,您可以通过 env 块在上面的配置中。

6.重新启动克劳德桌面

保存配置后,完全重新启动Claude Desktop。Umbrella MCP工具应出现在工具列表中。

可用工具

预注册工具(16)

这些是针对最常见工作流程优化的一流MCP工具:

VPN/远程访问

工具说明关键参数
getVpnOverview实时连接+历史VPN事件组合time_from, time_to, limit
getRemoteAccessEvents历史VPN连接/断开连接日志time_from, time_to, limit, offset
注: 实时VPN连接端点(/admin/v2/vpn/userConnections)当没有用户处于活动连接状态时,返回404。这是Umbrella API的正常行为。这 getVpnOverview 工具通过返回一个 no_active_connections 状态而不是错误。

活动和报告

工具说明关键参数
getActivityDns查询DNS活动记录time_from, time_to, verdict, domains
getActivityProxy查询代理/网络活动记录time_from, time_to, verdict
getActivityFirewall查询防火墙活动记录time_from, time_to
getActivityZtna查询ZTNA活动记录time_from, time_to
getSummary获取汇总统计信息time_from, time_to
getTopThreats按计数获取最大威胁time_from, time_to, limit
getTopIdentities获取顶级用户/身份time_from, time_to, limit

网络隧道

工具说明关键参数
getNetworkTunnelGroups列出所有隧道组(安全连接/IPsec)--
getNetworkTunnelGroupStates获取隧道活动/非活动/未建立状态--
getNetworkTunnelGroupById获取特定隧道组的详细配置tunnel_group_id
getNetworkTunnelGroupPeers获取隧道组的IPsec对等体tunnel_group_id
getNetworkTunnelLogs隧道上行/下行事件和流量日志time_from, time_to, limit

部署

工具说明关键参数
getRoamingComputers获取端点清单limit, offset

通用工具(7)

工具说明
call_umbrella_api呼叫 任何 按节和方法名称注册端点
list_all_methods发现可用的API方法(可选择按部分筛选)
search_methods按关键字搜索方法
get_cached_response从磁盘检索分页缓存的响应
cache_stats查看缓存统计信息和配置
cache_clear清空所有内存和基于文件的缓存
get_mcp_config查看当前服务器配置

API节和终结点计数

第节端点描述
管理员12VPN用户、API密钥、ZTNA、集成、警报、租户
部署20隧道组、连接器、漫游计算机、站点、内部域
报告41活动日志、顶级列表、摘要、带宽、部署状态
调查3域名、IP和URL威胁调查
政策11目的地列表、专用资源、访问策略、网络/服务对象

配置参考

所有配置都是通过中的环境变量完成的 .env:

变量必填默认描述
CISCO_CLIENT_ID--Umbrella仪表板上的OAuth2客户端ID
CISCO_CLIENT_SECRET--OAuth2客户端密码
CISCO_ORG_ID--多租户模式的组织ID
CISCO_BASE_URL没有https://api.umbrella.comAPI基本URL
CISCO_AUTH_URL没有{base_url}/auth/v2/tokenOAuth2令牌终结点
ENABLE_CACHING没有true启用/禁用响应缓存
CACHE_TTL_SECONDS没有300缓存生存时间(秒)
READ_ONLY_MODE没有false阻止所有写入(PUT/POST/DELETE)操作
ENABLE_FILE_CACHING没有true为大型响应启用基于磁盘的缓存
MAX_RESPONSE_TOKENS没有5000最大响应令牌大小
MAX_PER_PAGE没有100每个分页请求的最大项目数
RESPONSE_CACHE_DIR没有~/.umbrella_cache自定义缓存目录路径

用法示例

查询被阻止的DNS活动

Tool: getActivityDns
  time_from: "2026-03-01T00:00:00Z"
  time_to: "2026-03-11T23:59:59Z"
  verdict: "blocked"
  limit: 50

获取最大威胁

Tool: getTopThreats
  time_from: "2026-03-01T00:00:00Z"
  time_to: "2026-03-11T23:59:59Z"
  limit: 10

列出活动VPN连接

Tool: getVpnUserConnections
  limit: 50

通过通用工具调用任意端点

Tool: call_umbrella_api
  section: "policies"
  method_name: "getDestinationLists"
  parameters: {}

调查可疑域名

Tool: call_umbrella_api
  section: "investigate"
  method_name: "investigateDomain"
  parameters: {"domain": "suspicious-site.com"}

发现可用方法

Tool: search_methods
  keyword: "tunnel"

缓存

服务器实现了两层缓存策略:

  1. 内存缓存 --基于字典的快速查找最近访问的GET端点。通过方法+路径+参数的SHA-256哈希值设置密钥。
  2. 文件缓存 --持久JSON文件存储在 ~/.umbrella_cache/ (可配置)。适用于超出上下文窗口限制的大型响应。

缓存条目在配置的TTL(默认值:300秒)后自动失效。使用 cache_clear 手动刷新所有缓存的工具,或 cache_stats 以检查当前缓存状态。

错误处理

场景行为
401未经授权自动清除令牌、刷新并重试请求一次
无效凭证加薪 ValueError 启动时提供获取凭据的说明
只读违规在只读模式下尝试写入操作时返回错误消息
网络错误传播为 httpx 描述性消息的例外情况

故障排除

“必须设置CISCO_CLIENT_ID和CISCO_CLEENT_SECRET”

  • 确保您的 .env 文件存在于项目根目录中,并包含有效凭据
  • 验证 .env 正在加载文件(检查工作目录)

报告端点上的400个错误请求

  • 验证您的API密钥是否具有 报告 Umbrella仪表板中启用了作用域
  • 新的API密钥可能需要15-30分钟才能传播
  • 某些报告端点需要特定的Umbrella许可证级别(Advantage/SIG)

401重试后仍存在错误

  • 在Umbrella仪表板中重新生成API键
  • 确认 CISCO_BASE_URL 匹配您的部署(umbrella.com vs sse.cisco.com)

慢查询

  • 使用 time_fromtime_to 缩小时间范围
  • 检查 cache_stats 验证缓存是否正常工作
  • 减少 limit 对于大型结果集

项目结构

umbrella_mcp/
├── umbrella-mcp.py      # Main MCP server (all-in-one)
├── .env-example          # Template for environment variables
├── .env                  # Your actual credentials (git-ignored)
├── .gitignore            # Git ignore rules
├── requirements.txt      # Python dependencies
├── pyproject.toml        # Project metadata
├── setup.sh              # Automated setup script
└── README.md             # This file

需求

  • Python 3.10+
  • mcp[cli]>=1.0.0 --模型上下文协议SDK
  • httpx>=0.27.0 --异步HTTP客户端
  • pydantic>=2.0.0 --数据验证
  • python-dotenv>=1.0.0 --环境变量管理

许可证

MIT许可证

资源

目录标签

目录标签

PythonClaude网络管理安全API本地部署AI集成OAuth2认证多租户支持

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

22

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP