カスタムツールグループ – 数日ではなく数分でエージェントを起動
昨日ご紹介したツールグループにより、MCPサーバーをECやソーシャルなど特定ドメイン向けにスコープ設定可能となりました。本日さらに一歩進んだ機能「カスタムツールグループ」を発表します。
必要なツールだけを厳選したMCPサーバーインスタンスを自由に作成できます。過剰な機能も不足もありません。精密なカスタマーサポートエージェントから外科手術レベルの精度を持つリサーチアシスタントまで、カスタムツールグループなら新設定ウィザードで数分で構成可能です。
課題:万能ツールは存在しない
ツールグループは、ソーシャルやブラウザといった事前定義されたクラスターを選択することでコンテキスト汚染を解決しました。しかし、ユースケースが既存のカテゴリーに完全に当てはまらない場合はどうでしょうか?
価格監視エージェントを構築していると仮定しましょう。必要なのは:
- Amazon商品検索
- eBay商品データ
- Googleショッピングインサイト
しかし、ECOMMERCEグループに含まれるウォルマート、ターゲット、その他15のECデータセットは不要です。これらを読み込むとトークンを浪費し、モデルの精度を低下させます。
あるいは、B2Bリサーチエージェントを想像してみてください。必要なのは以下のデータのみです:
- LinkedIn個人プロフィール
- LinkedIn企業データ
- 検索エンジン(見込み客発見用)
Amazonやウォルマート、その他のECツールは不要です。それらは単なるノイズに過ぎません。
解決策:ツールの細分化選択
MCPサーバーを拡張し、URLパラメータによるツールごとのカスタマイズをサポートしました。エージェントに必要な機能を正確に選択できるようになりました。
仕組み
内部では、認証レイヤーが接続URLからtoolsパラメータを抽出し、動的にツールマニフェストを構築します:
function extract_url_params(request){
const url = request.url || '';
const params = {};
// ツール個別のパラメータを抽出
const tools_match = url.match(/tools=([a-zA-Z0-9_,]+)/);
if (tools_match)
{
const tools_str = tools_match[1];
params.tools = tools_str.split(',')
.map(t=>t.trim())
.filter(Boolean);
}
return params;
}
?tools=web_data_amazon_product,search_engine を指定すると、サーバーは次の2つのツールのみを含む許可ツールセットを構築します:
function build_allowed_tools(groups = [], tools = []){
const allowed = new Set();
for (let groupId of groups)
{
const group = Object.values(GROUPS).find(g=>g.id==groupId);
if (group)
{
for (let tool of group.tools)
allowed.add(tool);
}
}
for (let tool of tools)
allowed.add(tool);
return allowed;
}
最後に、サーバーに登録された各ツールはクライアントのアクセス権限を確認します:
const add_tool = tool=>{
server.addTool({
...tool,
canAccess: auth=>{
// Proモードでは全ツールへのアクセスを許可
if (auth?.proMode===true)
return true;
// 許可済みセットにツールが含まれるか確認
if (auth?.allowedTools && auth.allowedTools.size)
return auth.allowedTools.has(tool.name);
// デフォルトで pro_mode_tools リストを参照
return pro_mode_tools.includes(tool.name);
},
});
};
結果? MCPクライアントには明示的に許可したツールのみが表示されます。邪魔になる要素も、無駄なトークン消費もありません。
設定ウィザード:ゼロコード設定

