返回 MCP 目录
public公开dns本地运行

okta-mcp-server

Okta MCP Server 是一个基于 Model Context Protocol 的服务器,允许大型语言模型和AI代理通过自然语言指令管理Okta组织,支持用户、群组、应用程序、策略和日志等管理操作。

article

README

🚀 Okta MCP服务器

Okta MCP服务器集成了大语言模型(LLM)和AI智能体,允许你使用自然语言执行各种Okta管理操作,为你的LLM智能体赋能,实现对Okta组织的管理。

✨ 主要特性

  • 由大语言模型驱动的Okta管理:允许你的LLM智能体根据自然语言指令在Okta环境中执行管理任务。
  • 安全认证:支持用于交互式使用的设备授权授予和用于安全、自动化的服务器到服务器通信的私钥JWT。
  • 与Okta管理API集成:利用官方Okta API,确保与你的Okta组织进行安全可靠的交互。
  • 可扩展架构:设计为易于扩展新功能,并支持更多的Okta API端点。
  • 全面的工具支持:支持对用户、组、应用程序、策略等进行完整的CRUD操作。

🚀 快速开始

前提条件

安装Okta MCP服务器

安装Okta MCP服务器,并将其配置为与你首选的MCP客户端配合使用。

Claude Desktop(包含所有工具)

  1. 克隆并安装服务器:
git clone https://github.com/okta/okta-mcp-server.git
cd okta-mcp-server
uv sync
  1. 通过在 claude_desktop_config.json 中添加以下内容来配置Claude Desktop:
{
    "mcpServers": {
        "okta-mcp-server": {
            "command": "uv",
            "args": [
                "run",
                "--directory",
                "/path/to/okta-mcp-server",
                "okta-mcp-server"
            ],
            "env": {
                "OKTA_ORG_URL": "<OKTA_ORG_URL>",
                "OKTA_CLIENT_ID": "<OKTA_CLIENT_ID>",
                "OKTA_SCOPES": "<OKTA_SCOPES>",
                "OKTA_PRIVATE_KEY": "<PRIVATE_KEY_IF_NEEDED>",
                "OKTA_KEY_ID": "<KEY_ID_IF_NEEDED>"
            }
        }
    }
}

VS Code 在VS Code的 settings.json 中添加以下内容:

{
    "mcp": {
        "inputs": [
            {
                "type": "promptString",
                "description": "Okta组织URL(例如,https://dev-123456.okta.com)",
                "id": "OKTA_ORG_URL"
            },
            {
                "type": "promptString",
                "description": "Okta客户端ID",
                "id": "OKTA_CLIENT_ID",
                "password": true
            },
            {
                "type": "promptString",
                "description": "Okta作用域(用空格分隔,例如 'okta.users.read okta.groups.manage')",
                "id": "OKTA_SCOPES"
            },
            {
                "type": "promptString",
                "description": "Okta私钥。'无浏览器'认证需要。",
                "id": "OKTA_PRIVATE_KEY",
                "password": true
            },
            {
                "type": "promptString",
                "description": "用于私钥的Okta密钥ID(KID)。'无浏览器'认证需要。",
                "id": "OKTA_KEY_ID",
                "password": true
            }
        ],
        "servers": {
            "okta-mcp-server": {
                "command": "uv",
                "args": [
                    "run",
                    "--directory",
                    "/path/to/the/okta-mcp-server",
                    "okta-mcp-server"
                ],
                "env": {
                    "OKTA_ORG_URL": "${input:OKTA_ORG_URL}",
                    "OKTA_CLIENT_ID": "${input:OKTA_CLIENT_ID}",
                    "OKTA_SCOPES": "${input:OKTA_SCOPES}",
                    "OKTA_PRIVATE_KEY": "${input:OKTA_PRIVATE_KEY}",
                    "OKTA_KEY_ID": "${input:OKTA_KEY_ID}"
                }
            }
        }
    }
}

其他MCP客户端 要将Okta MCP服务器与其他MCP客户端一起使用,你可以手动将此配置添加到客户端,并重新启动以使更改生效:

{
    "mcpServers": {
        "okta-mcp-server": {
            "command": "uv",
            "args": [
                "run",
                "--directory",
                "/path/to/okta-mcp-server",
                "okta-mcp-server"
            ],
            "env": {
                "OKTA_ORG_URL": "<OKTA_ORG_URL>",
                "OKTA_CLIENT_ID": "<OKTA_CLIENT_ID>",
                "OKTA_SCOPES": "<OKTA_SCOPES>",
                "OKTA_PRIVATE_KEY": "<PRIVATE_KEY_IF_NEEDED>",
                "OKTA_KEY_ID": "<KEY_ID_IF_NEEDED>"
            }
        }
    }
}

