Okta管理MCP服务器
一种模型上下文协议(MCP)服务器,通过标准化接口提供全面的Okta管理功能。该服务器使AI助手和其他MCP客户端能够在Okta环境中执行用户管理、应用程序管理、组操作和系统管理任务。
特性
用户管理
- 列出用户:检索Okta组织中的所有用户
- 获取用户:获取特定用户的详细信息
- 创建用户:向组织添加新用户
- 更新用户:修改现有用户配置文件(姓名、电子邮件、电话)
- 启用/禁用用户:激活或停用用户帐户
- 删除用户:从组织中永久删除用户
- 重设密码:为用户生成密码重置令牌
应用程序管理
- 列出应用程序:查看组织中的所有应用程序
- 获取应用程序:检索详细的应用程序信息
- 获取用户应用:查看分配给特定用户的应用程序
- 将用户分配到应用程序:授予用户应用程序访问权限
组管理
- 列出组:查看组织中的所有组
- 获取组:检索详细的组信息
- 创建组:添加新组
- 将用户添加到组:将用户分配到组
- 从组中删除用户:从组中取消分配用户
- 列出组用户:查看特定组中的所有用户
多因素身份验证(MFA)
- 列出用户因素:查看为用户配置的所有MFA方法
策略管理
- 列出政策:查看组织策略(登录、密码、MFA等)
系统管理
- 列出系统日志:检索审计日志和系统事件
- 列出网络区域:查看已配置的网络区域
安装
- 克隆存储库:
git clone
cd okta-admin-mcp-server- 安装依赖项:
npm install- 创建一个
.env项目根目录中的文件:
OKTA_ORG_URL=https://your-org.okta.com
OKTA_API_TOKEN=your-api-token
NODE_ENV=production- 构建项目:
npm run build配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
OKTA_ORG_URL | 您的Okta组织URL | 是 |
OKTA_API_TOKEN | 具有管理员权限的Okta API令牌 | 是 |
NODE_ENV | 环境模式(production 或 test) | 没有 |
Okta API代币设置
- 登录Okta管理控制台
- 引导到 安全 > API
- 点击 代币 标签
- 点击 创建令牌
- 为令牌提供一个名称
- 复制生成的令牌(安全保存)
所需Okta权限
API令牌必须具有以下管理员角色:
- 超级管理员 (建议使用完整功能)
- 或特定的管理员角色:
- 用户管理员 - 应用程序管理员 - 组管理员 - 只读管理员(用于读取操作)
用法
启动服务器
npm start服务器将以stdio模式启动,并通过模型上下文协议进行连接。
发展模式
对于使用模拟数据的开发:
NODE_ENV=test npm start这使用模拟客户端,而不是对Okta进行真正的API调用。
MCP客户端集成
配置您的MCP客户端以连接到此服务器。各种客户端的示例配置:
Claude桌面配置
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"okta-admin": {
"command": "node",
"args": ["path/to/okta-admin-mcp-server/dist/server.js"]
}
}
}API工具参考
用户管理工具
create-user
在Okta中创建新用户。
- 参数:
email,firstName,lastName,activate(可选,默认值:true)
get-user
按ID检索特定用户。
- 参数:
userId
list-user
列出组织中的所有用户。
- 参数:无
update-user
更新现有用户的个人资料。
- 参数:
userId,firstName(可选),lastName(可选),email(可选),mobilePhone(可选)
disable-user / enable-user
停用或激活用户帐户。
- 参数:
userId
delete-user
永久删除用户。
- 参数:
userId,sendEmail(可选,默认值:false)
reset-user-password
为用户生成密码重置令牌。
- 参数:
userId,sendEmail(可选,默认值:false)
应用程序管理工具
list-applications
列出组织中的所有应用程序。
- 参数:
limit(可选,默认值:20)
get-application
检索特定应用程序的详细信息。
- 参数:
appId
get-user-apps
获取分配给用户的所有应用程序。
- 参数:
userId
assign-user-to-app
将用户分配给应用程序。
- 参数:
appId,userId
组管理工具
list-groups
列出组织中的所有组。
- 参数:
limit(可选,默认值:20)
get-group
检索特定组的详细信息。
- 参数:
groupId
create-group
创建新组。
- 参数:
name,description(可选)
add-user-to-group
将用户添加到组中。
- 参数:
groupId,userId
remove-user-from-group
从组中删除用户。
- 参数:
groupId,userId
list-group-users
列出特定组中的所有用户。
- 参数:
groupId
系统管理工具
list-system-logs
检索系统审核日志。
- 参数:
limit(可选,默认值:100),since(可选,ISO 8601格式)
list-user-factors
列出为用户配置的所有MFA因素。
- 参数:
userId
list-policies
按类型列出组织策略。
- 参数:
type(必填,以下选项之一:OKTA_SIGN_ON、密码、MFA_ENROLL、IDP_DISCOVERY、访问权限、配置文件登录、发布授权、实体登录)
list-zones
列出所有网络区域。
- 参数:无
建筑
项目结构
src/
├── server.ts # Main MCP server entry point
├── client/
│ ├── client-factory.ts # Factory for creating Okta clients
│ └── mock-client.ts # Mock client for testing
└── tools/
├── tool-registry.ts # Central tool registration
├── UserManagement.ts # User-related operations
├── GroupManagement.ts # Group-related operations
├── ApplicationManagement.ts # App-related operations
├── FactorManagement.ts # MFA-related operations
├── PolicyManagement.ts # Policy-related operations
├── SystemManagement.ts # System/logging operations
└── ZoneManagement.ts # Network zone operations关键组件
- 服务器:处理协议通信的主MCP服务器
- 客户工厂:管理真实与模拟Okta客户的创建
- 工具模块:按职能领域组织,每个职能领域提供特定的操作
- 工具注册表:所有可用工具的中心注册点
错误处理
服务器包括全面的错误处理:
- API错误:捕获Okta API错误并返回描述性消息
- 验证错误:使用Zod模式进行输入验证
- 网络错误:连接问题得到妥善处理
- 身份验证错误:明确报告了无效的令牌或权限
测试
该项目包括全面的基于Jest的测试,可以对模拟数据和真实Okta实例运行。
可用测试命令
# Run tests against mock data (safe, no real API calls)
npm run test
# Run tests against production Okta instance (requires valid credentials)
npm run prdtest测试配置
测试使用模型上下文协议客户端与服务器交互,提供MCP接口的端到端测试。
模拟模式测试(npm run test)
- 用途
NODE_ENV=test环境 - 没有真正的API调用Okta
- 可预测的模拟响应
- 安全,便于持续集成
模拟模式提供:
- 2个样本用户(
u1,u2) - 2个样本组(
g1,g2) - 2个示例应用程序(
app1,app2) - 示例系统日志、策略和网络区域
生产测试(npm run prdtest)
- 用途
NODE_ENV=production环境 - 对您的Okta实例进行真正的API调用
- 需要有效
OKTA_ORG_URL和OKTA_API_TOKEN - 警告:在Okta组织中创建/修改/删除真实数据
测试覆盖率
测试套件涵盖了所有用户管理操作:
- ✅ 列出用户 -检索组织中的所有用户
- ✅ 创建用户 -使用基于时间戳的电子邮件创建测试用户
- ✅ 更新用户 -修改用户配置文件(名字、姓氏)
- ✅ 获取用户 -检索特定用户详细信息
- ✅ 重设密码 -生成密码重置令牌
- ✅ 禁止用户 -停用用户帐户
- ✅ 启用用户 -重新激活用户帐户
- ✅ 删除用户 -永久删除用户
- ✅ 错误处理 -测试无效的用户ID场景
测试数据清理
测试会自动清理创建的数据:
- 使用基于时间戳的唯一标识符创建测试用户
- 创建的用户将在测试套件结束时删除
- 模拟模式不需要清理(不创建真实数据)
运行个人测试
# Run with debug output
DEBUG=true npm run test
# Run specific test file
npm test okta-api.test.ts测试结构
// Example test structure
describe('User Management Functions', () => {
it('Should create a new user', async () => {
const result = await mclient.callTool({
name: "create-user",
arguments: {
email: "test@example.com",
firstName: "Test",
lastName: "User"
}
});
expect(result.isError).toBeFalsy();
expect(result.content).toBeDefined();
});
});CI/CD集成
对于持续集成,使用模拟模式以避免API速率限制和数据污染:
# GitHub Actions example
- name: Run Tests
run: npm run test
env:
NODE_ENV: test安全考虑
- API代币安全:安全地存储代币并定期轮换
- 最小特权:使用具有最低所需权限的管理员角色
- 网络安全:考虑IP限制和网络区域
- 审计日志:监控系统日志以防止未经授权的访问
- 环境隔离:使用单独的令牌进行开发/生产
故障排除
常见问题
- 身份验证失败
- 验证 OKTA_ORG_URL 正确(包括https://) - 检查API令牌的有效性和权限 - 确保令牌未过期
- 权限不足
- 验证管理员角色分配 - 检查特定操作是否需要更高的权限
- 网络问题
- 验证与Okta的网络连接 - 检查防火墙和代理设置 - 验证SSL/TLS配置
- 资源未找到
- 验证用户/组/应用程序ID是否正确 - 检查您的组织中是否存在资源
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试(包括模拟模式)
- 提交拉取请求
许可证
\[待添加许可证信息\]
支持
对于问题和疑问:
- 检查故障排除部分
- 查看Okta API文件
- 在项目存储库中打开问题
