mcpField
D
Delinea Mcp

Delinea Mcp

本地服务
github.com/DelineaXPM安全502 周前更新

关于 Delinea Mcp

面向使用 Delinea Secret Server 与 Platform API 的团队的 MCP 服务,提供密钥、用户、群组和角色管理工具。支持多种传输方式,并可在服务端处理密钥,避免密钥值传给模型。

主要功能

  1. 01管理密钥、文件夹与访问请求
  2. 02管理用户、群组和角色
  3. 03支持 ChatGPT 搜索与获取工具
  4. 04提供 stdio、SSE 和可流式 HTTP 传输
  5. 05服务端生成或轮换密码

适用场景

  1. 01搜索并读取 Secret Server 密钥
  2. 02处理访问请求和收件箱消息
  3. 03管理目录用户与角色
  4. 04在不向模型暴露密钥值的情况下轮换密码

MCP 相关

该 MCP 服务将 Secret Server 工具及可选的 Delinea Platform、StrongDM 工具开放给 MCP 客户端。支持 stdio、SSE 和可流式 HTTP,并提供 OAuth 2.0。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DelineaMCP

适用于 Delinea Secret Server 和 Platform API 的 MCP 服务

许可证


新闻

  • 2026 年 8 月 11 日 — MCP Protocol v2(规范修订版 2026-07-28,支持可流式 HTTP) 和实验性的 StrongDM API 支持现已推出 — 请参阅 发布说明。
  • 2026 年 8 月 11 日 — 我们是“LLM 无法查看机密”保管库用例的原创提供方 — 谨防仿冒者 ;)

功能

  • 自动向 Secret Server 进行身份验证
  • 丰富的 Secret Server 工具集,可管理文件夹、机密、用户、组和角色。 包含收件箱和访问请求辅助工具,以及编码 Agent 实用工具。
  • ChatGPT 兼容工具(search 和 fetch),用于受控的 AI 交互。
  • 可选的 Delinea Platform 用户管理工具
  • 可选的实验性 StrongDM(SDM)工具 — 访问授权、权限审计、用户/角色生命周期管理、运行状况和活动报告(请参阅 docs/strongdm.md;使用 pip install "delinea-mcp[strongdm]" 安装)
  • 可流式 HTTP(/mcp)、旧版服务器发送事件(/mcp/sse)和 STDIO 传输方式
  • 根据 MCP 规范实现的 OAuth 2.0 动态客户端注册
  • 支持 TLS 安全连接
  • 可直接运行的 Docker 镜像和开发服务器入口点
  • 已通过 ChatGPT、Claude Desktop、远程 Claude connector、VSCode Copilot 和 openwebui 测试

安装

说明

