关于 Okta Mcp Server
Okta MCP Server 是一个 MCP 服务,让 AI 模型直接查询和分析 Okta 环境中的用户、群组、应用和日志。它面向 IAM 工程师、安全团队和 Okta 管理员,并提供访问分析与登录风险评估等专用工具。
主要功能
- 01查询用户、群组、应用及策略等 Okta 资源
- 02访问权限分析工具 analyze_user_app_access
- 03登录风险评估工具 analyze_login_risk
- 04支持 STDIO 与 HTTP 传输方式
适用场景
- 01排查用户为何无法访问某个应用
- 02检查可疑登录活动的风险
- 03通过 AI 助手批量查询已锁定用户等信息
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 Okta 的用户、群组、应用、策略、网络区域和系统日志等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Okta MCP Server(v0.1.1-BETA)
🔥 注意!!!全新重构的 MCP Server 现已推出
基于 Anthropic 全新的 MCP 架构模式全面重写,支持双模式运行、上下文工程、增强型安全沙箱以及可用于生产环境的 Docker 支持。
快速演示
🎉 v0.1.1-BETA 有哪些新内容——企业级专用工具!
此版本推出了强大的专用工具,彻底革新 Okta 日常管理任务:
🔥 全新:专用工具——Okta 管理员的得力助手
- 🎯 全面访问分析:帮助解答 Okta 管理员最常遇到的问题:用户 X 能否访问应用 Y?
- 🛡️ 高级登录风险评估:通过行为分析检测 VPN/Tor,并检查地理位置上的不可能情况,有助于处理可疑活动报告邮件。
💡 实际示例——访问分析:
❓ Question: "Can user [email protected] access the application Salesforce?"
🤖 AI Response (30 seconds): "User John Smith can access Salesforce because:
1) User is ACTIVE ✅
2) User is assigned via group 'Sales Team' ✅,
3) Policy allows access with 2FA from corporate network or requires PUSH factor from external locations - user has PUSH enrolled ✅"
⏱️ Manual Process: Navigate Users → Find John → Check Status → Check App
Assignments → Check Group Memberships → Check Salesforce Assignments →
Review Access Policies → Check MFA Factors → Correlate Network Rules (10-15 min)
💡 实际示例——登录风险评估:
❓ Question: "Is [email protected]'s recent login activity suspicious?"
🤖 AI Response (30 seconds): "LOW RISK - Dan exhibits excellent login
security patterns: consistent geographic area, same residential ISP,
stable device fingerprints, normal browser patterns, zero VPN/proxy
usage, all Okta risk scores LOW ✅"
⏱️ Manual Process: System Logs → Filter User → Check Locations → Review
IP Addresses → Cross-reference Network Zones → Analyze Device Patterns →
Check Geographic Impossibility → Review Behavioral Flags (15+ min)
🏗️ 核心架构
- 🚀 FastMCP 2.0:从旧版 MCP 包迁移至 FastMCP 2.0,采用前沿的协议功能
- 🧹 更简洁的代码:移除
tool_registry.py依赖,让代码库更简单、更易维护 - ⚡ 更出色的性能:采用现代异步模式并优化请求处理
🛠️ 增强型工具
- 📝 全面重写:重写所有工具,改进注释和描述,便于 AI 理解
- 🛡️ 改进验证:增强所有操作的错误处理和输入验证
🔐 高级安全性
- 🎫 Bearer Token:全面支持 JWT bearer token,并验证
jwks_uri - 🏢 企业级身份验证:支持企业身份验证流程和基于范围的访问
🚀 面向未来
- 🔌 支持中间件:可扩展的中间件系统,支持自定义处理
- 📡 协议演进:可使用最新开发和标准化的 MCP 功能
📝 注意:由于与 pydantic-ai 的依赖冲突(安全漏洞),CLI 客户端和 AI 采样功能已移至
_Archived/文件夹。详情请参阅_Archived/README.md。
📋 目录
- 🎉 v0.1.1-BETA 新增内容——企业级专用工具!
- 📋 目录
- 🔍 什么是模型上下文协议?
- ⚠️ 重要:安全性与限制
- 🛠️ 可用工具
- 🚀 快速开始
- 🧠 支持的 AI 提供商
- 5. Docker 部署 - 运行 Docker 容器
- ⚠️ 须知
- 🗺️ 路线图
- 🆘 需要帮助?
- 💡 功能请求与想法
- 👥 贡献者
- ⚖️ 法律信息
🔍 什么是模型上下文协议?
模型上下文协议(MCP)是一种开放标准,可让 AI 模型以结构化、安全的方式与外部工具和服务交互。它提供了统一的接口,供 AI 系统发现并使用服务端公开的功能,从而让 AI 助手能够将功能扩展到训练数据之外。
可以把 MCP 看作“AI 集成领域的 USB-C”——正如 USB-C 提供了通用标准,让各种设备不受制造商限制地连接和通信,MCP 也为 AI 模型提供了标准化方式,使其能够发现并与不同服务交互,而无需针对每项服务进行定制集成。这种“即插即用”的方式意味着开发者只需构建一次工具,即可让它们适用于多个 AI 助手;用户也能享受无缝集成,无需担心兼容性问题。
示例:“找出我们 Okta 租户中所有被锁定的用户,并在 Google Drive 的 IT Operations 文件夹中创建一个电子表格,列出他们的姓名、电子邮件地址和上次登录日期。” AI 使用 Okta MCP Server 查询被锁定的用户,然后将数据传递给 Google Drive MCP Server 来创建电子表格——全程无需编写定制代码。
⚠️ 重要:安全性与限制
使用 Okta MCP Server 前,请仔细阅读本节。
🔄 数据流与隐私
发起请求时,交互会直接发生在大模型与 Okta MCP 工具之间,客户端应用不再处于中间环节。这些工具返回的所有数据(包括完整的用户档案、群组成员信息等)都会在整个会话事务期间发送到大模型的上下文中并存储其中。
主要隐私注意事项:
- 大模型(Claude、GPT 等)会接收并处理工具检索到的所有 Okta 数据
- 在整个会话期间,这些数据都会保留在大模型的上下文中
- 你必须能够接受 Okta 用户数据由大模型提供商的系统处理
- 使用这些工具前,请确认你能够接受 Okta 数据被发送到 AI 模型的服务器
📊 上下文窗口限制
MCP 面向类似 Zapier 的轻量级工作流设计,而非批量数据操作。
建议: 将每次事务的请求限制在少于 100 个实体。避免需要获取大型数据集或进行多次 API 调用的操作。
示例:
❌ 避免这类请求:
- “从我们的 Okta 租户中获取全部 10,000 个用户,并分析他们的登录模式”
- “查找未将 Okta Verify 注册为验证因素的用户”
✅ 更好的做法:
- “获取最近创建的 20 个用户”
- “查找超过 90 天未登录的用户,结果限制为前 50 个”
💡 对于较大的数据集和复杂查询: 对于较大规模的查询和数据集,可考虑使用 Okta AI Agent。该 Agent 正在增强类似的“可执行”功能,以便在不久的将来处理更大的数据集和更复杂的场景。
🚨 HTTP 传输安全警告
HTTP 传输模式(包括 Streamable HTTP 和 SSE)存在严重的安全风险:
- 它们会开启未经身份验证的 HTTP 服务,并使其能够完全访问你的 Okta 租户
- 不提供身份验证或授权
- 任何能够访问网络端口的人都可以向你的 Okta 环境发出命令
- 通过
mcp-remote远程访问 HTTP 时,极其危险
最佳实践: 除非你已设置特定的安全控制措施并了解相关风险,否则仅使用 STDIO 传输方式(默认模式)。
🛠️ 可用工具
Okta MCP 服务目前提供以下工具:
🔥 特殊工具 — 企业管理加速器
访问分析与故障排查
analyze_user_app_access- 全面的用户应用访问评估与策略分析(可替代 10-15 分钟的 Okta Admin Console 手动导航操作)
安全与风险评估
analyze_login_risk- 全面的登录行为分析,包含 VPN/Tor 检测和地理位置异常检查(即时回答“此用户是否已遭入侵?”)
⚡ 这些工具为何重要:Okta 管理员每天最常遇到的两个问题是“用户 X 为什么无法访问应用 Y?”和“这项登录活动是否可疑?”。这些特殊工具可立即提供全面的答案,而原本需要在多个 Okta 管理页面中进行大量手动调查、策略审查和日志分析才能得出答案。这些工具将原本需要 15 分钟以上的调查,转变为由 AI 驱动、仅需 30 秒的洞察。
📊 标准工具
用户管理
list_okta_users- 根据筛选、搜索和分页选项检索用户get_okta_user- 按 ID 或登录名获取特定用户的详细信息list_okta_user_groups- 列出特定用户所属的所有群组list_okta_user_applications- 列出特定用户的所有应用程序链接(已分配的应用程序)list_okta_user_factors- 列出特定用户注册的所有身份验证因子
群组操作
list_okta_groups- 根据筛选、搜索和分页选项检索群组get_okta_group- 获取特定群组的详细信息list_okta_group_members- 列出特定群组的所有成员list_okta_assigned_applications_for_group- 列出分配给特定群组的所有应用程序
应用程序管理
list_okta_applications- 根据筛选、搜索和分页选项检索应用程序list_okta_application_users- 列出分配给特定应用程序的所有用户list_okta_application_group_assignments- 列出分配给特定应用程序的所有群组
策略与网络管理
list_okta_policy_rules- 列出特定策略的所有规则,并提供详细的条件和操作信息get_okta_policy_rule- 获取特定策略规则的详细信息list_okta_network_zones- 列出所有网络区域及其 IP 范围和配置详情
系统日志事件
get_okta_event_logs- 检索 Okta 系统日志事件,支持按时间筛选和搜索
日期与时间工具
get_current_time- 获取 ISO 8601 格式的当前 UTC 时间parse_relative_time- 将自然语言时间表达式转换为 ISO 8601 格式
应用程序、身份验证因子、策略和更多高级操作的其他工具已列入路线图,将在未来版本中添加。
🚀 快速开始
前提条件
✅ 计算机上已安装 Python 3.8+
✅ 拥有具备适当 API 访问权限的 Okta 租户
✅ 兼容 MCP 的 AI 客户端(Claude Desktop、Microsoft Copilot Studio 等)
⚠️ 重要的模型兼容性说明:
并非所有 AI 模型都能与此 MCP 服务配合使用。目前仅针对以下模型进行了测试:
- GPT-4.0
- Claude 3.7 Sonnet
- Google-2.5-pro
必须使用明确支持工具调用/函数调用能力的最新模型版本。较旧的模型或不支持工具调用的模型将无法与 Okta MCP Server 交互。
🧠 支持的 AI 提供商
Okta MCP Server 通过灵活的配置系统支持多个 AI 提供商。你可以根据具体需求和现有访问权限,连接各种大模型。
当前支持的提供商:
| 提供商 | 环境变量 | 描述 |
|---|---|---|
| OpenAI | AI_PROVIDER=openai | 连接 OpenAI API,使用 GPT-4o 等模型。需要 OpenAI API 密钥。 |
| Azure OpenAI | AI_PROVIDER=azure_openai | 使用由 Azure 托管的 OpenAI 模型,享受增强的安全性和合规功能。 |
| Anthropic | AI_PROVIDER=anthropic | 连接 Anthropic 的 Claude 模型(主要使用 Claude 3.7 Sonnet 进行了测试)。 |
| Google Vertex AI | AI_PROVIDER=vertex_ai | 通过 Vertex AI 使用 Google 的 Gemini 模型。需要 Google Cloud 服务账号。 |
| 兼容 OpenAI 的服务 | AI_PROVIDER=openai_compatible | 连接任何兼容 OpenAI API 的端点,例如 Fireworks.ai、Ollama,或其他实现 OpenAI API 规范的提供商。 |
安装
# Clone the repository
git clone https://github.com/fctr-id/okta-mcp-server.git
cd okta-mcp-server
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
⚠️ 注意: 如果重新克隆此仓库或拉取更新,请务必重新运行
pip install -r requirements.txt,以确保所有依赖项均为最新版本。
配置与使用
创建包含 Okta 设置的配置文件:
📝 注意:独立 CLI 客户端已归档。对于 MCP 主机集成(Claude Desktop、VS Code 等),请直接使用服务器,并采用下面的 JSON 配置。
支持的传输方式与启动
Okta MCP Server 支持多种传输协议:
1. 标准输入/输出(STDIO)- 推荐
- 安全性:✅ 通过标准输入/输出流直接通信
- 适用场景:非常适合 Claude Desktop 等桌面 AI 助手
- 性能:✅ 轻量且高效
- 配置:对于 Claude Desktop,请添加到
claude_desktop_config.json:
将{ "mcpServers": { "okta-mcp-server": { "command": "DIR/okta-mcp-server/venv/Scripts/python", "args": [ "DIR/okta-mcp-server/main.py" ], "env": { "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com", "OKTA_API_TOKEN": "OKTA_API_TOKEN" } } } }DIR替换为绝对目录路径,并将OKTA_API_TOKEN替换为实际令牌
2. Streamable HTTP 传输 - 现代且当前标准
当前标准 - 基于 HTTP 的现代传输方式,具备高级功能:
- 功能:✅ 实时事件流、会话管理、支持恢复
- 性能:✅ 可扩展性和连接处理能力更强
- 适用场景:支持 HTTP 流式传输的现代 Web 应用和客户端
- 安全性:⚠️ 本地 HTTP 服务器 - 在受控环境中安全
启动 Streamable HTTP 服务器:
# Start server with explicit risk acknowledgment
python main.py --http --iunderstandtherisks
# Server will start on http://localhost:3000/mcp
# Connect using streamable HTTP compatible clients
功能:
- ✅ 实时流式传输 - 操作期间实时更新进度
- ✅ 会话管理 - 保持连接状态
- ✅ 事件流 - 通过服务器发送事件提供实时通知
- ✅ 更好的错误处理 - 提供详细的错误响应
- ✅ 现代协议 - 基于最新的 MCP 规范
3. 远程 HTTP 访问 - 仅限高风险高级用途
⚠️ 极其危险 - 请仔细阅读
对于原生不支持远程连接的 MCP 客户端,可以通过 NPX 使用 mcp-remote:
前提条件:
- 已安装 Node.js 和 NPM
- Okta MCP Server 正在 HTTP 模式下运行
设置:
# 1. Install mcp-remote globally
npm install -g @anthropic/mcp-remote
# 2. Start your Okta MCP Server in HTTP mode
python main.py --http --iunderstandtherisks
# 3. Configure your MCP client (e.g., Claude Desktop)
Claude Desktop 配置:
{
"mcpServers": {
"okta-mcp-server": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3000/mcp"
],
"env": {
"OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com",
"OKTA_API_TOKEN": "your_actual_api_token"
}
}
}
}
🚨 关键安全警告:
- 切勿在生产环境中使用
- 切勿将 HTTP 端口(3000)暴露给公共网络
- 任何能够访问网络的人都可以控制你的 Okta 租户
- 没有身份验证或授权保护
- 所有 Okta 操作都不受限制地开放
- 仅在隔离且安全的开发环境中使用
- 仅当绝对无法使用 STDIO 传输时,才考虑采用此方式
哪些情况下可能需要采用此方式:
- 测试需要 HTTP 传输的 MCP 集成
- 无法使用 STDIO 的特定客户端应用
- 需要通过 HTTP 进行调试的开发场景
- 绝不可用于生产环境或共享环境
4. 服务器发送事件(SSE)- 已弃用
**⚠️ 已弃用:**SSE 传输已弃用,不建议在新实现中使用。
# Run in SSE mode (requires explicit risk acknowledgment)
python main.py --sse --iunderstandtherisks
- 适用场景:明确要求使用 SSE 的旧版 MCP 客户端(不推荐)
- 安全性:⚠️ 与 Streamable HTTP 相同的 HTTP 安全风险
- 建议:所有新的实现都改用 Streamable HTTP 传输
5. Docker 部署
Okta MCP Server 为所有传输类型提供 Docker 镜像,支持容器化部署。
运行 Docker 容器
STDIO 传输(推荐): 对于 Claude Desktop 或其他 MCP 客户端,请配置为使用 Docker 容器:
{
"mcpServers": {
"okta-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OKTA_CLIENT_ORGURL",
"-e", "OKTA_API_TOKEN",
"fctrid/okta-mcp-server:stdio"
],
"env": {
"OKTA_CLIENT_ORGURL": "https://your-org.okta.com",
"OKTA_API_TOKEN": "your_api_token"
}
}
}
}
Streamable HTTP 传输(当前标准):
# Start the HTTP container
docker run -d --name okta-mcp-http \
-p 3000:3000 \
-e OKTA_API_TOKEN=your_api_token \
-e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
fctrid/okta-mcp-server:http
# Configure your MCP client to connect to http://localhost:3000/mcp
SSE 传输(已弃用 - 不推荐):
# Start the SSE container (deprecated)
docker run -d --name okta-mcp-sse \
-p 3000:3000 \
-e OKTA_API_TOKEN=your_api_token \
-e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
fctrid/okta-mcp-server:sse
# Configure your MCP client to connect to http://localhost:3000/sse
在本地构建镜像:
# Build all variants
docker build --target stdio -t okta-mcp-server:stdio .
docker build --target http -t okta-mcp-server:http .
docker build --target sse -t okta-mcp-server:sse .
⚠️ 温馨提示
Beta 版发布 🧪
- 采用 FastMCP 2.0 对架构进行了全面重写
- 与之前的 Alpha 版相比,稳定性和性能均有所提升
- 提供更完善的工具系统,并改进了 AI 集成
- 更适合开发和测试环境
- 正在评估其生产就绪情况,并增强安全功能
安全至上 🛡️
- 专为遵循最小权限原则而设计
- 默认只读访问 Okta 资源
- 未来的写入操作将需要明确的审批流程
当前限制 🔍
- 初期仅提供一组面向用户和群组的只读工具
- 计划在后续版本中快速扩展 API 覆盖范围
- 尚未公开某些复杂的 Okta 关系
- 尚未针对超大型 Okta 实例优化性能
- 需要直接访问 Okta API 端点
🗺️ 路线图
v0.1.0-BETA - 当前版本(重大架构改造!)
- 完成向 FastMCP 2.0 架构的迁移
- 全面重写所有工具,并增强注释
- 推出支持多种传输方式的新统一 CLI 客户端
- 移除对 tool_registry.py 的依赖,让代码库更简洁
- 增强 Bearer 令牌支持,并验证 jwks_uri
- 大幅增强错误处理和验证
- 优化性能并采用现代异步模式
v0.3.0 - 之前的版本
- 支持 Streamable HTTP 传输
- 实时事件流
- 会话管理与恢复
- 增强客户端应用
未来计划包括:
- 完整的用户生命周期操作
- 应用分配管理
- 群组成员关系操作
- 身份验证因素的注册与验证
- 策略和规则管理
- 敏感操作的审批工作流
- 多渠道审批选项(Web、电子邮件、Slack)
- 审计日志记录与合规报告
- 系统日志集成
- 安全洞察生成
- 多租户支持
- 基于角色的访问控制
🆘 需要帮助?
提交问题前,请检查:
- 📝 服务配置
- 🔑 Okta API 权限
- 🔌 MCP 客户端兼容性
- 📊 服务日志
仍有问题?请在 GitHub 上提交 issue,或发送电子邮件至 [email protected](响应时间可能有所不同)。
💡 功能请求与想法
有想法或建议?请在 GitHub 上提交功能请求!
👥 贡献者
有兴趣参与贡献吗?我们非常欢迎!请联系 [email protected],了解合作机会。
⚖️ 法律信息
请查看 License.md 了解详细条款。
🌟 © 2025 Fctr Identity。保留所有权利。为 Okta 和 AI 社区倾心打造 ❤️。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。