与Okta进行身份验证

服务器支持两种身份验证方法。选择最适合你用例的方法。

方法1:设备授权授予(交互式)

  1. 在你的Okta组织中,创建一个 新的应用集成
  2. 选择 OIDC - OpenID Connect原生应用程序
  3. 授权类型 下,确保选中 设备授权
  4. 转到Okta API作用域选项卡,并授予你需要的API权限(例如,okta.users.read、okta.groups.manage)。
  5. 保存应用程序并复制 客户端ID
  6. 文档Okta设备授权授予指南

方法2:私钥JWT(无浏览器)

  1. 创建应用:在你的Okta组织中,创建一个 新的应用集成。选择 API服务。保存应用并复制 客户端ID
  2. 配置客户端认证
    • 在应用的 常规 选项卡上,找到 客户端凭证 部分并点击 编辑
    • 禁用 在令牌请求中要求证明拥有权(DPoP)标头
    • 选择 公钥/私钥 作为认证方法。
  3. 添加公钥:你有两种添加密钥的选项。
    • 选项A:在Okta中生成密钥(推荐)
      1. 公钥 部分,点击 添加密钥
      2. 在对话框中,选择 生成新密钥
      3. Okta将立即生成一个密钥对。下载或保存私钥 (private.pem) 并安全存储。
      4. 复制新生成密钥显示的 密钥ID(KID)
    • 选项B:使用你自己的密钥
      1. 使用以下 openssl 命令在本地生成一个密钥对:
# 生成一个2048位的RSA私钥
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048

# 从私钥中提取公钥
openssl rsa -in private.pem -pubout -out public.pem
    2. 点击 **添加密钥** 并将你的 **公钥** (`public.pem`) 内容粘贴到对话框中。
    3. 复制你添加的密钥显示的 **密钥ID(KID)**。

4. 授予API作用域:转到 Okta API作用域 选项卡并 授予 你需要的API权限。 5. 分配管理员角色:为避免 403 Forbidden 错误,转到 管理员角色 选项卡并将 超级管理员 角色分配给此应用程序。

验证集成

重新启动你的MCP客户端(Claude Desktop、VS Code等),并让它帮助你管理你的Okta租户:

显示我Okta组织中的用户

📦 支持的工具

Okta MCP服务器提供以下工具,供大语言模型与你的Okta租户进行交互:

用户

| 工具 | 描述 | 使用示例 | | ---- | ---- | ---- | | list_users | 列出你Okta组织中的所有用户 | - 显示我Okta组织中的用户
- 查找姓名中包含 'john' 的用户
- 我在工程部门有哪些用户? | | get_user | 获取特定用户的详细信息 | - 显示用户john.doe@company.com的详细信息
- 获取用户ID为00u1234567890的信息
- Jane Smith是哪些组的成员? | | create_user | 在你的Okta组织中创建一个新用户 | - 创建一个名为John Doe的新用户,邮箱为john.doe@company.com
- 向销售部门添加一名新员工
- 设置一个承包商账户 | | update_user | 更新现有用户的个人资料信息 | - 将John Doe的部门更新为工程部门
- 更改用户jane.smith@company.com的电话号码
- 更新此用户的经理 | | deactivate_user | 停用用户,使其处于非活动状态 | - 停用用户john.doe@company.com
- 禁用前员工Jane Smith的访问权限
- 暂时暂停承包商账户 | | delete_deactivated_user | 永久删除已停用的用户 | - 删除已停用的用户john.doe@company.com
- 永久删除前员工Jane Smith
- 清理旧的承包商账户 | | get_user_profile_attributes | 检索所有支持的用户个人资料属性 | - 有哪些可用的用户个人资料字段?
- 显示我们可以设置的所有自定义属性
- 列出标准的Okta用户属性 |

| 工具 | 描述 | 使用示例 | | ---- | ---- | ---- | | list_groups | 列出你Okta组织中的所有组 | - 显示我Okta组织中的组
- 查找名称中包含 'Engineering' 的组
- 我们有哪些安全组? | | get_group | 获取特定组的详细信息 | - 显示工程组的详细信息
- 管理员组有多少成员?
- 销售部门分配了哪些应用程序? | | create_group | 创建一个新组 | - 创建一个名为DevOps Team的新组
- 为财务部门设置一个安全组
- 为临时承包商添加一个组 | | update_group | 更新现有组的信息 | - 更新工程组的描述
- 将销售组的名称更改为收入团队
- 修改财务组的设置 | | delete_group | 删除一个组(需要确认) | - 删除旧的营销组
- 移除临时项目组
- 清理未使用的安全组 | | list_group_users | 列出属于某个组的所有用户 | - 工程组的成员有哪些?
- 显示所有管理员
- 列出财务部门的用户 | | list_group_apps | 列出分配给某个组的所有应用程序 | - 工程组可以访问哪些应用程序?
- 显示分配给销售团队的应用程序
- 列出管理员的所有应用程序 | | add_user_to_group | 将用户添加到组中 | - 将john.doe@company.com添加到工程组
- 授予Jane Smith访问财务应用程序的权限
- 将新员工添加到销售团队 | | remove_user_from_group | 将用户从组中移除 | - 将john.doe@company.com从工程组中移除
- 撤销Jane的管理员权限
- 将承包商从财务组中移除 |

