Citadel MCP 服务器
一 MCP(模型上下文协议) 服务器 标题 身份管理。通过Claude Code等人工智能工具的自然语言管理用户、项目、应用程序、角色和服务帐户。
*“为创建用户jane@example.com,为她分配应用程序:财务角色,并给我身份验证配置。"* --这三个工具称为AI手柄。
工具(25)
| 类别 | 工具 | 描述 |
|---|---|---|
| 用户 | zitadel_list_users | 列出/搜索用户 |
zitadel_get_user | 获取用户详细信息 | |
zitadel_create_user | 创建用户(发送邀请电子邮件) | |
zitadel_deactivate_user | 停用用户 | |
zitadel_reactivate_user | 重新激活用户 | |
| 项目 | zitadel_list_projects | 列出项目 |
zitadel_get_project | 获取项目详细信息 | |
zitadel_create_project | 创建项目 | |
| 应用程序 | zitadel_list_apps | 列出项目中的应用程序 |
zitadel_get_app | 获取应用程序详细信息+客户端ID | |
zitadel_create_oidc_app | 创建OIDC应用程序 | |
zitadel_update_app | 更新应用程序(重定向URI等) | |
| 角色 | zitadel_list_project_roles | 列出项目中的角色 |
zitadel_create_project_role | 创建一个角色(例如。, app:finance) | |
zitadel_list_user_grants | 列出用户的角色授权 | |
zitadel_create_user_grant | 为用户分配角色 | |
zitadel_remove_user_grant | 删除角色授予 | |
| 服务账户 | zitadel_create_service_user | 创建计算机用户 |
zitadel_create_service_user_key | 生成密钥对 | |
zitadel_list_service_user_keys | 列出密钥(仅元数据) | |
| 组织 | zitadel_get_org | 获取当前组织详细信息 |
zitadel_list_orgs | 列出组织 | |
| 效用 | zitadel_get_auth_config | 获取应用程序的.env.local模板 |
| 门户 | portal_register_app | 在门户数据库中注册应用程序 |
portal_setup_full_app | 一键:Zitadel+门户设置 |
门户工具(portal_*)仅在以下情况下可用 PORTAL_DATABASE_URL 已配置。
先决条件
- Zitadel实例(云或自托管)
- 服务帐户 组织所有者 或 IAM管理员 角色
- 服务帐户的JSON密钥
创建服务帐户
- 在Zitadel控制台中,转到 用户 > 服务用户 > 新
- 给它起个名字(例如。,
mcp-admin)并选择 持有者 令牌类型 - 转到服务用户的 钥匙 选项卡> 新 > JSON
- 保存下载的密钥文件——您需要
userId,keyId,并采用base64编码key - 向服务帐户授予 组织所有者 角色下 组织 > 授权
设置
git clone https://github.com/takleb3rry/zitadel-mcp.git
cd zitadel-mcp
npm install
npm run build配置
将服务器添加到MCP客户端配置中。下面的JSON块适用于这两个选项:
- 全球 (所有项目):
~/.claude.json在...之下"mcpServers"钥匙 - 每个项目:
.mcp.json在项目根中
{
"mcpServers": {
"zitadel": {
"command": "node",
"args": ["/path/to/zitadel-mcp/build/index.js"],
"env": {
"ZITADEL_ISSUER": "https://your-instance.zitadel.cloud",
"ZITADEL_SERVICE_ACCOUNT_USER_ID": "...",
"ZITADEL_SERVICE_ACCOUNT_KEY_ID": "...",
"ZITADEL_SERVICE_ACCOUNT_PRIVATE_KEY": "...",
"ZITADEL_ORG_ID": "...",
"ZITADEL_PROJECT_ID": "..."
}
}
}
}添加配置后重新启动Claude Code。Zitadel工具将自动出现。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
ZITADEL_ISSUER | 是 | Zitadel实例URL |
ZITADEL_SERVICE_ACCOUNT_USER_ID | 是 | 服务帐户用户ID |
ZITADEL_SERVICE_ACCOUNT_KEY_ID | 是 | JSON密钥文件中的密钥ID |
ZITADEL_SERVICE_ACCOUNT_PRIVATE_KEY | 是 | Base64编码的RSA私钥( key 从下载的JSON中提取字段) |
ZITADEL_ORG_ID | 是 | 组织ID |
ZITADEL_PROJECT_ID | 否 | 角色操作的默认项目ID |
PORTAL_DATABASE_URL | 否 | Postgres连接字符串(启用门户工具) |
LOG_LEVEL | 没有 | DEBUG, INFO, WARN, ERROR (默认值: INFO) |
安全
此服务器对您的Zitadel实例具有管理员级别的访问权限。 在使用之前,请先了解这意味着什么:
- 服务帐户需要 组织所有者 (或 IAM管理员 为了
zitadel_list_orgs).它可以在您的组织中创建用户、修改角色和管理应用程序。 - 当您创建OIDC应用程序时(
zitadel_create_oidc_app),the 客户端密钥 在工具响应中返回。它仅在创建时可用。人工智能助手(及其对话历史)会看到它——立即保存并将其视为敏感信息。 - 生成服务帐户密钥时(
zitadel_create_service_user_key),the 完整私钥 在工具响应中返回。同样的警告:保存它,并注意它在MCP客户端的对话中可见。 - 所有包含PII(电子邮件、姓名、URL)的工具参数为 从调试日志中编辑.IDs和工具名称仍会被记录。
- 在API路径中使用之前,所有Zitadel ID都会根据字母数字格式进行验证。
新用户注意事项: 我扫描了这个仓库中的所有源文件,没有发现任何值得注意的地方,但我总是建议你在安装任何可以访问你的基础设施的MCP服务器之前,让你自己的AI或工具审计代码。完整的源代码是大约800行TypeScript——快速回顾应该不会花太长时间。
发展
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm start # Run compiled version
npm test # Run tests许可证
麻省理工学院
