ツール管理
概要
ツールは Agent が操作を実行するための「手足」です。システムは 19 種類の組み込みツールを提供し、MCP プロトコル、OpenAPI 定義、およびスキルによるツールセットの拡張をサポートします。ツール管理ページでは、利用可能なすべてのツールを設定・管理します。

19 種類の組み込みツール
ファイル操作系(7 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Read File | ファイル内容を読み取り、行番号範囲に対応、上限 5MB | P0(自動実行) |
| Write File | ファイルを書き込み、存在しない場合は親ディレクトリを含めて自動作成 | P0 |
| Edit | 既存ファイルの局所的な修正(検索置換モード) | P0 |
| MultiEdit | 既存ファイルに対する複数箇所の一括修正 | P0 |
| List Directory | ディレクトリのファイルとサブディレクトリを一覧表示し、ファイルサイズを表示 | P0(ロック) |
| Glob Files | ワイルドカードパターンでファイルを検索、最大 100 件の結果 | P0(ロック) |
| Search Files | ファイル内容を正規表現で検索、最大 250 件の結果 | P0(ロック) |
コマンド実行系(1 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Bash | Shell コマンド、スクリプト、Git 操作を実行、タイムアウト 120 秒、出力上限 50KB | P1(初回確認) |
ネットワーク系(1 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Web Fetch | URL の内容を取得して Markdown に変換、自動ノイズ除去、15 分間キャッシュ | P1 |
タスク管理系(1 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Task Manage | 構造化タスクリスト(未着手/進行中/完了)を管理、3 ステップ以上のタスクで自動呼び出し | P0(ロック) |
スキル呼び出し系(1 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Skill | インストール済みの Skill モジュールを呼び出して専門タスクを実行 | P1 |
ユーザーインタラクション系(1 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| AskUserQuestion | Agent がユーザーに質問を投げかける(最大 4 問、各 2〜10 個の選択肢) | P0(ロック) |
サブエージェント系(3 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| create_local_sub_agent | 本ノード上に一時的なサブエージェントを作成、1〜3 段のネストに対応 | P0 |
| dispatch_sub_agent | 登録済みのサブエージェントにタスクを振り分け | P0 |
| dispatch_multi_node_agent | Gateway 経由でリモートノードにタスクを振り分け | P0 |
メモリ系(4 種類)
| ツール | 機能 | セキュリティレベル |
|---|---|---|
| Conversation Search | キーワードで過去の対話を検索、時間範囲フィルターに対応、最大 10 件 | P0(ロック) |
| Recent Chats | 直近 1〜20 件の対話セッションを一覧表示、時間フィルターに対応 | P0(ロック) |
| Memory Query | 保存済みのユーザーメモリを検索(セマンティック検索 + グラフ拡張) | P0(ロック) |
| Memory Manage | ユーザーメモリの追加、更新、または削除 | P1 |
セキュリティレベルの説明
| レベル | 意味 | 動作 |
|---|---|---|
| P0 | 安全な操作 | 自動実行、ユーザー確認不要 |
| P1 | 確認が必要 | 初回呼び出し時に権限確認をポップアップ |
| P2 | 毎回確認 | 呼び出しのたびにユーザー確認が必要 |
| ロック | 降格不可 | セキュリティレベルが固定され、調整不可 |
管理者はセキュリティガードレールでロックされていないツールの権限レベル(組織の下限)を調整でき、個人は APP 実行時セキュリティでさらに厳格化できます。
MCP ツールプロトコル
**MCP(Model Context Protocol)**は標準化された AI ツール通信プロトコルで、外部サービスによるツールセットの拡張をサポートします。
3 種類の伝送方式
| 伝送 | 説明 | 適用シーン |
|---|---|---|
| stdio | ローカルサブプロセス通信(command + args) | ローカル CLI ツール |
| SSE | Server-Sent Events(HTTP ロングコネクション) | リモートサービス |
| HTTP | Streamable HTTP API | リモートサービス |
5 種類の認証モード
| 認証 | 説明 |
|---|---|
| none | 認証なし |
| bearer | Bearer Token |
| basic | HTTP Basic Auth |
| service | サービス間認証 |
| oauth2 | OAuth2 認可コードフロー(well-known エンドポイントを自動検出) |
MCP 管理画面
McpManager コンポーネントで MCP サーバーを管理します:
- サーバーの追加:名称、伝送方式、接続パラメータ、認証方式を設定
- 編集/削除:既存の設定を変更または削除
- 有効化/無効化:サーバーの利用可否状態を切り替え
- ツール検出:接続後、サーバーが提供するツールリストを自動検出
セキュリティ分離
MCP サブプロセスはホワイトリスト環境変数のみを渡し、API Key などの機密情報の漏洩を防ぎます。
API ツール
OpenAPI/Swagger ドキュメントからの自動解析とツール作成をサポートします:
| 機能 | 説明 |
|---|---|
| 自動解析 | OpenAPI 仕様からエンドポイント、パラメータ Schema を抽出 |
| 認証設定 | 5 種類の認証モード |
| テンプレート変数 | {{variable}} 動的置換 |
| HTTP メソッド | GET / POST / PUT / DELETE / PATCH |
カスタムツールディレクトリ NEW
システムに ToolDirectoryManager を新たに追加しました。{dataDir}/TOOLs/{orgId}/_custom/ ディレクトリ配下のカスタムツールを管理し、APP を再起動せずにロードできます。
ディレクトリ構造
{dataDir}/TOOLs/{orgId}/_custom/
├── my-tool-1/
│ ├── metadata.json
│ └── ...
└── my-tool-2/
├── metadata.json
└── ...
metadata.json の例
{
"id": "my-tool-1",
"name": "My Custom Tool",
"description": "自定义工具说明",
"type": "API",
"enabled": true,
"createdAt": 1776921208476,
"updatedAt": 1776921208476
}
ロード機構
- スキャンメソッド:
scanAndLoad(orgId) - 型サポート:
API/MCP - 組織分離:orgId ごとにディレクトリを分け、相互に干渉しない
- ホットロード:APP の再起動不要
ツールロードパイプライン
すべてのツールは以下の順序でロードされ、マージされます:
① 組み込みツール(19 種類)
↓
② MCP ツール(設定済みの MCP サーバーから検出)
↓
③ API ツール(OpenAPI 定義から解析)
↓
④ カスタムツール(ToolDirectoryManager が _custom/ ディレクトリをスキャン)
↓
⑤ スキルツール(有効化された Skills から execute_skill_{id} を注入)
↓
⑥ マージして重複排除 → 最終ツールリスト → LLM に送信
よく使うツールの利用シーン
| ユーザーリクエストの例 | Agent が呼び出すツール | 説明 |
|---|---|---|
| 「package.json の内容を見てほしい」 | Read File | ファイル内容を読み取って返す |
| 「関数名を getData から fetchData に変更して」 | Edit | 正確な検索置換 |
| 「README.md を作成して」 | Write File | 新規ファイルを作成 |
| 「プロジェクトにはどんな .tsx ファイルがある?」 | Glob Files | パターンでファイル名を検索 |
| 「コード内のどこで useEffect を使っている?」 | Search Files | ファイル内容を正規表現で検索 |
| 「npm install を実行して」 | Bash | Shell コマンドを実行 |
| 「この Web ページの内容を要約して:https://...」 | Web Fetch | Web ページを取得して Markdown に変換 |
| 「このタスクは複雑なので、まず計画を立てて」 | Task Manage | 構造化タスクリストを作成 |
| 「昨日のデータベース移行に関する対話を検索して」 | Conversation Search | 過去の対話を検索 |
| 「私は dark テーマを好むと覚えておいて」 | Memory Manage | メモリに保存 |
操作ガイド:MCP ツールの追加
- APP を開く → 設定 → ツール → MCP ツール領域
- MCP サーバーの追加をクリック
- 設定を入力:
- 名称:この MCP サーバーに識別用の名前を付ける
- 伝送方式:stdio / SSE / HTTP を選択
- stdio の場合:コマンド(例:
npx)とパラメータ(例:@anthropic/mcp-server-filesystem)を入力 - SSE/HTTP の場合:サーバー URL を入力
- 認証が必要な場合、認証方式を選択して認証情報を入力
- 保存をクリック
- システムが自動的にサーバーに接続し、利用可能なツールを検出
- 検出されたツールがツールリストに表示され、デフォルトで有効化される
ヒント:MCP サブプロセスはホワイトリスト環境変数のみを渡します。MCP ツールが API Key などの環境変数を必要とする場合、設定の env フィールドで明示的に宣言する必要があります。
ツール無効化の影響
あるツールを無効化すると、Agent は対話中にそのツールの存在をまったく認識しなくなります。これは以下を意味します:
| 無効化したツール | 影響 |
|---|---|
| Bash | Agent はいかなる Shell コマンド(npm、git、コンパイルなど)も実行できない |
| Read File / Write File | Agent はファイルの読み取りや作成ができない |
| Web Fetch | Agent は Web ページの内容を取得できず、検索系スキルも影響を受ける |
| Memory Query / Manage | Agent はメモリの検索や保存を行わない |
| Skill | Agent はいかなるスキルモジュールも呼び出せない |
| create_local_sub_agent | Agent はサブエージェントを作成してタスクを分解できない |
推奨:明確なセキュリティ上の理由がない限り、コアとなるファイル操作ツール(Read / Write / Edit / Glob / Search)の無効化は推奨しません。無効化すると Agent のタスク実行能力が著しく制限されます。
よくある質問
Agent が「ファイル操作を実行できません」と言う
ファイル操作系ツール(Read File、Write File、Edit など)が無効化されていないか確認してください。ツール管理ページでこれらのツールが有効な状態であることを確認します。
MCP ツールの接続に失敗する
- MCP サーバーのコマンド/URL が正しいか確認する
- stdio 方式の場合、対応するコマンドがインストール済みか確認する(例:
npxには Node.js 環境が必要) - 環境変数(API Key など)が必要かどうかを確認する
- APP ログを確認して詳細なエラー情報を取得する
Agent が期待したツールを使ってくれない
Agent はタスクのニーズに基づいて自律的にツールを選択します。Agent が「間違った」ツールを選択した場合、対話中で明確に指示できます:「Bash ツールを使ってこのコマンドを実行してください」。
関連ドキュメント
- スキル管理 — スキルシステム
- 実行時セキュリティ — ツール権限の設定
- セキュリティガードレール — エンタープライズ向けツール権限管理
