mcpgawk について
mcpgawkは、MCPサーバーを測定し、ツール構成の変更を検出するローカル優先のコマンドラインツール兼MCPサーバーです。変更されたツールの実行をローカルでブロックし、サンドボックスで動作を調べ、インベントリをアップロードせずに能力やトークンコストを報告します。
主な機能
- 01サーバーのツールと能力をスキャン
- 02ベースライン固定とドリフト検出
- 03変更ツールの実行前ブロック
- 04サンドボックスで動作を観察
- 05トークンコストと能力情報の報告
- 06stdio、HTTP、SSE、OAuthリモートに対応
活用シーン
- 01サーバー追加前の監査
- 02承認後に変化したツールの呼び出し防止
- 03ドリフトやトークン予算によるプルリクエスト検査
- 04サンドボックスでのサーバー動作確認
MCP 対応
stdio経由でMCPサーバーとして実行でき、stdio、ストリーミングHTTP、SSE、およびmcp-remoteブリッジ経由のOAuthリモート上のMCPサーバーをスキャンします。検査はローカルで行われ、インベントリはアップロードされません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| launch_local | boolean | いいえ | スキャンするためにローカル(stdio)サーバーを起動します。サーバーのコードが実行されます。 |
詳細
経路上にゲートウェイをひとつ。あなたのマシン上で。
mcpgawk
エージェントが呼び出すModel Context Protocolサーバーは、承認した後でツールの動作を変更することがあり、エージェントはそれに気づかず新しいツールを呼び出してしまいます。mcpgawk は、エージェントがアクセスできるすべてのサーバーを読み込み、すべての呼び出しを承認済みのベースラインと照合して、変更されたものをブロックします。あなたのマシン上で動作し、何もアップロードしません。
同じエンジンが mcpgawk Platform を支えています。mcpgawk enforce を使うと、呼び出し元ごとのキー、すべての呼び出しに適用されるポリシー、ハッシュチェーン型の監査ログを備えた単一のエンドポイントを、サーバー群全体の前段に配置できます。mcpgawk monitor は、承認したサーバーを常時監視し、変更があれば通知します。この無料レイヤーは、その基盤となる可視化とブロックを提供します。mcpgawk Platform は、最大 3 台のマシンで利用できる個人向けサブスクリプションです。https://mcp.gawk.dev/trial.html?utm_source=github&utm_medium=readme で 7 日間の無料トライアルを開始する(カード不要)か、https://mcp.gawk.dev/subscribe から登録してください。その後、この同じインストール環境で mcpgawk login <key> を実行すると、有料エンジンが取得され、これらの機能が有効になります。必要な操作はもうひとつコマンドを実行するだけで、ほかに設定は不要です。
動画を見る:64 秒でわかる mcpgawk。承認したツールがアップデートで変更されると、あなたが判断するまで mcpgawk が呼び出しを拒否します。
mcpgawk demo — あなたのものには何も触れないサンドボックスで、mcpgawk 自身が出力します。
同じコマンドを実行すれば、同じ結果が得られます。
理由
承認したサーバーでも、その後にツールの動作が変更されることがあります。MCP には、そのことをエージェントに知らせる仕組みがありません。エージェントはそのまま新しいツールを呼び出してしまいます。これがいわゆる「ラグプル」であり、mcpgawk が対処するために作られたケースです。
サーバーを適切に可視化できると、2 つのことがわかります。信頼する前に各サーバーが何にアクセスできるかを把握でき、さらにそのコストもわかります。使用するかどうかにかかわらず、リクエストごとにすべてのツールがコンテキストに読み込まれるためです。
違い
- 報告するだけでなく、ブロックします。 スキャナーでは事後にしか通知されません。
mcpgawk guardは実行前フックを1つインストールし、サーバーを承認した後に追加されたツールは実行されません。 - サーバーを読み取るだけでなく、実際に実行します。
mcpgawk verifyはサンドボックス内でツールを動かし、実際に何をしたかを報告します。報告する前に、データの外部流出、SSRF、ポイズニングを再現します。 - 何もアップロードされません。 クラウドスキャナーはインベントリをサーバーに送信し、そこで判定を行います。ここでの判断はすべて、お使いのマシン上で行われます。アカウントもサインインも不要です。
- 確認していない項目も明示します。 スキップしたツールはスキップしたものとして名前を挙げ、クリーンとして数えることはありません。
機能
- 🛑 変更されたツールを実行前にブロック —
mcpgawk guard installは、エージェントのループに実行前フックを1つ追加します。判断はローカルで約10msで行われ、サインインも不要です。対応する21個のクライアントのうち6個で動作します。残りにはフックポイントがないため、曖昧にせず名前を明示します。 - 🧪 読み取るだけでなく、実際に動かす —
mcpgawk verifyはサンドボックス内でツールを動かし、データの外部流出、SSRF、ツールポイズニング、シークレットの漏えいなど、実際に何をしたかを報告します。サンドボックスはデフォルトでプロキシとして動作するため、Dockerは不要です。Dockerがあれば、完全なコンテナ分離が追加されます。セーフモードでは、読み取り専用だと確実に証明できるツールだけを動かし、スキップしたツールはすべて名前を挙げて明示します。 - 🧑⚖️ 承認には人の判断が必要 —
mcpgawk decideは、変更内容を確認するローカル画面を開きます。ボタンは、ターミナルに表示されるトークン付きリンク上にあります。そのため、ページを開いたエージェントがブロックを自分で承認して回避することはできません。 - 🖥️ ローカルパネルを一つに集約 —
mcpgawk panel:すべてのサーバー、すべての判断、すべての証拠を確認できます。 - 📜 ベンダーが公開しない変更履歴 —
mcpgawk changesは、記録したスナップショット間でサーバーのツール構成に加えられた変更をすべて表示します。追加・削除されたツール、拡張された入力スキーマ、書き換えられた説明文や注釈などです。ローカルの履歴を読み取るため、数週間前に承認したサーバーにも使えます。これは、新たにスキャンするだけでは決してわからないことです。 - 🔌 あらゆるトランスポートに対応 — stdio、streamable-HTTP、SSE、OAuth リモート(
mcp-remoteブリッジ経由)。 - 💸 トークンコストのインデックス — 接続時に各ツールがコンテキストへ追加する量と、最も重いツール3つを正確に表示します。
- 🧾 機能に関する事実 — スキーマから直接取得した書き込み/データ外部流出可能/宣言済みの注釈に加え、信頼サーフェスの概要(書き込み可能な割合、データ外部流出可能な割合、破壊的操作として宣言された数)と注釈の完全性スコアを表示します。
- 📌 整合性の固定とドリフト検出 — サーバーがツールを密かに書き換えた場合に検出します(
--track)。 - 🚩 範囲を限定したシグナル — インジェクションを想起させる説明文、サーバー間のシャドーイング、宣言が不足している Server Cards を、人が確認するための手がかりとして示します。判定には使いません。
- 🔒 設計上、外部への通信はゼロ — 計測レイヤーではネットワークライブラリをインポートしません。これはテストで強制されています。オプトインで利用でき、明示的な例外となるチェックが2つあります(保証を参照):
--supply-chainと--oauth-scopes。
入手方法 — 3つの方法
CLI(あらゆるターミナル):
uv tool install --force mcpgawk # or: pipx install --force mcpgawk
mcpgawk # finds every agent config on the machine itself
MCP サーバーとして実行するには、mcpgawk mcp(stdio)または uvx mcpgawk mcp を使用します。
エディター(VS Code / Cursor):VS Code Marketplace または Open VSX から mcpgawk をインストールします。ワークスペースの mcp.json をスキャンし、コストと機能フラグをインラインで表示します。この拡張機能はエンジンをサブプロセスとして実行します。個別にビルド、リリースされているため、ソースコードはこのリポジトリに含まれていません。
CI(GitHub Action):すべてのPRでトークン予算/ドリフトをチェックします(Marketplace):
- uses: gawk-dev/mcpgawk@v1
with: { config: mcp.json, max-tokens: 8000, fail-on-flagged: true }
実行するタイミング
- 一度実行して、そのまま有効にしておく —
mcpgawk guard install。以降、すでに承認したサーバーに追加されたツールは呼び出されません。 - サーバーを追加する前 — 信頼する前に、コストと機能を確認します。
- エージェントの動作が遅い、または間違ったツールを選ぶと感じたとき — 多くの場合、MCP の肥大化(ツールが多すぎる、または重すぎる)が原因です。
- すべての PR で — CI ゲートが設定のずれやトークンコストの増加を検出します。
- MCP サーバーを 公開する 場合 — ユーザーにとってのコストと、クライアントからの見え方を確認して修正します(通常はツールごとに1行です)。無駄がなく、注釈が適切なことは差別化につながります。
使い方
mcpgawk # first run: every agent config on this machine
mcpgawk demo # the whole arc in a sandbox — approve, drift, block
mcpgawk guard install # put the baseline in your agent's loop
mcpgawk guard status # is protection actually on?
mcpgawk decide # what changed, and approve it as a human
mcpgawk panel # the local page: servers, decisions, evidence
mcpgawk verify mcp.json # run the servers and watch what they do
mcpgawk changes # what changed on your servers since you approved them
mcpgawk login <key> # licence? one command fetches the paid engine (enforce, monitor)
スキャンだけを行いたい場合は、こちらを実行します。
mcpgawk scan mcp.json # a whole config
mcpgawk scan --stdio "npx -y @modelcontextprotocol/[email protected] /tmp"
mcpgawk scan --http https://host/mcp --header "Authorization: Bearer $TOKEN"
mcpgawk scan --sse https://host/sse
mcpgawk scan mcp.json --track # record + detect rug-pulls over time
mcpgawk scan mcp.json --json # machine-readable labels
mcpgawk scan mcp.json --verbose # full per-tool table, not just flagged tools
mcpgawk scan mcp.json --supply-chain # opt-in: npm/PyPI deprecation check (network)
mcpgawk scan mcp.json --oauth-scopes # opt-in: decode a supplied Bearer JWT's scope
設定ファイルにトークンを含めないようにしましょう。mcpgawk wrap では、keychain:<service>(または keychain:<service>@<account>)形式で指定した env の値は、サーバー起動時に macOS Keychain から読み込まれ、サーバーの環境にのみ設定されます。設定ファイルに保存されるのは参照情報であり、エージェントに見えるのも参照情報です。mcpgawk は何も保存しません。参照先を読み込めない場合、サーバーの起動を拒否し、値ではなく参照情報を示します。
"github": { "command": "mcpgawk", "args": ["wrap", "--", "npx", "-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "keychain:gh-work" } }
レポート内容
- コスト指数 — 接続時に各ツールが追加するトークン数(名前付きトークナイザーを使用。絶対的な Claude のトークン数ではなく、比較用の指数です)と、最も負荷の高いツール3つです。
- 信頼対象の範囲 — 機能に関する事実(書き込み/変更、データ持ち出し可能、宣言された注釈)を集計し、書き込みの割合、データ持ち出し可能な割合、破壊的操作の宣言数を示します。
- 注釈の完全性 — 透明性のある複合指標(読み取り/書き込みの意図を宣言するツールのうち、注釈が付いている割合)であり、リスクスコアではありません。
- 網羅状況 — ツール、プロンプト、リソースの数です(ツールごとの完全な表は
--verboseで表示します)。 - 整合性ピン — サーバーがツールをひそかに書き換えると変化するハッシュです。
--trackを指定すると、経時的な不正な差し替えを検出できます。 - 範囲を限定したシグナル — 人が確認するための、精度が高く誤検知の少ない手がかりであり、判定ではありません。インジェクションを含む形式の説明(ツール と プロンプト)、サーバー間での名前のシャドーイング、実際に公開される内容を過少申告している公開 Server Card を検出します。
- サプライチェーン(オプトイン、
--supply-chain)— 起動するパッケージの非推奨/取り下げ状況を公開 npm/PyPI レジストリで確認します。 - OAuth スコープ(オプトイン、
--oauth-scopes)— 提供された Bearer JWT のscopeクレームをローカルでデコードします。
保証事項
- インベントリを外部に送信しません。 ネットワーク通信は、プロトコルクライアントが指定されたサーバーと通信する場合に限られます。測定レイヤーはネットワークライブラリをインポートしないため、設計上、外部へデータを送信できません(テストで確認しています)。公開 Server Card の検出は、認証情報なしで取得し、リダイレクトには追従しません。明示的なオプトインの例外は2つあります。
--supply-chainは起動するパッケージの名前(固定バージョンがある場合はそのバージョンも)を公開 npm レジストリまたは PyPI JSON API に送信します。ツールのインベントリは送信しません。--oauth-scopesはネットワーク通信を一切行わず、すでに提供された Bearer JWT をローカルでデコードします。どちらもフラグを指定しない限り実行されません。 - 事実とヒューリスティックを混同しません。 正確な機能情報とトークン指数は、範囲を限定したヒューリスティックシグナルとは決して混ざりません。コードでも出力でも分離されています。
- 再現可能です。 1つのコマンドで、常に同じ数値が得られます。
- プロトコルに準拠しています。 プロトコルバージョンをネゴシエートする公式
mcpSDK を基盤としています。
開発
uv run --extra dev --with mcp --with tiktoken --with httpx python -m pytest -q
CI ゲート — GitHub Action
すべてのプルリクエストで MCP サーバーをスキャンし、負荷が高すぎるものやシグナルに該当するものがあればビルドを失敗させます。すべてランナー内で実行され、何もアップロードされません。また、サーバーごとのコストとフラグをまとめた表をジョブのサマリーに投稿します。
- uses: gawk-dev/mcpgawk@v1
with:
config: mcp.json # or: stdio / http / sse — a single server
max-tokens: 8000 # fail if any server loads more than this at connect
fail-on-flagged: true # fail if any bounded signal fires
GitHub Marketplace で利用できます。
貢献
Issue と PR を歓迎します。まず CONTRIBUTING.md をお読みいただき、THREAT-MODEL.md に記載された設計上の境界をご確認ください。セキュリティに関する報告は、公開 Issue ではなく、SECURITY.md を通じて非公開でお寄せください。
ライセンス
Apache-2.0 — LICENSE をご覧ください。nativerse · gawk.dev ファミリーの一部です。サイトとドキュメント:mcp.gawk.dev。価値があるのはクラウドではなく、リポジトリです。
エージェントから利用する(スキル)
コーディングエージェントが MCP サーバーを追加、アップグレード、監査するたびに、自らチェックを実行できるようにします。
# Claude Code (similar for other agents: copy the folder into their skills directory)
mkdir -p ~/.claude/skills && cp -r skills/mcpgawk ~/.claude/skills/mcpgawk
このスキルは、信頼する前にサーバーを測定し、MCP-2 へのアップグレードを無条件に再信頼するのではなくベースラインとの差分として監査し、同意を求めるプロンプトをすべて一字一句そのままユーザーに伝える方法をエージェントに教えます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

