gatekeeper について
gatekeeper は MCP クライアントと Runestone Gatekeeper をつなぎ、シェル、ファイル書き込み、HTTP などの呼び出しをポリシーで制御する MCP サーバーです。呼び出しは許可、拒否、または人による承認待ちとなり、監査記録も残ります。
主な機能
- 01ツール呼び出しのポリシー確認
- 02人による承認への対応
- 03監査情報の記録
- 04シェル、ファイル、HTTP ツール
- 05予期しない応答を失敗として処理
活用シーン
- 01エージェントのシェルコマンド制限
- 02ファイル書き込みの承認
- 03HTTP リクエストの制御と監査
- 04Gatekeeper 経由での他ツール呼び出し
MCP 対応
MCP サーバーはクライアントのツール呼び出しを稼働中の Gatekeeper に転送し、ポリシー確認、承認結果、監査を呼び出しに組み込みます。stdio で接続し、単独では操作を実行しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @runestone-labs/gatekeeper-mcpGATEKEEPER_ROLEPolicy role this server presents to Gatekeeper for every call. Required.GATEKEEPER_URLBase URL of the Gatekeeper server. Default http://127.0.0.1:3847.GATEKEEPER_AGENT_NAMEAgent name recorded in Gatekeeper audit logs. Default mcp-client.GATEKEEPER_RUN_IDOptional run-correlation id so calls count toward one per-run budget.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| cwd | string | いいえ | 作業ディレクトリ。 |
| command | string | はい | 実行する shell コマンド。 |
| timeoutMs | integer | いいえ | 呼び出しごとのタイムアウト(ms)。 |
詳細
Runestone Gatekeeper — MCP サーバー
Runestone Gatekeeper 経由でのみ、あらゆる MCP クライアント(Claude Desktop、Claude Code、Cursor、…)から実際のツール呼び出し(シェル、ファイル書き込み、HTTP、 または任意の Gatekeeper ツール)を実行できる MCP サーバーです。 すべての呼び出しはポリシーによるチェックを受け、人間の承認が必要になる場合があり、監査記録が残ります。 モデルがシステムに直接触れることはありません。Gatekeeper がその手前に配置されます。
MCP client (LLM) ──tools/call──▶ gatekeeper-mcp ──policy-gated──▶ Gatekeeper ──▶ shell / files / HTTP
要件
Gatekeeper サーバーが稼働している必要があります(リポジトリのルートを参照)。このパッケージは MCP のフロントエンドにすぎず、単体では何も行いません。
インストール/設定
stdio 経由で動作します。MCP クライアントの設定(例:Claude Desktop
(claude_desktop_config.json))に追加してください。
{
"mcpServers": {
"gatekeeper": {
"command": "npx",
"args": ["-y", "@runestone-labs/gatekeeper-mcp"],
"env": {
"GATEKEEPER_URL": "http://127.0.0.1:3847",
"GATEKEEPER_ROLE": "openclaw"
}
}
}
}
| Env | 必須 | デフォルト | 説明 |
|---|---|---|---|
GATEKEEPER_ROLE | はい | — | このサーバーがすべての呼び出しで Gatekeeper に提示するポリシーロールです。 |
GATEKEEPER_URL | いいえ | http://127.0.0.1:3847 | Gatekeeper のベース URL です。 |
GATEKEEPER_AGENT_NAME | いいえ | mcp-client | 監査ログに記録される名前です。 |
無人エージェント向けの共有承認
ローカルの Gatekeeper とこの MCP 統合は無料です。エージェントの無人実行中に、承認を担当するチームメイトが必要ですか?現在、最大 5 人、5 インスタンスまで利用できる 月額 49 ドルの Gatekeeper Team をテスト中です。提案中の Cloud サービスでは、保留中のアクション、チームメイトによる承認または拒否、および結果の記録を連携する予定です。Cloud は計画中であり、一般公開されていません。また、このテスト中に支払いが発生することはありません。対象となるのは、実際に Gatekeeper 経由でルーティングされたアクションのみです。MCP サーバーをインストールしても、クライアントの他のツールは対象になりません。
提案中のワークフローを確認し、チームのニーズをお知らせください。 フォームでは、実際にルーティングされた最初のアクションや、後日の再利用について任意で報告することもできます。 これらは手動での自己申告であり、外部から検証された利用開始情報ではありません。コマンドや未加工の監査ログを送信しないでください。このテストでは、MCP サーバーに自動的な利用状況の報告機能は追加されません。
ツール
| ツール | Gatekeeper ツール | 用途 |
|---|---|---|
shell_exec | shell.exec | シェルコマンドを実行します。 |
files_write | files.write | ファイルを書き込みます。 |
http_request | http.request | HTTP GET/POST(外向き通信はポリシーで制御されます)。 |
gatekeeper_call | (任意) | 汎用の代替手段です。名前を指定して任意の Gatekeeper ツール(例:memory.query)を呼び出します。 |
gatekeeper_health | — | Gatekeeper サーバーに到達できるか確認します。 |
Gatekeeper を介したすべての呼び出しは、次のいずれかを返します。
- allow → ツールの出力。
- deny → 理由を説明するエラー結果(呼び出しは実行されていません)。
- approve → Gatekeeper で人間による承認が必要であることを示すエラー結果(呼び出しは実行されていません)。
セキュリティモデル
このサーバーはポリシー境界であるため、意図的に厳格な設計になっています。
- ID はサーバー側で固定されています。 ロールは
GATEKEEPER_ROLEから取得され、origin はmodel_inferred、taint はmcp_clientに固定されています。MCP クライアントはツール引数を通じて actor/role/origin/taint/capability tokens を設定または上書きできません。ツール引数からこれらに至るコード経路はありません。 - フェイルクローズです。 拒否、承認待ち、または Gatekeeper からの不正な形式や予期しない応答は、すべてエラーとして返されます。成功した結果として返されることはありません。
- エンドポイントのトラバーサルはできません。 汎用ツール名は厳密なドット区切り識別子として検証されます。
../、スラッシュなどは、リクエストを送信する前に拒否されます。 - 情報は漏えいしません。 Gatekeeper の URL と、認証情報に見える文字列は、クライアントに渡す前にエラーメッセージから除去されます。
これらの不変条件は、敵対的テストスイート(src/*.test.ts)で検証されています。
配布
npm では @runestone-labs/gatekeeper-mcp として公開され、MCP
Registry には io.github.runestone-labs/gatekeeper として登録されています(server.json を参照)。MCP
Registry はプレビュー段階です。
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。