关于 Openlane MCP Server
Openlane MCP Server 是连接 Openlane GRC 平台的开源 MCP 服务,供合规与风险团队查询各类治理数据。它默认只读,并将写入和删除操作设为需显式启用。
主要功能
- 01查询控制项、证据、政策与风险
- 02筛选工作流、供应商及评估记录
- 03返回关系摘要与分页结果
- 04可选启用创建、更新和删除
- 05支持 Openlane Cloud 与自托管实例
适用场景
- 01查询项目的控制项和证据
- 02检查供应商风险与评估情况
- 03查看待审批政策和工作流任务
- 04在授权后更新 GRC 记录
MCP 相关
通过 stdio 或 Streamable HTTP 向 MCP 客户端开放 Openlane 数据查询与可选写入、删除工具。每项操作仍受 Openlane 授权约束。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e OPENLANE_API_TOKEN -e OPENLANE_ORGANIZATION_ID -e OPENLANE_BASE_URL -e OPENLANE_ALLOW_WRITE -e OPENLANE_ALLOW_DELETE ghcr.io/gregdog/mcp-server-theopenlane:v0.8.0OPENLANE_API_TOKEN密钥Openlane API token or PATOPENLANE_ORGANIZATION_IDOrganization ID for multi-org PATsOPENLANE_BASE_URLOpenlane API base URLOPENLANE_ALLOW_WRITEEnable write MCP toolsOPENLANE_ALLOW_DELETEEnable delete MCP tools本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/gregdog/mcp-server-theopenlane:v0.8.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Openlane MCP 服务
面向 Openlane GRC 平台的安全、开源 Model Context Protocol 服务。
本项目并非 Openlane 官方产品,也未获得 theopenlane, Inc. 的认可。
概览
openlane-mcp 让 Cursor 和 Claude Desktop 等 MCP 客户端通过 stdio(默认)或 Streamable HTTP 查询 Openlane。它通过官方 Openlane Go 客户端与 Openlane Cloud 或自托管实例通信。
MCP Client
→ Openlane MCP Server (stdio or HTTP)
→ Official Openlane Go Client
→ Openlane API
服务默认仅提供只读功能。写入和删除工具均需选择启用,且彼此独立。Openlane 的授权规则仍适用于每个请求。
功能
- 为程序、控制项、证据、策略、风险、标准、任务、实体(供应商)、资产、平台、联系人、发现项、评估、控制实施、群组、用户和工作流提供 Openlane MCP 访问
- 增强型获取工具,提供供应商/安全字段和精简的关系摘要
- 支持按实体、风险、发现项、证据、程序、评估、实施和工作流进行列表筛选
- 可选启用控制项、证据、策略、风险、任务、供应商/实体、联系人、供应商风险审查、工作流定义、工作流分配和原生策略生命周期的创建/更新工具
- 可选启用上述相同领域的删除工具,另包括工作流定义(程序和标准除外)
- 支持 Openlane Cloud 和自托管 Openlane(可配置基础 URL)
- 支持 stdio 传输(默认)以及可选启用的 Streamable HTTP 传输
- 原生 Go 二进制文件
- Docker 镜像(随 GitHub Releases 发布)
- 在带标签的版本中列入 MCP Registry(
io.github.GregDog/mcp-server-theopenlane)
快速开始
在控制台的开发者设置中创建 Openlane API 令牌或 PAT。组织令牌以 tola_ 开头,个人访问令牌以 tolp_ 开头。
export OPENLANE_API_TOKEN="tola_..."
# Optional for multi-org PATs:
export OPENLANE_ORGANIZATION_ID="..."
openlane-mcp serve
然后连接 MCP 客户端。请参阅客户端配置。
安装
从源码安装
go install github.com/GregDog/mcp-server-theopenlane/cmd/openlane-mcp@latest
需要 Go 1.27 或更高版本。
GitHub Releases
二进制压缩包将在带标签的 GitHub Releases 中发布(linux/darwin amd64+arm64,windows amd64),并附带 SHA256 校验和。
Docker
docker run --rm -i \
-e OPENLANE_API_TOKEN \
-e OPENLANE_ORGANIZATION_ID \
ghcr.io/gregdog/mcp-server-theopenlane serve
镜像随 GitHub Releases 发布至 ghcr.io/gregdog/mcp-server-theopenlane。
客户端配置
Cursor(stdio,推荐)
本仓库的 .cursor/mcp.json 使用 scripts/mcp-serve.sh 加载 .env 并运行本地二进制文件:
{
"mcpServers": {
"openlane": {
"command": "bash",
"args": ["${workspaceFolder}/scripts/mcp-serve.sh"]
}
}
}
也可以全局安装并直接传入环境变量:
{
"mcpServers": {
"openlane": {
"command": "openlane-mcp",
"args": ["serve"],
"env": {
"OPENLANE_API_TOKEN": "${env:OPENLANE_API_TOKEN}",
"OPENLANE_ORGANIZATION_ID": "${env:OPENLANE_ORGANIZATION_ID}"
}
}
}
}
Cursor(HTTP)
使用 bash scripts/mcp-http.sh 启动服务(请参阅 HTTP 传输),然后将 examples/cursor-http.mcp.json 用作模板。
Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"openlane": {
"command": "openlane-mcp",
"args": ["serve"],
"env": {
"OPENLANE_API_TOKEN": "tola_your_token_here"
}
}
}
}
建议使用环境变量替换或本地密钥存储,而不要提交令牌。本仓库中的示例仅使用虚构值。
安全性
读取工具始终可用。写入工具需要设置 OPENLANE_ALLOW_WRITE=true 或使用 --allow-write。删除工具需要设置 OPENLANE_ALLOW_DELETE=true 或使用 --allow-delete。
成功读取仍需要:
- 具有相关
object:read作用域(或等效 PAT 权限)的 Openlane 令牌 - Openlane 授予对所选组织中该对象的访问权限
写入和删除还需要服务器选择启用(OPENLANE_ALLOW_WRITE / OPENLANE_ALLOW_DELETE),并且 Openlane 令牌具有相应权限。工作流定义写入、工作流分配操作、本机策略生命周期操作以及工作流删除,还要求在工具调用中设置 confirm: true。
令牌不会被记录。请参阅 docs/security.md。
工具覆盖范围
| 工具 | 描述 |
|---|---|
openlane_controls_list | 列出控制项 |
openlane_controls_search | 按引用代码、标题或描述搜索控制项 |
openlane_control_get | 按 ID 获取控制项(附带关系摘要) |
openlane_programs_list | 列出计划(可选按名称筛选) |
openlane_program_get | 按 ID 获取计划(附带关系摘要) |
openlane_evidence_list | 列出证据元数据(可选按计划/控制项筛选) |
openlane_evidence_get | 按 ID 获取证据元数据 |
openlane_policies_list | 列出内部政策(可选按状态筛选) |
openlane_policies_awaiting_approval | 列出待审批政策(原生 NEEDS_APPROVAL 状态,以及分配给你的待处理工作流任务) |
openlane_policy_get | 按 ID 获取政策 |
openlane_risks_list | 列出风险(可选按计划/实体/控制项/状态筛选) |
openlane_risk_get | 按 ID 获取风险(附带关系摘要) |
openlane_findings_list | 列出发现项(可选按计划/评估/开放状态/严重程度筛选) |
openlane_finding_get | 按 ID 获取发现项 |
openlane_assessments_list | 列出评估 |
openlane_assessment_get | 按 ID 获取评估 |
openlane_control_implementations_list | 列出控制项实施情况 |
openlane_control_implementation_get | 按 ID 获取控制项实施情况 |
openlane_mapped_controls_list | 列出跨框架控制项映射(MappedControl) |
openlane_mapped_control_get | 按 ID 获取控制项映射 |
openlane_standards_list | 列出标准/框架 |
openlane_standard_get | 按 ID 获取标准 |
openlane_tasks_list | 列出任务 |
openlane_task_get | 按 ID 获取任务 |
openlane_entities_list | 列出实体(供应商;可选按风险/等级/审查/安全筛选) |
openlane_entity_get | 按 ID 获取实体(供应商/安全/商务字段) |
openlane_assets_list | 列出资产 |
openlane_asset_get | 按 ID 获取资产 |
openlane_platforms_list | 列出平台(系统边界;可选按名称、显示 ID、状态、环境、区域、关键性筛选) |
openlane_platform_get | 按 ID 获取平台(叙述、所有者角色、范围链接、图表元数据) |
openlane_contacts_list | 列出联系人 |
openlane_contact_get | 按 ID 获取联系人 |
openlane_reviews_list | 列出供应商风险审查(可选按实体筛选) |
openlane_review_get | 按 ID 获取供应商风险审查 |
openlane_groups_list | 列出群组(可选按名称筛选) |
openlane_group_get | 按 ID 获取群组 |
openlane_users_list | 列出用户(可选按姓名/电子邮件筛选) |
openlane_user_get | 按 ID 获取用户 |
openlane_workflows_list | 列出工作流定义(可选按架构/类型/启用状态筛选) |
openlane_workflows_search | 按名称或描述搜索工作流定义 |
openlane_workflow_get | 按 ID 获取工作流定义(附带通俗易懂的摘要) |
openlane_workflow_instances_list | 列出工作流实例(可选按定义/状态/对象筛选) |
openlane_workflow_instance_get | 按 ID 获取工作流实例(分配、事件、提案预览) |
openlane_workflow_assignments_list | 列出分配给我的工作流审批任务 |
openlane_workflow_assignment_get | 按 ID 获取工作流任务分配(目标、到期日期、对象上下文) |
openlane_workflow_metadata_get | 获取每种对象类型中符合工作流条件的字段、边和解析器键 |
写入工具(需要 OPENLANE_ALLOW_WRITE=true 或 --allow-write):
| 工具 | 描述 |
|---|---|
openlane_control_create / openlane_control_update | 创建或更新一项控制措施 |
openlane_mapped_control_create / openlane_mapped_control_update | 创建或更新跨框架控制措施映射(MappedControl) |
openlane_evidence_create / openlane_evidence_update | 创建或更新证据;可选 control_ids / add_control_ids / remove_control_ids(仅限组织自有的控制措施,不包括系统目录副本);可选上传 base64 文件 |
openlane_controls_list / openlane_controls_search | 可选的 linkable_only 会返回适合关联证据的组织自有控制措施 |
openlane_policy_create / openlane_policy_update | 创建或更新内部策略 |
openlane_policy_submit_for_approval / openlane_policy_approve / openlane_policy_publish / openlane_policy_return_to_draft | 内置的 InternalPolicy 状态流转(需要 confirm) |
openlane_risk_create / openlane_risk_update | 创建或更新一项风险 |
openlane_task_create / openlane_task_update | 创建或更新一项任务 |
openlane_entity_create / openlane_entity_update | 创建或更新一个实体(供应商);可选上传 base64 徽标或使用 logo_remote_url |
openlane_platform_create / openlane_platform_update | 创建或更新一个平台(系统边界);所有者字段接受用户 ID、电子邮件、姓名或群组 ID/名称;可选的范围关联 ID 和 base64 图表上传 |
openlane_contact_create | 创建一位联系人(可选 entity_ids) |
openlane_vendor_risk_review_create / openlane_vendor_risk_review_update | 创建或更新一项供应商风险审查 |
openlane_workflow_create / openlane_workflow_update | 创建或更新一个 WorkflowDefinition(需要 confirm) |
openlane_workflow_assignment_approve / openlane_workflow_assignment_reject | 批准或驳回一项 WorkflowAssignment(需要 confirm) |
openlane_workflow_assignment_request_changes / openlane_workflow_assignment_reassign | 请求修改或重新分配一项任务分配(需要 confirm) |
删除工具(需要 OPENLANE_ALLOW_DELETE=true 或 --allow-delete):
| 工具 | 描述 |
|---|---|
openlane_control_delete | 按 ID 删除一项控制措施 |
openlane_mapped_control_delete | 按 ID 删除一项控制措施映射 |
openlane_evidence_delete | 按 ID 删除证据 |
openlane_policy_delete | 按 ID 删除一项策略 |
openlane_risk_delete | 按 ID 删除一项风险 |
openlane_task_delete | 按 ID 删除一项任务 |
openlane_workflow_delete | 按 ID 删除一个工作流定义(需要 confirm) |
完整详情请参阅 docs/tools.md。启用所有模式后共有 77 个工具(44 个读取、27 个写入、6 个删除)。
增强型获取工具会返回有界的关系摘要(count + items),让 Agent 无需串联数十个浅层调用即可回答有关项目、供应商、控制措施和发现的问题。
列表响应采用分页形式(items、next_cursor、has_more、total_count)。默认每页 20 项;最多 50 项。
当前 Openlane Go 客户端没有专用的控制措施搜索 GraphQL 操作。openlane_controls_search 使用官方的 ControlWhereInput 包含筛选器。
读取工具不会返回文件内容和预签名下载 URL。写入工具在创建或更新证据时可选接受 base64 编码的 files[](每个文件解码后的默认最大大小为 10 MiB)。
将证据关联到控制项
openlane_evidence_create 接受可选的 control_ids;openlane_evidence_update 支持 add_control_ids / remove_control_ids。只有归组织所有的控制项(已设置 owner_id)才能关联——系统目录副本会被拒绝(core#1647)。使用 openlane_controls_search 并设置 linkable_only: true 可列出可关联的控制项。通过程序导入的控制项在设置 owner_id 时,source: FRAMEWORK 仍可能显示。
openlane_control_update 接受用户 ID、电子邮件、姓名或组 ID 作为 owner_id 和 delegate_id;用户标识会解析为受管理的个人组(Openlane controlOwnerID / delegateID)。读取响应包含 control_owner 和 delegate 对象,其中有已解析的 user_email——不要对组 ID 使用 openlane_user_get。请参阅 docs/openlane-assignee-ids.md(用户、组与组织;全局固定项与仅适用于控制项的内容)。
对于大型 files[] Base64 上传,建议使用直接的 MCP 客户端或自动化脚本在机器之间传递载荷。Agent 循环在工具调用之间复制 content_base64 时可能会截断或损坏数据。
HTTP 传输
服务器默认使用 stdio。进行本地 HTTP 测试:
export OPENLANE_MCP_TRANSPORT=http
export OPENLANE_MCP_HTTP_ADDR=127.0.0.1:8090
openlane-mcp serve
默认绑定地址仅限回环接口(127.0.0.1:8090)。除非了解暴露风险,否则不要使用 0.0.0.0 或裸 :port 地址。
**HTTP 模式没有内置身份验证。**不要将其直接暴露到公共互联网。任何能够访问该端点的人都可以使用服务器的 Openlane 令牌。对于远程或共享网络部署,请在服务器前配置可信的身份验证反向代理(或同等的私有网络控制措施)。请参阅 docs/security.md。
通过 HTTP 上传大型证据文件时,请增大 OPENLANE_MCP_HTTP_MAX_BODY_BYTES。
MCP Registry
每次发布带标签的版本时,都会以 io.github.GregDog/mcp-server-theopenlane 的名称发布到 MCP Registry。OCI 软件包为 ghcr.io/gregdog/mcp-server-theopenlane。
开发
make test
make build
./bin/openlane-mcp version
请参阅 docs/development.md。
贡献
请参阅 CONTRIBUTING.md。如需添加或扩展 MCP 工具,请参阅 docs/adding-tools.md。
标记为 good first issue 或 help wanted 的问题是很好的入门选择。
许可证
Apache License 2.0。请参阅 LICENSE。
使用 Openlane 名称仅为说明兼容性。请勿复制 Openlane 徽标,也不要暗示获得官方认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。