应用程序

| 工具 | 描述 | 使用示例 | | ---- | ---- | ---- | | list_applications | 列出你Okta组织中的所有应用程序 | - 显示我Okta组织中的应用程序
- 查找名称中包含 'API' 的应用程序
- 我们配置了哪些SSO应用程序? | | get_application | 获取特定应用程序的详细信息 | - 显示Salesforce应用程序的详细信息
- 我们的移动应用程序的回调URL是什么?
- 获取我们的Web应用程序的客户端ID | | create_application | 创建一个新的应用程序 | - 为我们的HR系统创建一个新的SAML应用程序
- 设置一个新的API服务应用程序
- 添加一个移动应用程序集成 | | update_application | 更新现有应用程序 | - 更新我们的Web应用程序的回调URL
- 更改Salesforce应用程序的徽标
- 修改我们的HR系统的SAML设置 | | delete_application | 删除一个应用程序(需要确认) | - 删除旧的遗留应用程序
- 移除未使用的测试应用程序
- 清理已弃用的集成 | | activate_application | 激活应用程序 | - 激活新的HR应用程序
- 启用Salesforce集成
- 为用户开启移动应用程序 | | deactivate_application | 停用应用程序 | - 停用遗留的CRM应用程序
- 暂时禁用移动应用程序
- 关闭对测试环境的访问 |

策略

| 工具 | 描述 | 使用示例 | | ---- | ---- | ---- | | list_policies | 列出你Okta组织中的所有策略 | - 显示安全策略
- 我们有哪些密码策略?
- 列出所有MFA注册策略 | | get_policy | 获取策略的详细信息 | - 显示我们的密码策略的详细信息
- MFA要求是什么?
- 显示承包商的登录策略 | | create_policy | 创建一个新的策略 | - 为承包商创建一个新的密码策略
- 为高风险应用程序设置MFA要求
- 为远程工作者添加一个登录策略 | | update_policy | 更新现有策略 | - 更新密码复杂度要求
- 修改高管的MFA策略
- 更改承包商的会话超时时间 | | delete_policy | 删除策略 | - 删除旧的密码策略
- 移除已弃用的MFA策略
- 清理未使用的安全策略 | | activate_policy | 激活策略 | - 激活新的密码策略
- 启用MFA要求
- 开启承包商的登录策略 | | deactivate_policy | 停用策略 | - 停用旧的安全策略
- 暂时禁用MFA进行测试
- 关闭严格的密码要求 | | list_policy_rules | 列出特定策略的所有规则 | - 显示密码策略的所有规则
- 配置了哪些MFA规则?
- 列出我们的登录策略中的例外情况 | | get_policy_rule | 获取策略规则的详细信息 | - 显示承包商MFA规则的详细信息
- VPN访问规则的条件是什么?
- 显示紧急访问规则 | | create_policy_rule | 为策略创建一个新规则 | - 为高管添加一个例外规则
- 创建一个承包商访问规则
- 为IT管理员设置紧急访问规则 | | update_policy_rule | 更新现有策略规则 | - 更新远程工作者的位置限制
- 修改设备信任要求
- 更改基于风险的认证设置 | | delete_policy_rule | 从策略中删除规则 | - 删除旧的承包商例外
- 移除已弃用的VPN规则
- 清理未使用的策略例外 | | activate_policy_rule | 激活策略规则 | - 激活新的紧急访问规则
- 启用承包商限制
- 开启基于位置的访问规则 | | deactivate_policy_rule | 停用策略规则 | - 停用旧的紧急规则
- 暂时禁用位置限制
- 为测试关闭设备信任要求 |

日志

| 工具 | 描述 | 使用示例 | | ---- | ---- | ---- | | get_logs | 从你的Okta组织中检索系统日志 | - 显示最近的登录尝试
- 查找过去24小时内的失败登录
- 获取用户john.doe@company.com的认证日志 |

🔐 身份验证

Okta MCP服务器使用Okta管理API,需要进行身份验证才能访问你的Okta租户。

身份验证流程

