项目简介
Okta MCP Server 是一个基于 Model Context Protocol (MCP) 标准构建的服务器,它充当 AI 模型与 Okta 环境之间的桥梁。通过实现 MCP 协议,该服务器允许 AI 助手以结构化和安全的方式访问和操作 Okta 资源,从而扩展了 AI 在身份和访问管理 (IAM) 领域的应用能力。它主要面向 IAM 工程师、安全团队和 Okta 管理员,旨在简化 Okta 资源的分析和管理工作。
主要功能点
- 资源访问: 提供对 Okta 用户、用户组、应用程序、策略、网络区域和系统日志等资源的标准化访问接口。
- 工具集成: 内置了一系列预定义的工具,例如:
- 用户管理工具 (列出用户、获取用户信息、用户组成员等)
- 用户组管理工具 (列出用户组、获取用户组信息、组成员等)
- 应用程序管理工具 (列出应用、应用用户、应用分组等)
- 策略与网络管理工具 (列出策略规则、获取策略规则详情、列出网络区域等)
- 日志事件查询工具 (获取 Okta 系统日志事件)
- 日期时间工具 (获取当前时间、解析相对时间)
- MCP 协议支持: 完全实现了 Model Context Protocol 规范,确保与兼容 MCP 客户端的无缝集成。
- 多种传输协议: 支持 STDIO (标准输入输出) 和 SSE (服务器发送事件) 两种传输协议,以适应不同的部署环境和客户端需求。
- 安全性: 默认采用最小权限原则,以只读操作为主,并对 SSE 传输模式的安全风险进行了明确警示。
- 可扩展性: 工具集和功能仍在持续扩展,未来将加入更多高级操作和管理能力。
安装步骤
-
克隆仓库
git clone https://github.com/fctr-id/okta-mcp-server.git cd okta-mcp-server -
创建并激活虚拟环境
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate.bat # Windows -
安装依赖
pip install -r requirements.txt
服务器配置
MCP 服务器主要通过环境变量进行配置,你需要创建一个 '.env' 文件,并填入你的 Okta 组织 URL 和 API Token,以及你希望使用的 LLM 供应商的配置信息。
以下是一个 '.env.sample' 文件的示例,请复制并重命名为 '.env',然后根据你的实际情况修改:
OKTA_CLIENT_ORGURL=https://your-org.okta.com # 你的 Okta 组织 URL OKTA_API_TOKEN=your-api-token # 你的 Okta API Token AI_PROVIDER=openai # AI 供应商,例如 openai, azure_openai, anthropic, vertex_ai, openai_compatible OPENAI_API_KEY=your-openai-api-key # 如果 AI_PROVIDER=openai,则需要 OpenAI API Key # ... 其他 AI 供应商的配置 ...
MCP 客户端配置
MCP 客户端 (例如 Claude Desktop, Microsoft Copilot Studio) 需要配置连接到 Okta MCP Server 的信息。以 Claude Desktop 为例,你需要在 'claude_desktop_config.json' 文件中添加如下配置:
{ "mcpServers": { "okta-mcp-server": { // 服务器名称,客户端用于标识 "command": "DIR/okta-mcp-server/venv/Scripts/python", // Python 解释器路径,请替换为你的实际路径 "args": [ "DIR/okta-mcp-server/main.py" // 服务器启动脚本路径,请替换为你的实际路径 ], "env": { "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com", // 你的 Okta 组织 URL,可以覆盖 .env 文件中的配置 "OKTA_API_TOKEN": "OKTA_API_TOKEN" // 你的 Okta API Token,可以覆盖 .env 文件中的配置 } } } }
配置参数说明:
- 'server name': 'okta-mcp-server' - 客户端用于在配置中引用此服务器的名称。
- 'command': 'DIR/okta-mcp-server/venv/Scripts/python' - 必须替换 'DIR' 为你的 'okta-mcp-server' 仓库的绝对路径。指向虚拟环境中的 Python 解释器。
- 'args': '["DIR/okta-mcp-server/main.py"]' - 必须替换 'DIR' 为你的 'okta-mcp-server' 仓库的绝对路径。指向服务器的主启动脚本 'main.py'。
- 'env': 环境变量配置,可以覆盖 '.env' 文件中的配置。
- 'OKTA_CLIENT_ORGURL': 你的 Okta 组织 URL,例如 'https://your-org.okta.com'。 必须替换 'https://dev-1606.okta.com' 为你的实际 URL。
- 'OKTA_API_TOKEN': 你的 Okta API Token。 必须替换 'OKTA_API_TOKEN' 为你的实际 API Token。
注意: 请务必将 'DIR' 替换为你的 'okta-mcp-server' 仓库在你的文件系统中的绝对路径。例如,如果你的仓库在 '/Users/yourname/okta-mcp-server',则 'command' 应配置为 '/Users/yourname/okta-mcp-server/venv/Scripts/python','args' 应配置为 '["/Users/yourname/okta-mcp-server/main.py"]'。
基本使用方法
-
启动服务器
STDIO 模式 (推荐):
在虚拟环境激活的状态下,直接运行 'main.py' 脚本即可启动服务器的 STDIO 模式。这是默认且推荐的模式,适用于桌面 AI 助手等客户端。
python main.pySSE 模式 (高级用法,注意安全风险):
如果需要使用 SSE 传输协议,可以使用 '--sse' 参数启动服务器,并务必阅读安全警告。
python main.py --sse --iunderstandtherisks -
配置 MCP 客户端
根据你使用的 MCP 客户端 (如 Claude Desktop, Microsoft Copilot Studio) 的文档,配置连接到 Okta MCP Server。通常需要提供服务器的启动命令 (command) 和参数 (args),以及一些连接信息。
-
通过 MCP 客户端与 Okta 环境交互
配置完成后,你就可以在 MCP 客户端中使用自然语言指令,通过 Okta MCP Server 访问和查询 Okta 资源了。例如,你可以询问 "列出所有被锁定的用户" 或 "获取用户 '[email protected]' 的信息" 等。AI 模型会通过调用 Okta MCP Server 提供的工具来执行这些操作,并将结果返回给你。
重要提示:
- 安全性: 请仔细阅读文档中关于安全性的部分,特别是 SSE 传输模式的安全风险。推荐使用默认的 STDIO 模式。
- Alpha 版本: 该项目目前处于 Alpha 阶段,功能仍在快速迭代和完善中,请注意其局限性。
- 模型兼容性: 请确保你使用的 AI 模型 (如 GPT-4.0, Claude 3.7 Sonnet) 支持工具调用/函数调用功能,并且是最新版本。
信息
分类
商业系统