mcpField
O
Openlane MCP Server

Openlane MCP Server

本地服务
github.com法律与政务34 周前更新

关于 Openlane MCP Server

Openlane MCP Server 是连接 Openlane GRC 平台的开源 MCP 服务,供合规与风险团队查询各类治理数据。它默认只读,并将写入和删除操作设为需显式启用。

主要功能

  1. 01查询控制项、证据、政策与风险
  2. 02筛选工作流、供应商及评估记录
  3. 03返回关系摘要与分页结果
  4. 04可选启用创建、更新和删除
  5. 05支持 Openlane Cloud 与自托管实例

适用场景

  1. 01查询项目的控制项和证据
  2. 02检查供应商风险与评估情况
  3. 03查看待审批政策和工作流任务
  4. 04在授权后更新 GRC 记录

MCP 相关

通过 stdio 或 Streamable HTTP 向 MCP 客户端开放 Openlane 数据查询与可选写入、删除工具。每项操作仍受 Openlane 授权约束。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"gregdog-mcp-server-theopenlane": {
"command": "docker",
"args": [
"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.0"
],
"env": {
"OPENLANE_API_TOKEN": "<OPENLANE_API_TOKEN>",
"OPENLANE_ORGANIZATION_ID": "<OPENLANE_ORGANIZATION_ID>",
"OPENLANE_BASE_URL": "<OPENLANE_BASE_URL>",
"OPENLANE_ALLOW_WRITE": "<OPENLANE_ALLOW_WRITE>",
"OPENLANE_ALLOW_DELETE": "<OPENLANE_ALLOW_DELETE>"
}
}
}
}
启动命令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.0
需要配置的环境变量
OPENLANE_API_TOKEN密钥Openlane API token or PAT
OPENLANE_ORGANIZATION_IDOrganization ID for multi-org PATs
OPENLANE_BASE_URLOpenlane API base URL
OPENLANE_ALLOW_WRITEEnable write MCP tools
OPENLANE_ALLOW_DELETEEnable delete MCP tools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/gregdog/mcp-server-theopenlane:v0.8.0

工具

还没有获取到工具列表

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

详细介绍

Openlane MCP 服务

CI Go License CodeQL

面向 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。

成功读取仍需要:

  1. 具有相关 object:read 作用域(或等效 PAT 权限)的 Openlane 令牌
  2. 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 徽标,也不要暗示获得官方认可。

评论

支持 Markdown

第一次接触 MCP?

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

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