概要
エージェントが同じ複数ステップのタスクを繰り返し解いている場合、code_propose_tool を使って再利用可能なコードツールを提案できます。提案は何も実行せず、何の権限も付与しません。管理者が AI Skills でプログラムを確認し、ワンクリックでツールを作成します。ツールは読み取り専用で、呼び出し元の権限で動作します。AnythingMCP での仕組みをステップごとに解説します。
TL;DR: 「チャネル別の月次売上」という質問に毎週同じプログラムを書いて答えるエージェントは、毎回書き直さずに済むべきです。ただし、自分で勝手にツールを作成できてもいけません。AnythingMCP のコードモードでは、その中間の動作をします。エージェントは名前、説明、プログラム、保存する価値がある理由を指定して code_propose_tool を呼び出します。これは 提案を記録するだけ で、コードは実行されず、ツールも作成されません。管理者は AI Skills → Suggested で提案を見つけ、プログラムを読み、Create tool をクリックします。新しいツールは 読み取り専用で、各呼び出し元自身の権限で実行されます。それ以上の権限は、別途意図的に編集して付与します。セルフホスト版 AnythingMCP では v0.52.0 から利用でき、AnythingMCP Cloud では近日対応予定です。
自作ツールではなく提案にする理由
エージェントは、タスクが機械的であることを見抜くのが得意です。同じ 3 つの呼び出し、同じ結合、同じ合計といったものです。これを保存済みツールにすれば、次の回答はより速く、低コストで、一貫したものになります。しかしツールはワークスペースに残り続ける恒久的な機能でもあり、その裏にあるプログラムは、信頼できないコンテンツを読んだ可能性のあるモデルが書いたものです。そのため、エージェントは 提案 するだけで、決定 は人が行います。これは、AI クライアントが提案するスキルや会社メモリに AnythingMCP が採用しているものと同じ原則です。エージェントが下書きし、管理者が承認します。
必要なもの
- コードランナーが設定済みの セルフホスト版 AnythingMCP v0.52.1 以降(こちらのステップ 1 でセットアップ)。
- MCP サーバーで コードモードを
inlineに設定。code_executeとcode_propose_toolが提供されるのはinlineです。toolsは保存済みのコードツールのみを提供します。サーバーの設定画面で設定します(Code mode → Saved code tools + inline code、v0.52.1 以降)。詳しくはコードツールのチュートリアルのステップ 2 を参照してください。 - ユーザーのロールに付与された インラインコード権限。ワークスペース管理者は持っています。
- v0.52 とともに発表されたとおり、インラインコードと提案は Team と Enterprise に含まれます。
ステップ 1 — エージェントがタスクをインラインで解く
ユーザーが、複数の呼び出しを要する質問をします。たとえば「10 月の売上、ショップと B2B の請求書」です。インラインコードが有効な場合、エージェントはプログラムを書いて code_execute で実行します。読み取り専用で、ユーザー自身の権限により、そのサーバー上でユーザーが利用できるコネクタに対して実行されます。このようなプログラムの例は 売上のレシピ を参照してください。
ステップ 2 — エージェントが保存を提案する
エージェントが保存する価値のあるパターンを見つけると(自発的に、またはユーザーが「これをツールとして保存して」と言った場合)、次の項目を指定して code_propose_tool を呼び出します。
| フィールド | エージェントが入力する内容 |
|---|---|
name | 短いツール名(例: monthly_revenue_by_channel) |
description | ツールの動作と戻り値。管理者と今後の呼び出し元に向けたもの |
code | プログラム。code_execute と同じ種類の本体 |
rationale | 保存する価値がある理由(例:「今月 4 回質問された。約 20 回のツール呼び出しを置き換える」) |
inputSchema | 任意: ツール独自のパラメータ(例: YYYY-MM 形式の month) |
エージェントへの応答はシンプルです。提案はレビュー用に記録され、管理者が承認するまで実行されることも、ツールになることもありません。ユーザーにも同じ内容を伝えられます。
ステップ 3 — 管理者がレビューする
サイドバー(Intelligence の下)の AI Skills を開き、Suggested に切り替えます。提案は Code tool proposal と記されたカードとして表示され、次の内容が含まれます。
- スコープと、エージェントによる提案であり 読み取り専用で、呼び出し元の権限で実行される ことの注記
- Why: エージェントの理由
- Does: 説明
- Program:文字数付きで、全文を読めます
- ツールがどのコネクタに作成されるかの注記と、書き込みや作成者の権限は後からコネクタのツールページでのみ追加できるという注記

