Openlane MCP Server について
Openlane MCP Serverは、GRCチームがOpenlaneのデータを扱うためのオープンソースMCPサーバーです。既定では読み取り専用で、書き込みと削除には明示的な有効化が必要です。
主な機能
- 01統制、証拠、ポリシー、リスクの照会
- 02ワークフロー、ベンダー、評価の絞り込み
- 03関係の要約とページ分割結果
- 04作成・更新・削除の任意有効化
- 05Openlane Cloudとセルフホスト環境への接続
活用シーン
- 01プログラムの統制と証拠を確認する
- 02ベンダーのリスクと評価を調べる
- 03承認待ちポリシーやワークフローを確認する
- 04権限に応じてGRC記録を更新する
MCP 対応
stdioまたはStreamable HTTPで、Openlaneの照会ツールと任意の書き込み・削除ツールをMCPクライアントに提供します。各操作には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 で、SHA256 チェックサム付きのバイナリアーカイブ(linux/darwin amd64+arm64、windows amd64)を公開する予定です。
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)を返すため、エージェントは浅い呼び出しを何十回も連鎖させることなく、プログラム、ベンダー、コントロール、指摘事項に関する質問に回答できます。
一覧レスポンスはページネーションに対応しています(items、next_cursor、has_more、total_count)。デフォルトのページサイズは 20、最大は 50 です。
現在の Openlane Go クライアントには、専用のコントロール検索 GraphQL オペレーションはありません。openlane_controls_search は、公式の ControlWhereInput contains フィルターを使用します。
読み取りツールは、ファイルの内容や事前署名付きダウンロード URL を返しません。書き込みツールは、エビデンスの作成・更新時に、オプションで base64 エンコードされた files[] を受け付けます(デコード後のファイルサイズのデフォルト上限は、ファイルごとに 10 MiB です)。
証跡とコントロールの紐付け
openlane_evidence_create は省略可能な control_ids を受け付けます。openlane_evidence_update は add_control_ids / remove_control_ids に対応しています。紐付けできるのは 組織所有 のコントロール(owner_id が設定されているもの)のみです。システムカタログのコピーは拒否されます(core#1647)。紐付け可能なコントロールの一覧表示には、linkable_only: true を指定して openlane_controls_search を使用します。プログラムによってインポートされたコントロールは、owner_id が設定されていても source: FRAMEWORK と表示される場合があります。
openlane_control_update は、ユーザー ID、メールアドレス、名前、またはグループ ID を指定する owner_id と delegate_id を受け付けます。ユーザー識別子は、管理対象の個人グループ(Openlane の controlOwnerID / delegateID)に解決されます。読み取りレスポンスには、解決済みの user_email を含む control_owner オブジェクトと delegate オブジェクトが含まれます。グループ ID に対して openlane_user_get を使用しないでください。詳細は docs/openlane-assignee-ids.md を参照してください(ユーザー、グループ、組織の違い、およびグローバルに固定されるものとコントロールのみに適用されるもの)。
大容量の files[] Base64 アップロードには、ペイロードをマシン間で渡す直接 MCP クライアントまたは自動化スクリプトを使用してください。ツール呼び出し間で 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
タグ付きリリースのたびに、MCP Registry に io.github.GregDog/mcp-server-theopenlane として公開されます。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。