本项目使用 uv(https://github.com/astral-sh/uv),不过如果你更喜欢不使用它,也可以按需照常使用 pip 和 venv 命令。

  • 安装 Uv
  • 初始化项目:uv pip sync requirements.txt
  • 使用 uv run server.py --config config.json

配置

密码等机密信息仍通过环境变量提供。 在 shell 环境中设置 DELINEA_PASSWORD。 可选功能依赖其他变量,例如 AZURE_OPENAI_KEY 或 PLATFORM_SERVICE_PASSWORD。

非机密参数应放在 config.json 中:

{
  "delinea_username": "<username>",
  "delinea_base_url": "https://your-secret-server/SecretServer",
  "platform_hostname": "<tenant>.secureplatform.io",
  "platform_service_account": "<service_account>",
  "platform_tenant_id": "<tenant_id>",
  "azure_openai_endpoint": "https://example.openai.azure.com/",
  "azure_openai_deployment": "<deployment_name>",
  "auth_mode": "none",
  "transport_mode": "stdio",
  "chatgpt_disable_scope_checks": false,
  "port": 8000,
  "debug": false,
  "external_hostname": null,
  "ssl_keyfile": null,
  "ssl_certfile": null,
  "registration_psk": null,
  "jwt_key_path": ".cache/jwt.json",
  "oauth_db_path": ".cache/oauth.db",
  "enabled_tools": []
}

对于 Secret Server Cloud,直接使用云端 URL,不要添加 /SecretServer。 指定 ssl_keyfile 和 ssl_certfile 以启用 HTTPS。 对于 Let's Encrypt,请使用 privkey.pem 和 fullchain.pem 文件。

配置文件支持以下键:

  • delinea_username - Secret Server 用户名。必须是有权限执行所需任务的程序化用户。
  • delinea_base_url - Secret Server 实例的基础 URL。
  • platform_hostname - Platform 租户主机名(启用 Platform 工具)。
  • platform_service_account - 与 Platform API 配合使用的服务账户。
  • platform_tenant_id - Platform API 请求的租户 ID。
  • strongdm_api_host - StrongDM 控制平面(默认值为 app.strongdm.com:443; 也提供英国/欧盟版本)。凭据来自 SDM_API_ACCESS_KEY / SDM_API_SECRET_KEY 环境变量;参见 docs/strongdm.md。
  • azure_openai_endpoint - Azure OpenAI 端点。仅在需要自动生成报告时设置(大多数 Agent 都能自行生成报告 SQL,因此除非有需要,否则不要启用)。
  • azure_openai_deployment - Azure OpenAI 部署名称。
  • auth_mode - 身份验证模式(none 或 oauth)。显然,OAuth 无法与 stdio 传输方式配合使用。
  • transport_mode - 命令行使用 stdio,HTTP 使用 sse。在 sse 模式下,服务会同时公开 /mcp 上的可流式 HTTP 端点(当前 MCP 传输方式,支持 2024-11-05 至 2026-07-28 的协议修订版本)以及旧版 HTTP+SSE 端点 /mcp/sse + /messages/。
  • streamable_http_stateless - 默认值为 true;运行 /mcp 时不使用服务端会话(推荐用于远程连接器)。设置为 false 可启用 基于会话的运行方式,并使用独立的 GET 流。
  • streamable_http_json_response - 默认值为 true;在 /mcp 上使用纯 JSON 响应,而不是 SSE 封装的响应。
  • chatgpt_disable_scope_checks - 跳过对 ChatGPT 请求的 scope 验证。仅在连接 ChatGPT 时遇到问题才启用。
  • port - sse 模式下 HTTP 服务的端口。
  • debug - 启用详细日志记录。
  • external_hostname - 构造 OAuth 令牌受众时使用的主机名。不要添加 HTTP(S) 前缀或端口。
  • ssl_keyfile - HTTPS 使用的 SSL 密钥路径。(例如 privkey.pem)
  • ssl_certfile - HTTPS 使用的 SSL 证书路径。(例如 fullchain.pem)
  • registration_psk - 注册 OAuth 客户端所需的预共享密钥。你需要在浏览器中输入此密钥,以批准 OAuth 连接。
  • jwt_key_path - OAuth 令牌使用的 RSA 密钥对位置。默认为 .cache/jwt.json。如果文件不存在,则自动生成。
  • oauth_db_path - OAuth 数据库文件路径。默认为 .cache/oauth.db。如果文件不存在,则自动生成。
  • enabled_tools - 要注册的工具名称列表。空列表表示启用所有工具。强烈建议根据使用场景或任务选择性启用工具。部分示例请参见 docs/ 文件夹。
  • search_objects - search 工具允许的对象类型。 默认为 ["secret"],也可以包含 user、folder、group 和 role。
  • fetch_objects - fetch 工具允许的对象类型。 默认为 ["secret"],也可以包含与 search_objects 相同的值。

运行服务

在本地以开发模式启动服务:

python server.py

启动时,服务会请求一个 bearer 令牌,并将其保存以供后续 API 请求使用。 本项目将持续扩展,以集成更多 Secret Server API 功能。

MCP 工具

该服务提供适用于 Secret Server、Delinea Platform 身份目录以及(可选)StrongDM 的 MCP 工具。每个工具都会通过 tools/list 发布行为注释(只读/破坏性提示)。

ChatGPT / deep-research 兼容性
  • search(query) - 统一搜索,返回 {id, title, url} 结果;对象类型受 search_objects 配置项限制(默认:仅限机密)。
  • fetch(id) - 获取由 search 搜索到的单个对象;受 fetch_objects 限制。
Secret Server
  • run_report(sql_query, report_name=None) - 创建并执行临时报告。
  • ai_generate_and_run_report(description) - 使用 Azure OpenAI 生成 SQL 并运行。 需要 Azure OpenAI 变量。
  • list_example_reports() - 列出示例查询和表信息。
  • get_secret(id, summary=False) - 获取机密或摘要详情。
  • get_folder(id) - 获取文件夹元数据及其子项。
  • search_secrets(query, lookup=False) - 搜索或查找机密。
  • search_folders(query, lookup=False) - 搜索或查找文件夹。
  • get_secret_environment_variable(secret_id, environment) - 输出用于在指定 shell 中获取机密凭据的脚本。
  • check_secret_template(template_id) - 获取机密模板详情。
  • check_secret_template_field(template_id, field_id) - 检查模板是否包含某个字段。
  • get_secret_template_field(field_id) - 按 ID 获取特定机密模板字段的详情。
  • handle_access_request(request_id, status, response_comment, start_date=None, expiration_date=None) - 批准或拒绝访问请求。
  • get_pending_access_requests() - 列出待处理的访问请求。
  • get_inbox_messages(read_status_filter=None, take=20, skip=0) - 获取收件箱消息。
  • mark_inbox_messages_read(message_ids, read=True) - 将消息标记为已读或未读。
  • create_secret_with_generated_password(name, secret_template_id, password_field_id, items, folder_id=None, site_id=None, comment=None) - 创建密码由服务端生成的机密;仅返回经过净化的 元数据,值绝不会传递给模型。
  • update_secret_generated_password(secret_id, field_slug, password_field_id, comment=None) - 在服务端轮换机密密码,不会暴露其值。
  • update_secret_fields(secret_id, field_updates, comment=None, allow_password_fields=False) - 读取模板 → 修改非密码字段 → 验证流程;除非明确允许, 否则会拒绝标记为密码的字段。
  • set_secret_field_environment_variable(secret_id, field_slug, environment, source="stdin", comment=None) - 输出一个 shell 脚本(bash/powershell/cmd),在本地读取值并将其 写入机密字段,使该值完全绕过模型。
  • bulk_user_response(user_ids, scenario, comment, confirm=False) - 针对批量用户操作 API 的 事件处理组合工具。场景包括: compromise、offboard、unlock、reenable、force_logout;要求 confirm=True 且审计注释非空,未确认时会显示预览。
  • role_management(action, role_id=None, data=None, params=None) - 管理角色。 action 可以是 list、get、create 或 update。 列出角色时,可使用 params 传递可选查询参数。 示例:role_management("update", role_id=3, data={"name": "New Role"})。
  • user_role_management(action, user_id, role_ids=None) - 为用户分配或移除角色。 action 为 get、add 或 remove,role_ids 是用于添加或移除操作的角色标识符列表。
  • group_management(action, group_id=None, data=None, params=None) - 管理用户组。 action 可以是 get、list、create 或 delete。 执行 get/delete 时提供 group_id,创建用户组时提供 data。
  • folder_management(action, folder_id=None, data=None, params=None) - 管理文件夹。 action 可以是 get、list、create、update 或 delete。 执行 get、update 或 delete 时提供 folder_id,创建或更新文件夹时提供 data。
  • user_group_management(action, user_id, group_ids=None) - 管理用户的用户组成员资格。 action 为 get、add 或 remove。 添加或移除成员资格时,提供 group_ids 列表。
  • group_role_management(action, group_id, role_ids=None) - 管理用户组的角色。 使用 list、add 或 remove 操作。 添加或移除角色时,提供 role_ids。
  • health_check() - 查询 Secret Server 健康检查端点并返回当前服务状态。
Delinea Platform 用户和角色

自 v1.0.0 起,规范的用户工具面向 Delinea Platform 身份目录(需要 platform_hostname 和 PLATFORM_SERVICE_* 凭据;如果未提供这些凭据,工具会返回操作指引,而不会报错):

  • user_management(action, user_id=None, data=None, username=None) - Platform 用户 CRUD。action 接受 get、create、update、delete 或 search。
  • search_users(query) - 搜索 Platform 用户目录。
  • platform_role_management(action, role_id=None, data=None, page_size=100, query="%") - Platform 角色 CRUD(list、get、create、update、delete);角色 变更操作基于发现机制,在 API 范围未开放相关操作的租户上会返回操作指引。
  • platform_user_role_management(action, role_id, user_principals=None) - 在 Platform 角色上对用户执行 list、add 或 remove 操作。
  • platform_user_management(...) - user_management 的弃用别名。
Secret Server 本地用户(旧版)

对于未配置 Platform 的纯 SS 部署:

  • secretserver_local_user_management(action, user_id=None, data=None, skip=0, take=20, is_exporting=False) - v1.0.0 之前的 Secret Server 用户操作:get、create、update、 delete、list_sessions、reset_2fa、reset_password、lock_out。 示例:secretserver_local_user_management("reset_password", user_id=42, data={"newPassword": "Pa$$w0rd"})。
  • search_secretserver_local_users(query) - 搜索 Secret Server 本地用户存储。
StrongDM 工具(可选,实验性)

实验性:StrongDM 后端尚未在实时 SDM 组织中验证(仅针对 SDK 接口进行了单元测试)。请预期会存在一些问题,并报告遇到的问题。通过 strongdm 扩展安装;完整指南请参阅 docs/strongdm.md。sdm_search、sdm_audit_access、sdm_grant_access (限时即时授权或长期授权)、sdm_revoke_access、 sdm_user_management(入职/离职流程)、sdm_role_management、 sdm_resource_health、sdm_access_requests、sdm_activity_report、 sdm_network_status。破坏性操作需要通过确认门控,并附带审计备注;名称匹配不明确时会返回候选项,而不会进行变更。

使用上文介绍的服务配置变量进行身份验证。 如果缺少 Azure OpenAI 变量,AI 工具会自动禁用。 只有 config.json 中列出的工具名称才会注册。 空列表表示启用所有工具。

使用场景

文档介绍了将工具连接到服务的多种工作流:

Docker 快速入门

提供了 Dockerfile,用于运行 MCP 服务,而无需在本地安装 Python 依赖项。

  1. 构建镜像:
docker build -t dev.local/delinea-mcp:latest .
  1. 运行服务(通过环境变量传递凭据):
docker run --rm -p 8000:8000 \
  -e DELINEA_PASSWORD=<password> \
  -e PLATFORM_SERVICE_PASSWORD=<password> \
  -e DELINEA_DEBUG=1 \
  -e AZURE_OPENAI_KEY=<your-key-or-appropriate-token> \
  -v $(pwd)/config.json:/app/config.json:ro \
  -v mcp-data:/app/data \
  dev.local/delinea-mcp:latest

如上所示,在 config.json 中填入用户名和 URL。

容器会将 oauth.db 和 jwt.json 存储在 /app/data 中。 挂载卷(上文示例中的 mcp-data),以便在不同运行之间保留这些文件和任何 HTTPS 证书。

将 <https://your-secret-server/SecretServer> 替换为 Secret Server 实例的基础 URL,以避免连接错误。

服务默认使用 python server.py 在端口 8000 上启动。 在 config.json 中设置 port 选项可覆盖默认值。 启用 debug: true 可记录所有传入的 HTTP 请求。

示例脚本

manual_secret_request.py 脚本展示了如何获取特定 secret ID 的 OAuth 令牌:

python scripts/manual_secret_request.py <Secret_ID>

运行脚本前,请为该 secret 设置环境变量 SECRET_USERNAME_<id> 和 SECRET_PASSWORD_<id>。 也可以选择设置 DELINEA_BASE_URL,以覆盖默认值 https://localhost/SecretServer。

运行测试

运行单元测试并生成覆盖率报告(CI 要求覆盖率至少达到 70%):

pip install -r requirements.txt
coverage run -m pytest -q
coverage report --omit "tests/*"
实时测试

部分集成测试需要有效凭据。 运行测试套件前,请设置以下环境变量以及可选的 LIVE_SECRET_ID:

export DELINEA_PASSWORD=<password>
# Optional secret used by tests/test_live.py
export LIVE_SECRET_ID=<id>
export SECRET_USERNAME_<id>=<secret_username>
export SECRET_PASSWORD_<id>=<secret_password>

设置这些变量后,实时测试会发起真实的 API 请求。

生产部署

依赖项已固定在 requirements.txt 中,发布版本使用 语义化版本 标记。 从已标记的提交构建 Docker 镜像,并将其部署到生产环境,同时传入必需的环境变量(DELINEA_USERNAME、DELINEA_PASSWORD,以及可选的 DELINEA_BASE_URL)。 可选功能依赖其他变量:

  • 配置 PLATFORM_SERVICE_PASSWORD,以及 PLATFORM_HOSTNAME、PLATFORM_SERVICE_ACCOUNT 和 PLATFORM_TENANT_ID,即可启用用户管理工具。
  • 配置 AZURE_OPENAI_KEY,以及 AZURE_OPENAI_ENDPOINT 和 AZURE_OPENAI_DEPLOYMENT,即可启用 AI 报告生成助手。
  • 配置 SDM_API_ACCESS_KEY 和 SDM_API_SECRET_KEY,即可启用实验性的 StrongDM 工具(需要 strongdm extra;参见 docs/strongdm.md)。

使用 OAuth 或 SSE 传输时,可能需要提供 registration_psk,并配置 external_hostname 或 HTTPS 证书文件。

仓库布局

  • delinea_mcp/ - 包含 MCP 工具的程序包:tools.py(Secret Server)、user_platform_tools.py(Delinea Platform)、 secretserver_users.py(SS 本地用户)、strongdm_tools.py(StrongDM, 可选),以及 transports/(SSE + 可流式传输的 HTTP)和 auth/(内嵌的 OAuth 授权服务器)。
  • server.py - 用于向 MCP 服务注册所有内容的精简入口。
  • docs/ - 项目文档以及生成的 delinea-secret-server-openapi-spec.json。
  • scripts/ - 辅助示例,包括 manual_secret_request.py。

安全注意事项

内嵌的 OAuth 授权服务器便于开发、测试和小规模部署;较大规模的部署应在服务器前接入组织的身份提供方。当前的安全措施:

  • 客户端注册(/oauth/register)和授权表单都要求提供共享密钥 registration_psk(使用常量时间比较)。
  • redirect_uri 值会在授权表单和代码重定向环节根据为客户端注册的 URI 进行验证。
  • 访问令牌是受众绑定的 RS256 JWT;资源发现遵循 RFC 9728(/.well-known/oauth-protected-resource,以及 401/403 响应中的 WWW-Authenticate 标头)。
  • 始终通过 TLS 部署(使用 ssl_keyfile/ssl_certfile 或终止 TLS 的代理)——每个请求都会传输持有者令牌和机密信息。
  • 使用 enabled_tools 按使用场景限制工具的开放范围;按照设计,机密 值 不会进入模型上下文(服务端密码生成、通过环境变量间接调用脚本、密码字段防护)。

发布说明

请参阅 CHANGELOG.md,了解最新功能和路线图事项的摘要。

路线图

  1. 透传式身份验证
  2. 支持 OAuth 客户端 ID 元数据文档(CIMD)客户端(自 MCP 协议修订版 2026-07-28 起,动态客户端注册已弃用;受 PSK 保护的 /oauth/register 流程仍适用于当前连接器)
  3. 扩展 Delinea Platform 的工具覆盖范围,并添加其他 Delinea 产品

贡献

欢迎贡献! 如有任何改进,请提交问题或拉取请求。 所有新代码都应包含单元测试,并通过现有测试套件。

许可证

本项目采用 MIT 许可证 授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。