使用说明
Okta MCP服务器
此MCP服务器使Claude能够与Okta的用户管理系统进行交互,提供全面的用户和组管理功能以及入职自动化。
先决条件
- Node.js(v16或更高版本)
- Claude桌面应用程序
- Okta开发者账户
- Okta的管理员API令牌
安装说明
1.创建Okta开发者帐户
- 转到 Okta开发者控制台
- 创建新帐户或登录现有帐户
- 注意你的Okta域名(例如。,
dev-123456.okta.com)
2.创建API令牌
- 在Okta开发人员控制台中,转到安全>API>令牌
- 点击“创建令牌”
- 为您的令牌命名(例如“MCP服务器令牌”)
- 复制令牌值(您将无法再次看到它)
3.初始项目设置
安装依赖项:
npm install
4.配置克劳德桌面
打开您的Claude Desktop配置文件:
对于MacOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
对于Windows:
code %AppData%\Claude\claude_desktop_config.json
添加或更新配置:
{
"mcpServers": {
"okta": {
"command": "node",
"args": [
"PATH_TO_PROJECT_DIRECTORY/dist/index.js"
],
"env": {
"OKTA_ORG_URL": "https://your-domain.okta.com",
"OKTA_API_TOKEN": "your-api-token"
}
}
}
}
保存文件并重新启动Claude Desktop。
可用工具
服务器提供以下工具:
用户管理
get_user
从Okta检索详细的用户信息,包括:
- 用户详细信息(ID、状态)
- 帐户日期(创建、激活、上次登录等)
- 个人信息(姓名、电子邮件)
- 雇用详情
- 联系方式
- 地址
- 偏好设置
find_users_by_attribute
使用高级筛选按任何配置文件属性搜索用户:
- 支持的属性:名字、姓氏、电子邮件、经理、部门、职务、部门、组织、员工编号、成本中心、用户类型、城市、州
- 搜索运算符:
eq(完全匹配)-适用于所有属性sw(以开头)-适用于所有属性ew(以结尾)-适用于大多数属性co(包含)-适用于某些属性(名字、姓氏、电子邮件)pr(存在/存在)-适用于所有属性(查找具有该属性任何值的用户)
- 特性:
- 使用Okta的本地搜索以获得最佳性能
- 自动回退到客户端筛选不受支持的运算符
- 敏感属性搜索结果中的PII屏蔽
- 状态筛选(包括/排除非活动用户)
- 分页支持,可自定义限制
list_users
列出Okta的用户,并可选择过滤和分页:
- 支持SCIM筛选器表达式(例如,'profile.firstNameeq“John”')
- 跨多个字段的自由形式文本搜索
- 排序选项(按状态、创建日期等)
- 分页支持,可自定义限制
activate_user
在Okta中激活用户:
- 发送激活电子邮件的选项
- 将用户状态更新为活动
suspend_user
在Okta暂停用户
未暂停用户
取消Okta中先前被暂停的用户的订阅
删除用户
从Okta中删除用户(注意:必须先停用用户)
get_user_last_location
从Okta系统日志中检索用户的最后已知位置和登录信息
组管理
list_groups
列出Okta中具有可选过滤和分页功能的用户组:
- 组的筛选表达式(例如,“键入eq”OKTA_GROUP“”)
- 跨组字段的自由形式文本搜索
- 排序选项(按名称、类型等)
- 分页支持,可自定义限制
创建组
在Okta中创建一个具有名称和可选描述的新组
get_group
检索特定组的详细信息
删除组
从Okta删除组
assign_user_to_group
将用户分配到Okta中的组
remove_user_from_group
从Okta的组中删除用户
list_group_users
列出具有分页支持的特定组中的所有用户
车载自动化(实验)
注: 入职自动化工具是实验性的,可能会根据Okta的API限制条件进行更改或限制。在生产环境中小心使用。
bulk_user_import
从CSV字符串导入多个用户:
- 基于CSV数据创建用户帐户
- 用户的可选激活
- 可选电子邮件通知
- 分配给默认组
assign_users_to_groups
根据属性映射将多个用户分配到组:
- 将用户属性(部门、职务等)映射到特定组
- 基于属性的用户批量分配
供应_应用
为多个用户提供应用程序访问权限:
- 将用户分配给应用程序
- 支持批量资源调配
运行登机工作流程
从CSV数据为多个用户运行完整的入职流程:
- 用户从CSV导入
- 自动激活
- 基于属性的组分配
- 应用供应
- 欢迎电子邮件配置
Claude中的示例用法
设置后,您可以使用以下命令:
用户管理
- “显示用户ID为XXXX的用户的详细信息”
- “查找工程部门的所有用户”
- “搜索名字以‘John’开头的用户”
- “查找电子邮件中包含‘gmail’的用户”
- “显示分配了部门的所有用户”
- “列出标题为“经理”的用户”
- “用户的状态是什么john.doe@company.com"
- “用户上次登录是什么时候jane.smith@organization.com"
- “查找上个月创建的用户”
- “激活ID为XXXX的用户”
- “暂停ID为XXXX的用户”
- “删除ID为XXXX的已停用用户”
- “用户XXXX上次从哪里登录的?”
高级用户搜索
- “查找销售部门的所有用户”→ Uses
find_users_by_attribute随着department eq "Sales" - “显示电子邮件以“admin”开头的用户”→ Uses
email sw "admin" - “查找分配了任何经理的用户”→ Uses
manager pr - “列出姓氏包含'smith'的用户”→ Uses
lastName co "smith"
组管理
- “显示我Okta组织中的所有组”
- “列出包含单词‘admin’的组”
- “创建一个名为“营销团队”的新组”
- “获取ID为XXXX的组的详细信息”
- “删除ID为XXXX的组”
- “将用户XXXX添加到组YYYY”
- “从组YYYY中删除用户XXXX”
- “列出“财务”组中的所有用户”
车载自动化
- “从CSV数据导入这些用户:[CSV内容]”
- “根据部门属性将用户分配到组”
- “为这5个用户提供应用程序访问权限”
- “为这些新员工运行完整的入职流程:[CSV内容]”
错误处理
该服务器包括强大的错误处理功能,用于:
- 未找到用户或组(404错误)
- API身份验证问题
- 用户配置文件缺失或无效
- API一般错误
- CSV解析问题
- 用户属性映射失败
- 应用程序配置错误
- 不支持的搜索运算符(自动回退到其他方法)
故障排除
常见问题
Claude中未出现的工具:
- 检查克劳德桌面日志:
tail -f ~/Library/Logs/Claude/mcp*.log - 验证所有环境变量是否设置正确
- 确保index.js的路径是绝对正确的
身份验证错误:
- 验证您的API令牌是否有效
- 检查OKTA_ORG_URL是否包含带https的完整URL://
- 确保您的Okta域名正确
服务器连接问题:
- 检查服务器是否已成功构建
- 验证build/index.js上的文件权限(应该是755)
- 尝试直接运行服务器:
node /path/to/build/index.js
搜索问题:
- 一些搜索运算符不支持所有属性(例如。,
contains不起作用department) - 需要时,服务器会自动回退到其他搜索方法
- 检查使用了哪种搜索方法的响应消息
查看日志
要查看服务器日志,请执行以下操作:
对于MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
对于Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
环境变量
如果您遇到环境变量错误,请验证:
OKTA_ORG_URL:应该是完整的URL(例如,“https://dev-123456.okta.com")OKTA_API_TOKEN:应为有效的API令牌
安全考虑
- 确保API代币的安全
- 不将凭据提交到版本控制
- 对敏感数据使用环境变量
- 定期轮换API代币
- 在Okta管理控制台中监控API的使用情况
- 为API调用实现速率限制
- 使用API令牌所需的最低权限
- 对敏感搜索参数启用PII屏蔽
搜索运营商兼容性
不同的Okta属性支持不同的搜索运算符:
| 属性类型 | eq | sw | ew | co | pr |
|---|---|---|---|---|---|
| 名字,姓氏 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 电子邮件,登录 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 部门、职务 | ✅ | ✅ | ❌ | ❌* | ✅ |
| 部门、组织 | ✅ | ✅ | ❌ | ❌* | ✅ |
| 所有属性 | ✅ | ✅ | ⚠️ | ⚠️ | ✅ |
*❌ = 不支持,⚠️ = 可能并非所有属性都支持
注: 当操作员不受支持时,服务器会自动回退到客户端过滤以实现兼容性。
类型
服务器包括Okta用户和组数据的TypeScript接口:
interface OktaUserProfile {
login: string;
email: string;
secondEmail?: string;
firstName: string;
lastName: string;
displayName: string;
nickName?: string;
organization: string;
title: string;
division: string;
department: string;
employeeNumber: string;
userType: string;
costCenter: string;
mobilePhone?: string;
primaryPhone?: string;
streetAddress: string;
city: string;
state: string;
zipCode: string;
countryCode: string;
preferredLanguage: string;
profileUrl?: string;
}
interface OktaUser {
id: string;
status: string;
created: string;
activated: string;
lastLogin: string;
lastUpdated: string;
statusChanged: string;
passwordChanged: string;
profile: OktaUserProfile;
}
interface OktaGroup {
id: string;
created: string;
lastUpdated: string;
lastMembershipUpdated: string;
type: string;
objectClass: string[];
profile: {
name: string;
description: string;
};
}
CSV格式用于登机
使用批量导入或入职工作流工具时,CSV应包含以下标题:
firstName(必填)lastName(必填)email(必填)department(可选)title(可选)mobilePhone(可选)
例子:
firstName,lastName,email,department,title,mobilePhone
John,Doe,john.doe@example.com,Engineering,Senior Developer,+1-555-123-4567
Jane,Smith,jane.smith@example.com,Marketing,Director,+1-555-987-6543
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
如果您遇到任何问题:
- 检查上面的故障排除部分
- 查看克劳德桌面日志
- 检查服务器的错误输出
- 查看Okta的开发人员文档
注意:欢迎PR!