服务器使用OAuth 2.0设备授权流程与Okta进行安全认证,或使用私钥JWT进行无浏览器认证。你的凭证将被安全管理,不会以明文形式暴露。

初始设置

MCP服务器将根据你的配置自动启动适当的身份验证流程:

  • 设备授权授予:基于交互式浏览器的认证
  • 私钥JWT:使用客户端凭证的无浏览器认证

⚠️ 重要提示

设备授权流程不支持 私有云 租户。私有云用户应使用带有客户端凭证的私钥JWT认证。

⚠️ 重要提示

使用MCP服务器将根据你的订阅计划消耗管理API速率限制。有关更多信息,请参阅 速率限制策略

🩺 故障排除

当遇到Okta MCP服务器的问题时,可以使用以下几种故障排除选项来帮助诊断和解决问题。

🐞 调试模式

启用调试模式以获取更详细的日志:

export OKTA_LOG_LEVEL=DEBUG

💡 使用建议

调试模式在排查连接或认证问题时特别有用。

🚨 常见问题

  1. 认证失败
    • 确保你在Okta租户中拥有正确的权限。
    • 验证你的 OKTA_ORG_URLOKTA_CLIENT_IDOKTA_SCOPES 是否正确。
    • 检查你的应用程序是否已授予必要的API作用域。
  2. MCP客户端无法连接到服务器
    • 安装后重新启动你的MCP客户端。
    • 验证配置中的服务器路径是否正确。
    • 检查 uv 是否已安装并可在你的PATH中访问。
  3. API错误或权限问题
    • 使用 export OKTA_LOG_LEVEL=DEBUG 启用调试模式。
    • 验证你的Okta应用程序是否具有所需的作用域。
    • 确保你的应用程序已分配适当的管理员角色。
    • 检查Okta系统日志以获取详细的错误信息。
  4. “Claude的响应被中断...” 错误
    • 这通常是因为Claude达到了其上下文长度限制。
    • 尝试更具体并保持查询简洁。
    • 将大型请求拆分为更小、更有针对性的操作。

💡 使用建议

大多数连接问题可以通过重新启动服务器和MCP客户端来解决。

📋 调试日志

启用调试模式以查看详细日志:

export OKTA_LOG_LEVEL=DEBUG

你还可以指定日志文件:

export OKTA_LOG_FILE="/path/to/okta-mcp.log"

👨‍💻 开发

从源代码构建

# 克隆仓库
git clone https://github.com/okta/okta-mcp-server.git
cd okta-mcp-server

# 安装依赖
uv sync

# 直接运行服务器
uv run okta-mcp-server

开发脚本

# 启用调试日志运行
OKTA_LOG_LEVEL=DEBUG uv run okta-mcp-server

# 运行测试
uv run pytest

# 以开发模式安装
uv pip install -e .

⚠️ 重要提示

此服务器需要 Python 3.8或更高版本uv

🔒 安全

Okta MCP服务器非常重视安全:

  • 通过安全的认证流程管理凭证。
  • 不将敏感信息以明文形式存储。
  • 使用OAuth 2.0设备授权流程或私钥JWT进行认证。
  • 支持细粒度的API作用域权限。
  • 通过环境变量轻松管理凭证。

⚠️ 重要提示

为了遵循安全最佳实践,请始终在认证过程中审查请求的权限,以确保它们符合你的安全要求。

⚠️ 重要提示

在为你的Okta应用程序授予API作用域时,请始终遵循最小权限原则。

🧪 安全扫描

我们建议定期使用社区工具对该服务器以及你部署的任何其他MCP兼容服务器进行扫描,以发现协议级别的风险和配置错误。

这些扫描器有助于识别关键漏洞类别中的问题,包括:服务器实现错误、工具定义和生命周期风险、交互和数据流弱点以及配置或环境差距。

如果你发现了漏洞,请遵循我们的 负责任披露流程

💬 反馈和贡献

我们感谢你对这个项目的反馈和贡献!在开始之前,请查看:

报告问题

要提供反馈或报告错误,请 在我们的问题跟踪器上提出问题

漏洞报告

请不要在公共GitHub问题跟踪器上报告安全漏洞。请遵循 负责任披露流程

📄 许可证

本项目采用Apache 2.0许可证。有关更多信息,请参阅 LICENSE 文件。

什么是Okta?

Okta是领先的独立身份验证提供商。要了解更多信息,请查看 为什么选择Okta?

Copyright © 2025-Present, Okta, Inc.

根据Apache许可证,版本2.0(“许可证”)许可;除非符合许可证的规定,否则不得使用此文件。你可以在http://www.apache.org/licenses/LICENSE-2.0获得许可证的副本。除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不附带任何形式的明示或暗示保证。请参阅许可证以了解管理权限和限制的具体语言。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端