小さなプルリクエストをレビューするつもりでプログラムを読みましょう。
- どのツールを呼び出しているか? すべての
amcp.run('…')を確認します。説明で約束しているものと一致し、すべて読み取りでしょうか。 - 何を返すか? 質問に必要なものだけでしょうか。それとも個人データを含むレコード全体でしょうか。
- ループは適切か? 終了するページング、並列呼び出しのバッチ、必要もなく大きなテーブルの行ごとに呼び出していないか。実行は 10 秒または 500 回のツール呼び出しで停止します。
- 名前と説明は明確か? AI が適切なタイミングで呼び出し、結果を正しく説明できる(税込か税抜か、どの期間か、どのシステムか)だけの明確さがあるでしょうか。
ステップ 4 — ツールを作成する、または却下する
Create tool は通常のツール作成時のチェックを実行します。コネクタは同じワークスペースに属している必要があり、プランの保存済みコードツール数の上限が適用されます。ツールはカードに記載されたコネクタ上に作成されます。
- 読み取り専用(データを変更しないツールのみ呼び出せます)
- invoker として実行(内部の各呼び出しは、呼び出し元自身のロールに対してチェックされます)
- そのサーバー上の 提案者のコネクタを使用。作成後にツールを開き、Uses を実際に呼び出すコネクタとツールに絞り込んでください。
Dismiss は提案を Dismissed タブに移動します。望まないものをエージェントが提案し続ける場合は、サーバーのインストラクションでその旨を伝えてください。
ステップ 5 — 必要な場合のみ: 権限を意図的に追加する
作成されたツールは、コネクタの MCP Tools ページで、他のコードツールと同様に編集できます。次の 2 つの設定は、提案経由では一切変更できません。
- Allow write tools:プログラムがデータを変更するツールを呼び出せるようにします。Enterprise が必要です。
- Run as definer:呼び出し元の権限ではなく、作成者のキュレーションでプログラムを実行します。管理者のみ設定できます。
どちらも保存時に再チェックされます。これが設計の要点です。提案は常に読み取り専用で、常に invoker であり、提案ユーザーがすでに利用できるコネクタに限定されるため、エージェントが自分自身の権限を引き上げることはできません。
安全である理由
- 提案は何も実行しません。
code_propose_toolはコードを実行せず、何も作成しません。 - 権限昇格なし。 提案されたツールは提案者自身のコネクタのみを参照でき、読み取り専用の invoker として開始します。
- 決定するのは人です。 提案をツールにできるのは管理者のみで、手書きのツールと同じチェックを通ります。
- 実行は隔離され、監査されます。 作成後は、すべての実行が隔離されたコードランナーを通り、内部の各ツール呼び出しとともに記録されます。詳しくは AI エージェントのための安全なコード実行 を参照してください。
FAQ
一般ユーザーもツールを提案できますか?
ロールにインラインコード権限があり、コードモードが inline のサーバー上であれば、どのユーザーでも提案できます。権限がない場合、そのユーザーには code_execute も code_propose_tool も表示されません。
エージェントは提案が承認されたかどうかを確認できますか? ツールが作成されると、エージェントは他のツールと同様にサーバーのツール一覧で新しいツールを確認でき、以降は呼び出せます。
ツールを作成する前にプログラムを編集できますか? いったん作成してから、コネクタの MCP Tools ページで他のコードツールと同様に、プログラム、説明、パラメータ、Uses を編集できます。
関連記事
- MCP コードモードとは?
- 最初のコードツールをステップごとに作成する
- コードモードのレシピ: 月次売上、請求書の照合、100 件の価格照会
- AI エージェントのための安全なコード実行
- MCP ガバナンス、ユーザーロールと権限
- MCP のナレッジグラフ
このガイドは役に立ちましたか?