Gooo saved tool definitions について
Gooo saved tool definitionsは、サービス権限の変更が必須リクエストを維持するかをコーディングエージェントが評価するローカルMCPサーバーです。オプションでツールエイリアスの由来も比較でき、モデルや対象サービスは呼び出しません。
主な機能
- 01サービス権限変更の評価
- 02順序付きリクエストの評価
- 03ツールエイリアスの由来比較
- 04完全な判定とバインディングの返却
- 05stdioによるローカル実行
活用シーン
- 01権限縮小後も必須リクエストが残るか確認
- 02複数サービスに対する権限変更の確認
- 03更新前のエイリアス参照先の検証
MCP 対応
ローカルstdioのMCPサーバーが権限評価ツールを提供し、起動オプションでツールエイリアスの由来比較も追加できます。与えられた事実を評価しますが、権限の認証・適用やサービス・モデルの呼び出しは行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/kimjooyoon/gooo-service-grant-mcp@sha256:a015a049318235eed7429347aef232c71703ab4bb9931277f99e2c6e3218a82eローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/kimjooyoon/gooo-service-grant-mcp@sha256:a015a049318235eed7429347aef232c71703ab4bb9931277f99e2c6e3218a82estdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP を通じてサービス許可の変更を検査する
このローカルの stdio サーバーを使うと、コーディングエージェントは 1 つのツール
assess_service_grant を検出して呼び出せます。このツールは、サポート対象の範囲縮小によって
必須のサービスリクエストが 1 つ保持されるかを確認します。判定は既存の Gooo 生成処理が行い、
Go アダプターは MCP と正確な事実の受け渡しのみを処理します。
たとえば、* を mcp://* に範囲縮小すると、mcp://weather は保持されます。同じ許可を
http://* に範囲縮小すると、そのリクエストは除外されます。どちらも評価は成功しますが、
判定は異なります。
ビルドと接続
レビュー済みのチェックアウトから Go 1.27.3 でビルドします。
GOTOOLCHAIN=local GOWORK=off CGO_ENABLED=0 \
go -C examples/service-grant-mcp build -trimpath -o /absolute/private/bin/gooo-service-grant-mcp .
ビルドでは、設定済みの Go プロキシとチェックサムサービスを通じて、固定された公開モジュールを ダウンロードします。生成されたネイティブ実行ファイルは、実行時に Go や Gooo のインストールを 必要としません。MCP ホストが引数なしで stdio 経由で起動するよう、絶対パスを設定してください。 このサーバーは HTTP ポートを開かず、API キーを必要とせず、モデル呼び出しも行いません。
Python 標準ライブラリのワイヤー検証ツールは、プロトコルバージョン
2025-11-25 と 2026-07-28 を検証します。ディスカバリー、ツールスキーマ、繰り返しの呼び出し、
ネイティブ CLI の証明との完全一致、厳格な入力エラー、プロトコル専用の stdout を確認します。
Go のテストでも、並行するハンドラー呼び出しを、それらの完全なネイティブ証明と比較します。
フォーカスされたワークフローでは、Linux と macOS でレース検出器を有効にしてテストを実行します。
5 つの Python 回帰チェックでは、実際に終了した子プロセスとバッファー付きパイプを使用して、
リクエストの失敗時に最初のエラーと診断情報が保持されることを検証します。
注入されたキャンセル例外では、クリーンアップ後の伝播を確認します。これらは、
オペレーティングシステムのシグナル動作を立証するものではありません。
これらの観察結果は、特定のエージェントアプリケーション内でタスクが完了したことを立証するものではありません。
ツールを呼び出す
必須のサービスリクエストが 1 つの場合は assess_service_grant を選択します。順序付きリストの場合は、
サーバーを --many-required 付きで起動し、assess_service_grant_change を選択します。ディスカバリーには、
各入力フィールド(リスト項目ごとの type と name を含む)の説明と例が含まれます。これらは、
個々のツールや URL パスではなく、mcp://weather のようなサービスを識別します。
以前の許可には before、提案する置き換えには after を使用してください。
サポート対象外の識別子を修正せず、指定されたテキストをそのまま保持してください。
ツール引数オブジェクトには、JSON 文字列を正確に 4 つ指定します。
{
"before": "*",
"after": "mcp://*",
"required_type": "mcp",
"required_name": "weather"
}
結果には、元の facts、7 フィールドの decision、コンパイラー/生成処理/ソースの完全な
bindings が含まれます。これらは MCP の structuredContent と JSON テキストコンテンツブロックの
両方に含まれます。結果全体を保持してください。
| 結果 | 意味 |
|---|---|
ELIGIBLE | このサポート対象のサブセットは、指定された必須リクエストを保持します。 |
REFUSED | 表現された変更は、保持または絞り込みのチェックに失敗します。 |
INVALID_INPUT | 文字列が Gooo ポリシーの正規ドメインを満たしていません。 |
MCP isError: true | トランスポート、ソースバインディング、または実行の失敗です。ポリシー判定は返されません。 |
重複キー、フィールドの欠落や余分なフィールド、null、型の不一致、対応するペアのない Unicode サロゲートはトランスポートエラーです。生の引数オブジェクトは 4,096 バイトに制限されます。 受信する stdio フレーム全体には、別途 64 KiB の上限があります。これらのトランスポート上の上限は、 ポリシーが扱う文字列ドメインとは別のものです。
指定された以前の許可と必須リクエストは、ここでは認証されません。このツールは許可を適用せず、 実際の権限を確認せず、サービスにも接続しません。条件付き適用の例 では、アプリケーションが変更を自動適用する際に必要となる、別途のバージョン/書き込み元のガードを示します。
バージョンと検証
ランタイムは、公開されている
agentmesh-service-policy module
v0.0.0-20261020182808-7180a4a0f36a に固定されています。その Gooo コンパイラーのソースは
205896a413e5dea92366309c35ae85e542d055f6 です。このアダプターが言語エンジンをアップグレードしたり
実行したりすることはありません。MCP トランスポートでは公式 Go SDK v1.8.0 を使用します。
go.sum で両方のモジュールと依存関係グラフを固定しています。
fixtures/ 内のファイルには、実際のネイティブ CLI 入力と出力が保持されています。
fixtures/origin.json には、それらのハッシュ、実際の公開モジュール、Go 1.27.3
のビルド識別情報とプラットフォームが記録されています。以前の Linux での観測結果は履歴として保持されていますが、
これらの新しいバイト列を証明するものではありません。検証ツールは、false/空のフィールドや
89 個すべてのアセットバインディングを含む証明オブジェクト全体を比較し、代替のポリシー結果を再構築しません。
ビルドしたコマンドを検証するには、新しい出力ディレクトリを選択します。
python3 -I -B examples/service-grant-mcp/verify.py \
--binary /absolute/private/bin/gooo-service-grant-mcp \
--out /absolute/private/new-mcp-verification
プラットフォーム、ソースのバージョン、コマンド、終了ステータス、最初の診断メッセージを、 初回実行フィードバックフォームで報告してください。 ネイティブのセットアップ、検証、またはリプレイを選択し、合成された公開情報を使用してください。 すべての MCP クライアントやすべてのサービスパターン言語との互換性を主張するよりも、 実際のタスクや不足している機能に関するフィードバックのほうが役立ちます。
オプションの順序付き必須リクエスト
デフォルトのコマンドとassess_service_grantツールは、現在の 205
プロファイル、7 個の判定フィールド、89 個のアセットバインディングを使用します。同じネイティブ
コマンドを--many-requiredで起動すると、追加で
assess_service_grant_changeが公開されます。その引数は、たとえば次のような単一のオブジェクトです。
{"before":"*","after":"mcp://*","required_requests":[{"type":"mcp","name":"weather"},{"type":"mcp","name":"calculator"}]}
オプションのツールはリクエストの順序と重複を保持します。順序付き列の完全な事実、型付き判定フィールド 12 個、および
多重リクエスト生成におけるアセット 30 個とソースハッシュ 5 個のバインディングを返します。どちらのポリシーモジュールも、
Go 1.27.3 でコンパイラー205896aを使用して生成されています。ドメイン上無効なリクエストと
257 件のリクエスト上限は判定を返し、不正な JSON は部分的な証明を返しません。提供された事実は未署名です。このツールは権限を認証せず、付与も適用しません。
5 つの Gooo ソース本体は、埋め込みモジュールファイルではなく、引き続きリポジトリ内のソースです。
上記のとおりトランスポートをビルドした後、既存のデフォルトのワイヤーチェックとオプションのチェックを別々に実行します。オプションのチェックでは、このモジュールが選択した正確な公開
service-grant-many依存関係を読み込みます。
mcp_binary=/absolute/private/bin/gooo-service-grant-mcp
mkdir -p out
python3 -I -B examples/service-grant-mcp/verify.py \
--binary "$mcp_binary" --out "$PWD/out/mcp-default-wire"
many_module="$(go -C examples/service-grant-mcp list -m -f '{{.Dir}}' \
github.com/kimjooyoon/gooo-go-ports/examples/service-grant-many)"
python3 -I -B examples/service-grant-mcp/verify_many.py \
--binary "$mcp_binary" \
--legacy-verifier "$PWD/examples/service-grant-mcp/verify.py" \
--many-module "$many_module" --out "$PWD/out/mcp-many-wire"
どちらのクライアントも、モデルを使わずに、文書化された 2 つのプロトコルバージョンをテストします。
対応する MCP 入力では 2 つの列の長さの不一致を表現できません。この別個の公開 Go API のケースは、引き続きservice-grant-manyのテストでカバーされています。
オプションのツールエイリアスのオリジン比較
このチェックアウトのコマンドをビルドし、--alias-origin-changeを付けて起動すると、
読み取り専用ツールgooo_compare_alias_originが追加されます。このソースプロファイルは、以前にリリースされた preview16 の実行ファイルやイメージには含まれていません。Go や Gooo をランタイムで呼び出すことなく、公開されている
alias-origin-changeモジュールを
v0.0.0-20261024154510-16d1e7864dc8で再利用します。このモジュールのコンパイラー固定値は205896a413e5dea92366309c35ae85e542d055f6であり、
埋め込み生成ドキュメントは SHA-256
b0c87b7865697c4b6433ef54e23defd7267ed8ea4da562cc8e1af24e283e7b06で固定されています。
デフォルトのコマンドが引き続き公開するのはassess_service_grantのみです。
--many-requiredで公開されるのも、引き続き同じ 2 つの service-grant ツールです。エイリアス
オプション単独では、デフォルトのツールとエイリアスツール(合計 2 つ)が公開されます。両方のオプションを指定すると、引数の順序にかかわらず 3 つすべてのツールが公開されます。オプションの重複や不明なオプションはエラーになります。enabled_tools許可リストを持つホストでは、エージェントがこのツールを検出できるように、gooo_compare_alias_originも含める必要があります。
エージェントが選んだ名前が、更新後に別の宣言済みサーバーまたは元の関数に解決される可能性がある場合に使用します。正確な引数オブジェクトを 1 つ渡します。
{"target_alias":"docs_search","before":[{"server":"docs","original_name":"search","exposed_name":"docs_search"}],"after":[{"server":"issues","original_name":"query","exposed_name":"docs_search"}]}
これは ORIGIN_CHANGED を返します。指定されたエイリアスが docs/search から
issues/query に移動しています。以前のツール選択に依存する前に、この変更を確認してください。
UNCHANGED は、指定されたオリジンのペアが同一であることを意味します。ADDED、REMOVED、ABSENT は、
指定された2つのリストにおける存在状況を示します。AMBIGUOUS は、無関係なエイリアスも含め、
いずれかのカタログ内の重複した公開名を示します。該当するインデックス行を修正して、新しい事実を比較してください。
空のドメインテキストは INVALID_INPUT を返します。各状態で次に取るべきアクションについては、
完全なリカバリーガイドを参照してください。
アダプターは、受信した引数のバイト列をそのまま CompareJSON に渡します。
完全な facts、facts_sha256、input_sha256、9フィールドの
decision、bindings を、structuredContent と JSON テキストの両方で返します。入力
ダイジェストは、空白を含め、MCP 経由で受信した引数オブジェクトそのものを識別します。
JSON-RPC リクエスト全体を識別するものではありません。元の行位置はゼロから始まります。テキストは不透明な値です。トリミング、
大文字・小文字の変換、正規化を行わず、綴り、順序、Unicode をそのまま維持してください。実行ファイルには、
検出用として固定されたモジュールの入力
スキーマと出力スキーマの正確なスナップショットが含まれています。
ワイヤーチェックでは、別のスキーマ契約を定義するのではなく、これらを公開モジュールと比較します。
各カタログは最大256行、各テキストは最大1,024 UTF-8バイト、未加工の引数オブジェクトは最大1 MiB です。
エイリアスプロファイルでは、受信する JSON-RPC のフレーミングにさらに64 KiB が許可されます。
既定の64 KiBと既存の多数リクエスト向けフレーム制限は変更されません。不正な JSON、重複キー、null 配列、
無効な Unicode、またはトランスポート上限違反の場合、テキストに公開 JSON 診断を含む isError: true が返され、
部分的なレポートは返されません。これらは、表される7つの判定状態とは別のものです。
シリアライズされたレポートには、別途4 MiB の上限があります。構造化コンテンツ、エスケープされたテキストのコピー、メタデータ、
リクエスト ID、バッチフレーミング、末尾の改行を含む完全な送信 JSON-RPC フレームには、
エイリアスプロファイルでのみ 16 MiB + 64 KiB の上限が適用されます。大きい方の上限は、レポートのコピー2つと、
追加の JSON エスケープおよびフレーミングを考慮したものです。レポート単体のサイズはワイヤーサイズではありません。
フレームが大きすぎる場合、部分的なレポートを書き込まず、エイリアスレポートを、状態/段階/コードが
INVALID_TRANSPORT / encode_result / MCP_WIRE_LIMIT_EXCEEDED である isError: true の診断に置き換えます。
混在フレーム内の他のツールの結果は保持されます。上限内に縮小できない出力の場合、フレームを書き込まずに接続を失敗させます。
この出力専用の診断は、モジュールの CLI 診断を拡張するものです。
これらの比較では、指定されたスナップショットを使用します。カタログの完全性、稼働中のサーバー ID、SDK のルーティング、
現在の権限を認証するものではありません。表されるすべての結果では execution_authorized: false が維持されます。
名前のあるツール、サービス、モデルは呼び出されません。
別個の verify_alias.py ワイヤーチェックでは、同じ固定された公開モジュールからビルドした比較 CLI を完全なレポートの参照として使用し、
プロトコル 2025-11-25 と 2026-07-28 を検証します。既定の --scope full には、
大きな受け入れ可能な応答と、独立した4 MiB のレポート拒否が含まれます。
--scope bundle-small は、抽出済みバイナリを対象に、固定された小規模ケースと4つすべての検出モードを検証します。
大きな応答の観測を繰り返すことも、その検証を主張することもありません。どちらのスコープでも、コマンド ID、正確なストリーム、
子プロセスの終了を検証します。これらは有限の内部プロトコルチェックであり、外部のエージェントアプリケーションで完了したタスクでも、
公開済みリリースでもありません。
上記の MCP コマンドをビルドした後、MCP モジュールのコンテキスト内で同じ固定依存関係から参照 CLI をビルドし、新しい証拠ディレクトリを使用してください。
mcp_binary=/absolute/private/bin/gooo-service-grant-mcp
alias_cli=/absolute/private/bin/alias-compare
GOTOOLCHAIN=local GOWORK=off CGO_ENABLED=0 \
go -C examples/service-grant-mcp build -trimpath -o "$alias_cli" \
github.com/kimjooyoon/gooo-go-ports/examples/alias-origin-change/cmd/compare
alias_module="$(go -C examples/service-grant-mcp list -m -f '{{.Dir}}' \
github.com/kimjooyoon/gooo-go-ports/examples/alias-origin-change)"
python3 -I -B examples/service-grant-mcp/verify_alias.py \
--binary "$mcp_binary" --alias-cli "$alias_cli" \
--alias-module "$alias_module" --go "$(go env GOROOT)/bin/go" \
--out /absolute/private/new-alias-wire --scope full
この検証コマンド内の Go 実行ファイルは、2 つのバイナリのビルド識別情報を確認するだけです。実際の CLI 呼び出しと MCP 呼び出しは、PATH が空で GOROOT が存在しない状態で実行されます。モデルや外部サービスは使用しません。
保存済みツール定義を比較する
このソースツリーでは、ほかの 2 つのオプションフラグと単独で、または併用して --definition-snapshot を指定できます。固定の preview.16 インストールにはこのオプションは含まれていません。Go 1.27.3 でこのチェックアウトをビルドしてから、その絶対パスを MCP クライアントに設定してください。
go -C examples/service-grant-mcp build -trimpath -o /absolute/path/gooo-service-grant-mcp .
args: ["--definition-snapshot"] を指定して
gooo_compare_saved_tool_definitions を確認します。引数は target_name、before.pages、after.pages を持つオブジェクトです。各ページには、保存済みの tools/list 交換から取得した正確な request_json 文字列と response_json 文字列が含まれます。
引数オブジェクトの例が含まれています。ページの順序と継続カーソルを保持してください。空の配列は保存済みのページがないことを示します。欠落を埋めるために、成功した空のリストを捏造しないでください。
このツールは、投影、元の入力、判定、ソースバインディングを含む、生成された Gooo の比較結果全体を、構造化コンテンツとテキストの両方で返します。両方のページ網羅状況フィールドと合わせて decision.state を確認してください。ほかのページが欠落していても、選択された行は比較できます。不完全なページセットに存在しない項目は、引き続き UNASSESSED のままです。名前が重複している場合は、引き続き曖昧です。INVALID_INPUT はドメイン上の結果ですが、形式不正な引数の場合は判定を返さず、ツールエラーになります。トランスポートは受け取った生の引数を保持します。JSON-RPC のフレーミング空白は、保存済みのページ文字列とは別のものです。
このツールは、ライブカタログを取得したり、ホストエイリアスを作り出したり、ツールを呼び出したりせずに、提供された観測結果を比較します。オリジンと認可は引き続き NOT_ASSESSED であり、動作の同等性と実行認可は引き続き false です。ホストは、各比較について人の承認を必要とせず、独自のポリシーに基づいて別の観測または比較ステップを選ぶために、この結果を使用できます。
ソースでは、コンパイラ 205896a が生成した固定の公開比較モジュール
v0.0.0-20261027155614-e4d44fd856ee を使用します。出力の判定の形状は、安定した Gooo レコード ID からレンダリングされ、明示的に別個の 1afb98b 宣言検査で既存のパッケージインターフェイスコマンドを使用しています。スキーマの由来には、ソース、ワークスペース、フィールド ID、レンダラーハッシュが保持されています。この検査は、カーネルのコンパイラ固定を置き換えるものではなく、別のプログラム実行を主張するものでもありません。UTF-8 バイトの特性は JSON Schema の文字数制限に変換されません。
ランタイムに Gooo コンパイラ、Go ツールチェーン、認証情報、モデルは不要です。オプションのプロファイルでは、引数は最大 1 MiB で、JSON-RPC のフレーミングは別途扱います。公開ライブラリでは、レポートを 4 MiB に制限しています。最終的な 16 MiB と 64 KiB のワイヤー上限で、両方の結果表現とバッチのフレーミングをカバーし、サイズ超過のレポートを部分的に返す代わりに、上限内に収まるツールエラーを返します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。