9. ツール¶
ツールは、エージェントが実行時に呼び出す実行部品です。組み込み・ロジック・MCP の 3 区分があり、区分ごとに登録・設定・利用箇所・削除の制約が異なります。
本章では、3 区分の使い分けから、それぞれの設定項目、副作用のあるツールの扱い方までを説明します。
項目
9.1. ツールで確かめること¶
ツールの検討は、まず組み込みツールで足りるかどうかを確認するところから始めます。足りない場合に、業務固有の処理はロジックツールで、外部サービスへの接続は MCP で補う、という順序で検討します。
ロジックツールでは、ツールの「指示」(AI 向けの説明)が LLM の選択精度を左右します。何ができるかだけでなく、いつ呼ぶべきかを書きます。組み込みツールと MCP のツールには、指示を書く欄はありません。
9.1.1. LLMに公開されるツール名の一意化¶
エージェントに割り当てたツールは、区分を問わず LLM へ公開する際に 1 つの名前空間に並びます。複数のツールが同じ名前を名乗ろうとした場合、先に登録された側がそのまま名乗り、後から加わった側には _2 のような連番が自動で付きます。ツール名は 64 文字までで、連番を付けると上限を超える場合は元の名前を切り詰めます。したがって、割り当てたツールの呼び出し名が一覧の表示名と一致しないことがあり得ます。実際に LLM へ渡る名前は、指示文やトレースで確認します。
9.1.2. 画面を開く¶
サイトマップから「Copilot」→「Accel Agent」→「ツール管理」を開きます。画面は「組み込み」「ロジック」「MCP」の 3 タブに分かれています。タブごとに独立した一覧になっており、タブをまたぐ検索はできません。
9.2. 組み込みツールを割り当てる¶
組み込みツールは、製品にあらかじめ用意されているツールです。エージェント定義の編集画面でツールとして選び、割り当てて利用します(「ツール」)。
組み込みツールは製品ごとに提供されており、一覧に表示されるツールは、導入しているモジュールによって変わります。例えば、IM-Workflow のモジュールを導入している環境では、ワークフロー関連のツールが表示されます。
一覧はカテゴリ・サブカテゴリで絞り込めるほか、ツール名と説明をキーワードで検索できます。ツールを選ぶと、そのツールの説明と、設定できる項目が表示されます。
設定できる項目は 2 種類です。
| 項目 | 値を決める人 | 値を決めるとき |
|---|---|---|
| 入力パラメータ | LLM | ツールを実行するたび |
| プロパティ | エージェントの作成者 | ツールを割り当てるとき |
プロパティは LLM には公開されず、値を設定しなかった場合も LLM が値を決めることはありません。設定した値は、そのエージェントのすべての実行で共通に使われます。各項目の意味は、画面に表示される説明を参照してください。
動作を確認するには、提供元の製品側にデータが必要です。IM-Workflow のツールであれば、対象となるフロー定義や案件をあらかじめ用意してください。
9.3. ロジックツールを作る¶
ロジックツールは、IM-LogicDesigner のロジックフローを、業務固有のツールとしてエージェントに割り当てる機能です。登録する項目は、ツールID、ツール名、カテゴリ、説明(人が読む)、指示(AI 向けの説明)、参照するロジックフローとそのバージョンです。
| 項目 | 上限 | 備考 |
|---|---|---|
| ツールID | 64 文字 | new-flow-id・categoriesは予約語のため使用不可(管理画面の REST パスと衝突するため) |
| ツール名 | 255 文字 | 一覧・選択画面での表示名 |
| 説明 | 1000 文字 | 人が読む説明 |
| 指示 | 1000 文字 | AI 向けの説明。LLM がこのツールを利用する際に参照する |
図:ロジックツールの詳細画面。ツールID・指示・参照するロジックフロー・入力パラメータが並ぶ。
設計するときの勘所は、ツールを API の薄いラッパにしないことです。曖昧な入力を許容する、パラメータを絞る、結果を構造化して返す、副作用を明示する、といった設計判断が必要です。例えば「案件ID を受け取ってフィールド値をそのまま返す」だけのツールにすると、LLM は返ってきた生データをどう解釈すべきか自分で判断しなければなりません。「在庫数」「単価」のように意味のわかる形に整えて返すと、後続の判断の精度が上がります。
入出力の定義はロジックフロー側が正であり、ツール側に写しは持ちません。バージョンは「常に最新」を参照するか、特定のバージョンに固定するかを選べます。「常に最新」にすると、ロジックフロー側の入出力変更がエージェントの動作に無断で影響するため、頻繁に更新されるフローを参照する場合はバージョンを固定し、更新のたびに動作を確認してから切り替える運用を検討します。
ロジックフロー側には、実行制御用の予約パラメータ imcoToolExecutionContext が自動的に付与されるため、入力パラメータの定義でこの名前を使わないようにします。
9.4. MCPサーバに接続する¶
MCP は、外部サービスに接続する選択肢です。判断材料として最も重要なのは、intra-mart Accel Platform の権限コンテキストが引き継がれない点にあります。外部サービス側で誰の権限として動作するかを、別途設計する必要があります。
追加は 3 ステップのウィザードで進みます。
図:MCPサーバ追加ウィザードの Step1。サーバURLと、管理時認証方式(認証なし・OAuth・APIキー)を指定する。
| ステップ | 内容 |
|---|---|
| Step1: URL・認証 | サーバURLと管理時の認証方式を指定して接続する。追加の HTTP ヘッダも指定できる |
| Step2: 基本情報 | サーバID・サーバ名・説明・タイムアウトと、実行時の認証方式を設定する。指示は、サーバが返す場合に表示される(編集不可) |
| Step3: ツール確認 | 接続先から取得したツール定義の一覧を確認する |
認証は、なし・API キー・OAuth のいずれかを、管理時と実行時で個別に設定できます。OAuth には、ユーザの認可を得てアクセストークンを取得する認可コード(Authorization Code)と、ユーザ操作なしに JWT アサーション(RFC 7523)でアクセストークンを取得するクライアントクレデンシャルの 2 方式があります。管理者が事前に接続確認する場面では認可コードを、エージェント実行時にユーザ操作を挟めない場面ではクライアントクレデンシャルを選ぶ、という使い分けです。接続方式は Streamable HTTP のみです。プライベートアドレス帯のサーバは、既定の URL ブロックリスト設定では接続できません(「MCPサーバのURLブロックリスト設定」)。
Step3 では、取得したツール定義への注意喚起が表示されます。これは「MCPのセキュリティに注意する」で説明する Tool Poisoning・サプライチェーン攻撃を指しており、ツール名と説明を目視で確認してから登録します。
ツール一覧は自動更新されず、更新しても差分は表示されません。人が目視で確認する運用が必要です。
9.4.1. OAuth の認証プロバイダを登録する¶
認証方式に OAuth を使う場合は、接続先の認可サーバの情報を「認証プロバイダ」として登録しておき、ウィザードで選びます。Step1 の管理時認証方式、または Step2 の実行時の認証方式で OAuth を選ぶと、「認証プロバイダを選択」ダイアログが開きます。使う認証プロバイダがまだない場合は、このダイアログの「新規作成」から登録します。
登録した認証プロバイダは、intra-mart Accel Platformの OAuth プロバイダ設定として保存されます。インポート・エクスポートの説明(「インポート先の前提とインポートの順番」)やロールの説明(「同梱ロールが許すもの」)にある「OAuth プロバイダ設定」は、ここで登録する内容です。
入力する項目は次のとおりです。
| 項目 | 内容 |
|---|---|
| プロバイダID・名前・説明・アイコン | 認証プロバイダを識別する情報を入力する |
| 認証方式 | 認可コード、またはクライアントクレデンシャルを選ぶ。選んだ方式によって、入力する項目が変わる |
| プロバイダ種別 | 選ぶと、その種別のテンプレートで名前・エンドポイント・スコープなどの値が入力される |
| 発行者識別子(issuer) | MCP サーバから認可サーバの情報を取得できた場合は自動で入力され、変更できない。取得できなかった場合は手入力する |
| トークンエンドポイント・クライアントID・スコープ・追加パラメータ | 接続先の認可サーバに合わせて入力する |
| 認可エンドポイント・クライアントシークレット・PKCE方式 | 認証方式が認可コードの場合だけ入力する |
| 鍵形式(PEM・PKCS#12)・秘密鍵・署名アルゴリズムなど | 認証方式がクライアントクレデンシャルの場合だけ入力する。JWT アサーションの署名に使う鍵を設定する |
9.5. MCPのセキュリティに注意する¶
MCP には、Tool Poisoning、Tool Shadowing、Rug Pull、間接プロンプトインジェクションといった、この接続方式に固有のリスクがあります。
| リスク | 概要 |
|---|---|
| Tool Poisoning | ツールの説明文に、LLM への指示(プロンプトインジェクション)を仕込む攻撃 |
| Tool Shadowing | 悪意のあるツールの説明で、他の正規ツールの動作を上書き・改変させる攻撃 |
| Rug Pull | 登録時は無害だったツール定義が、接続先の変更によって後から悪意ある内容に差し替わる攻撃 |
| 間接プロンプトインジェクション | ツールの実行結果(戻り値)に埋め込まれた指示を、LLM が本物の指示と誤認して従ってしまう攻撃 |
信頼できる MCP サーバだけを利用すること、追加時・更新確認時にツール名と説明を目視で確認することが、利用者側の基本です。ツール一覧が自動更新されない仕様(「MCPサーバに接続する」)は、裏を返せば Rug Pull を画面の自動反映では検知できないことを意味します。定期的な目視確認を運用に組み込みます。
9.6. 副作用のあるツールの扱い方¶
読み取り専用のツールは自動実行してよいものの、作成・更新・外部送信を伴うツールは、許可の条件を満たす場合に限って実行させる、という考え方が一般的です。ただし、これは設計上の心得であって、製品機能として強制されるものではありません。
実行前に人の承認を挟む仕組みは、実装には存在しません。MCP のプロトコルが持つ「読み取り専用」といったヒントは受信していますが、実行制御には使っていません。実際に実行を止められるのは、ガードレールの検査だけです(「ガードレール」)。副作用のあるツールを扱うエージェントでは、ツール入力の検査位置にガードレールを置き、想定外の引数(例えば承認や送信を伴う操作)を検知したら止める、という組み合わせが現実的な防御策です。
9.7. 困ったときの確認¶
| 状況 | 確認・対応 |
|---|---|
| 組み込みツールが一覧に出ない | 供給元となる製品が対象バージョンに導入されているか確認する |
| ロジックツールのID を登録できない | 64文字以内か、予約語(new-flow-id・categories)を使っていないか確認する |
| 複数のツールを割り当てたら呼び出し名がずれた | LLMに公開する名前は先着順で確定し、後発には連番が付く。実際の呼び出し名をトレースで確認する |
| MCPサーバに接続できない | プライベートアドレス帯のサーバは既定のURLブロックリストで接続できない(「MCPサーバのURLブロックリスト設定」)。管理時・実行時それぞれの認証設定も確認する |
| MCPの認証でユーザ操作が挟めない | クライアントクレデンシャル方式(JWTアサーション)を検討する。認可コード方式はユーザの認可操作が必要 |
| MCPツールの一覧が古い | 一覧は自動更新されない。差分も表示されないため、人が目視で確認する |
| ツールを削除できない | ロジックツール・MCP・スキルは、いずれかのエージェントに割り当てられている(利用中の)間は削除できない |
| 実行時に利用者ID が必要になった | 実行コンテキストからは取得できない。ロジックフロー側で解決する |