実例:価格監視エージェント
価格監視エージェントを段階的に構築しましょう。
ステップ1: ツールの選択
必要なもの:
web_data_amazon_product– Amazonの現在の価格を取得web_data_ebay_product– eBay出品価格との比較web_data_google_shopping– Googleショッピングのトレンドを確認search_engine– 商品URLを検索(基本ツールに含まれる)
ステップ2: ウィザードで設定
ウィザードを開き、APIトークンを入力し、カスタムツールパラメータを使用します:
?tools=web_data_amazon_product,web_data_ebay_product,web_data_google_shopping
ウィザードが設定を検証し、接続URLを生成します。
ステップ3: エージェントを接続
URLをMCPクライアント設定(例:ClaudeDesktopのclaude_desktop_config.json)に貼り付けます:
{
"mcpServers": {
"価格監視": {
"command": "npx",
"args": [
"-y",
"@brightdata/mcp",
],
"env": {
"BRIGHTDATA_API_TOKEN": "YOUR_TOKEN",
"TOOLS":"web_data_amazon_product,web_data_ebay_product,web_data_google_shopping"
}
}
}
}
ステップ4: 起動
エージェントのコンテキストには現在、以下の4つのツールが設定されています:
search_engineweb_data_amazon_productweb_data_ebay_productweb_data_google_shopping
システムプロンプトを60以上のツールが埋める代わりに、4つだけになりました。LLMの注意力はレーザーのように集中しています。
グループとカスタムツールの組み合わせ
ここが強力なポイントです:ツールグループとカスタムツールを組み合わせて使用できます。
基本グループを作成し、個別ツールを追加します:
&groups=social&tools=web_data_amazon_product
これにより以下が実現します:
- すべてのソーシャルメディアツール(LinkedIn、TikTok、Instagramなど)
- +Amazon商品データ
使用例?インフルエンサーマーケティング代理店が以下を行う場合:
- TikTokでクリエイターを発見
- 製品言及を分析
- Amazon商品レビューとの照合
あなたは外科手術のような精度でハイブリッドエージェントを構築しました。
パフォーマンスへの影響:ツールグループよりもさらに軽量化
昨日、ツールグループが60以上のツールを全て読み込む場合と比較して、システムプロンプトトークンを約60%削減することを示しました。
カスタムツールはこの効果をさらに拡大します:
| 設定 | 読み込まれたツール数 | 推定トークン削減率 |
| フルスイート | 60以上のツール | ベースライン (0%) |
ツールグループ(例:ソーシャル) |
約25ツール | 約60% |
| カスタムツール(例:4ツール) | 4ツール | 約85% |
なぜこれが重要なのか?
- 低遅延 – 初期ハンドシェイクが高速
- 精度向上 – モデルが関連性のないツールからパラメータを誤って生成しない
- コスト削減 – リクエストごとの入力トークン数が減少
ツール選択を超えたトークン最適化
カスタムツールはトークン削減戦略の一部に過ぎません。出力側も最適化しています:
ARIAスナップショットフィルタリング
スクレイピングブラウザツール使用時、エージェントはDOMスナップショットを受信します。しかし完全なスナップショットは数千トークンに及ぶ場合があります。
インタラクティブな要素(ボタン、リンク、フォームフィールド)のみを表示するようフィルタリングします:
export class Aria_snapshot_filter {
static INTERACTIVE_ROLES = new Set([
'button', 'link', 'textbox', 'searchbox', 'combobox', 'checkbox',
'radio', 'switch', 'slider', 'tab', 'menuitem', 'option'
]);
また、長い名前は切り詰めて要素をコンパクトにフォーマットします:
static format_compact(elements){
const lines = [];
for (const el of elements)
{
const parts = [`[${el.ref}]`, el.role];
if (el.name && el.name.length>0)
{
const name = el.name.length>60 ?
el.name.substring(0, 57)+'...' : el.name;
parts.push(`"${name}"`);
}
// コンパクトなフォーマット
}
return lines.join('n');
}
結果?22,000トークンあったブラウザのスナップショットが3000トークンに。エージェントはボタンクリックやフォーム入力に必要な情報を全て取得しつつ、無駄を省いた状態に。
ドメインベースのブラウザセッションキャッシュ
また、不要な再起動を避けるため、ドメインごとにブラウザセッションをキャッシュします:
export class Browser_session {
constructor({cdp_endpoint}){
this.cdp_endpoint = cdp_endpoint;
this._domainSessions = new Map(); // ドメインごとにセッションをキャッシュ
this._currentDomain = 'default';
}
async _getDomainSession(domain, {log}={}){
if (!this._domainSessions.has(domain))
{
this._domainSessions.set(domain, {
browser: null,
page: null,
browserClosed: true,
requests: new Map(),
});
}
return this._domainSessions.get(domain);
}
エージェントがAmazonを自動化する場合、ブラウザは後続のAmazon操作のために開いたままになります。これにより、アクションごとの実行時間が2~3秒短縮され、繰り返される初期化ログによるトークン使用量が削減されます。
お試しください
カスタムツールは現在、Web MCPサーバーで利用可能です。
ウィザードをご利用ください
MCPコントロールパネルにアクセスし、設定ウィザードをご利用ください。APIトークンを入力し、ツールを選択すると、すぐに使える接続URLを取得できます。
無料利用枠
基本ツール(Web UnlockerとSearch Engine)で月間5,000リクエストを無料で利用できます。カスタムエージェントのプロトタイピングに最適です。
明日:数ヶ月かけて開発してきた新機能をリリースします。エージェントワークフローの概念を変える革新的な機能です。ご期待ください。