Claude Media
Claude CodeのExaプラグインでWeb検索と多段リサーチを行う

Claude CodeのExaプラグインでWeb検索と多段リサーチを行う

ExaプラグインはMCPのWeb検索ツールに、サブエージェントへ調査を割り振るsearchスキルとagent_run用のexa-agentスキルを足します。導入コマンドと調査の流れ、認証の選び方をまとめました。

Exaプラグインは検索ツールに調査の段取りを足す

Exaプラグインを入れると、Claude CodeにWeb検索のMCPツールと、検索を何本も束ねる2つのスキルが同時に入ります。1回の検索では足りない調査を、段取りごと任せるための構成です。

マーケットプレイスの紹介文は、Webの検索・深い調査・コンテンツ抽出を担い、MCPツールと調査用スキルを備えるプラグインだと説明しています。提供元はExaで、マーケットプレイスの掲載名はexaです。

MCPサーバー単体の接続手順は、Exa MCPサーバーをClaudeに接続する記事にまとめています。ここでは、プラグインで増えるスキルの中身と、多段の調査がどう進むかを扱います。

構成要素役割
MCPサーバー(https://mcp.exa.ai/mcp)役割web_search_exaとweb_fetch_exaを提供する
searchスキル役割サブエージェントに検索を割り振り、結果を統合する
exa-agentスキル役割agent_runで構造化出力つきの調査を走らせる

導入は1コマンドで、反映は新しいセッションから

READMEは、Claudeでの導入方法としてマーケットプレイスからのインストールか、次のコマンドを案内しています。

claude plugin install exa@claude-plugins-official

Claude Code内で/pluginを開いて検索する方法でも入ります。導入後は新しいセッションを始めると、MCPツールとスキルの両方が読み込まれます。

スキルはリポジトリのskills/配下にあり、READMEによればAgent PluginやClaudeプラグインとしてのインストールで読み込まれます。MCPだけを追加した構成にもツールは付きますが、スキルが載せる段取りは付きません。READMEの言葉では「スキルはオーケストレーションを足す」ものです。

MCPツールは既定の2本と、あとから足す2本

READMEの一覧では、既定で有効なのがweb_search_exaとweb_fetch_exaの2本です。前者はWebを検索してそのまま使える内容を返し、後者は1つ以上のURLからページ全文をMarkdownで返します。

agent_runとweb_search_advanced_exaは任意のツールです。有効にするにはMCPのURLにtoolsパラメータを付けます。

https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa,agent_run

指定すると既定の組が置き換わるため、使い続けたいweb_search_exaなども並べる必要があります。READMEにも「既定を置き換えるので、欲しいものをすべて含める」と書かれています。

exa-agentスキルが前提にするagent_runは、この任意側のツールです。スキルの必須ツールもagent_runです。Exa Agentを使うには、OAuthかAPIキーでの認証が要ります(READMEの記載)。

searchスキルは調査を「見積もる」ところから始める

searchスキルの定義は、Claude自身を調査の指揮役に置きます。指揮役の仕事は、問いを理解し、作業を計画し、サブエージェントに文脈を渡して割り振り、最後に結果をまとめて返すことです。

質問の重さで動き方が変わる

最初にクエリの複雑さを4段階で見積もります。

見積もり

searchスキルの4つの複雑さ

  • ごく単純

    1〜2ページの読み取りなど。サブエージェントを使わず、Claudeが自分で検索して答えます。

  • 中程度

    速く軽い検索を頼まれた場合。サブエージェント1つに任せ、メインの文脈を汚しません。

  • 高度

    トピックも条件も明確で、並列検索が数本あるケース。並列のサブエージェントを1ラウンド走らせて統合します。

  • 複雑

    異なる種類の対象をまたぐ照合、多段の連鎖、網羅、意味による絞り込みを含むケース。並列のサブエージェントを複数パスで回します。

簡単な質問と複雑な質問のどちらにも読める依頼では、勝手に決めません。スキルは解釈と候補の深さ、それぞれの進め方を示し、利用者に選ばせるよう指示しています。たとえば「軽く1〜2回検索する」か「3〜4体のサブエージェントに展開して深く調べる」かを選ぶ形です。

逆に「網羅的に」「すべて探して」と明示された依頼や、「概要だけ」と深さを指定された依頼では、確認を挟みません。

日付は最初に計算させる

「先週」「直近半年」のような時間表現があるときは、環境にある今日の日付から正確な日付を先に計算し、計算過程を書き出させます。例の日付を流用するのも禁止です。多段の調査で日付の取り違えが全体を狂わせないよう、入口で固定する作りです。

サブエージェントは検索を担当し、生の結果は持ち帰らない

割り振りにはAgentツールが使われ、サブエージェントのモデルはhaikuです。役割は、指定された検索を走らせて結果を整理し、コンパクトな構造化出力だけを返すこと。生の検索結果をメインの文脈に入れないためで、定義も「バルクの検索をメインの文脈で行わない」と念を押します。

サブエージェントへ渡す指示のひな形は、次の3点を含みます。

  1. 読むべき参照ファイル(references/searching.mdは必ず指定し、必要に応じてextraction.md・filtering.md・synthesis.md・source-quality.mdを足す)
  2. 具体的に走らせる検索、または担当する作業
  3. 返す形式(JSONや表など)

参照ファイルはスキルのディレクトリ基準の絶対パスで渡します。返答の最後には「sources_reviewed: N」の1行を必ず付けさせ、Nはweb_search_exaのnumResultsの合計です。リトライ分も含めます。この数字は、完了時の「Exaで件の情報源を体のサブエージェントで確認しました」という書き出しに使われます。

分け方は「同義語」ではなく「角度」

並列に走らせるときは、元の問いを小さな問いに分解して別々の検索領域を担当させます。定義の例では、本番向けのオープンソースLLMファインチューニング基盤を調べるとき、次の3つに割っています。

  • 実務のエンジニアは何を薦め、実際の運用で何と言っているか
  • 直近半年に登場して注目を集めているが、まだ知られていないものは何か
  • 本番で出る不満や失敗の型、別の基盤へ移った理由は何か

言い換えただけのクエリを別のサブエージェントに投げても、同じ埋め込み領域に当たるのでトークンの無駄になります。「過大評価されたAIツール」と「誇大広告されたAIツール」を並べるのがその例です。

サブエージェントの1体あたりの目安は検索3〜5本で、複数体は1回のメッセージでまとめて起動し、バックグラウンド実行は使いません。

統合のあとにある「複数パス」と情報源の見立て

サブエージェントが戻ったあとの手順も決まっています。

  • URLが同じものを落とし、同じ対象が別ソースから来たときは項目を統合して最も完全で新しいデータを残す
  • 時期・地域・対象の種類に抜けがないかを確かめ、穴があれば追加の検索を出す
  • 複数体の結果がよく重なっているかを見る。まったく重ならないなら、見逃した角度がある可能性がある

前のパスの結果が次のパスの入力になる問いには、複数パスが使われます。

パターン動き
対象の連鎖(マルチホップ)動き1パス目で企業を探し、2パス目で各社の人物を探し、3パス目でその人物の公開発言を集める
探索してから絞る動き1パス目で全体像を粗く見て、2パス目で有望な方向を深掘りする
基準の発見動き「最良」が決まっていないとき、1パス目で実務者が重んじる基準を調べ、2パス目で候補を探す

パスの間では、必ず統合と重複排除を挟みます。

情報源の質の見方にも手順があります。複数の情報源が一致していても、質の低い情報源が3つ揃っただけではノイズが共通しているだけだ、という考え方です。意味を持つのは、利害を持つ実務者のような質の高い独立した情報源が同じ結論に収束したときです。実務者は評論家より重く見て、利害のずれた情報源は先に除きます。

また、Exaが返すのは類似度であって、条件を満たすかの検証済みではありません。検索結果に出たからといって利用者の条件を満たすとは限らないので、検証は指揮役の仕事です。

出力は1画面に収める

最終出力はClaude Codeの画面1つ分に収めます。比較は箇条書きより表を優先します。収まらないときは、./exa-results/<トピック>-<YYYY-MM-DD>にCSVかMarkdownで書き出し、画面にはそのファイルへの案内を置きます。

exa-agentスキルは構造化された調査と補強に向く

もう一方のexa-agentは、Exa Agentを通じた多段の調査、リストづくり、補強(エンリッチメント)、構造化出力、実行の継続、網羅の検証向けです。まず作業の面を決めるための判断が定義にあります。

  • 入力行が既に分かっていて、同じ形の補強を大量に繰り返すなら、ExaのAPIを直接叩く決定的なスクリプトを書く。数百回の同一ツール呼び出しを文脈の中で手作業で回さない
  • 対象の範囲を決めるところから始まる探索、人物や企業の発見、多段の調査、前回の続きは、Exa Agentを使う

agent_runを呼ぶ前に、目的・対象の範囲・分割軸・網羅の目標・出力フィールド・根拠の要件・除外対象を書き出させる点も特徴です。出力スキーマ(outputSchema)は最上位をオブジェクトにし、行を名前付きの配列に入れ、配列にmaxItemsを付け、結論だけでなく出典フィールドを持たせます。定義にある企業リストのスキーマは、おおむね次の形です。

{
  "type": "object",
  "properties": {
    "companies": {
      "type": "array",
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "company_name": { "type": "string" },
          "website": { "type": "string", "format": "uri" },
          "why_it_qualifies": { "type": "string" },
          "evidence_url": { "type": "string", "format": "uri" },
          "confidence": { "type": "string", "enum": ["low", "medium", "high"] }
        },
        "required": ["company_name", "website", "why_it_qualifies", "evidence_url"]
      }
    },
    "coverage_notes": { "type": "string" }
  },
  "required": ["companies", "coverage_notes"]
}

こちらは定義の例を縮めたものです。実際の出力はクエリごとに変わります。effortを省くと既定のlowで動き、autoや高い値は、利用者が深さを求めたときか、タスクが明らかに必要とするときに使います。

提携データを足せるプロバイダー

Exaの検索に加えて有料の提携データを使うときは、agent_runのdataSourcesで指定します。セルフサーブで使えるプロバイダーは次の7つです。

プロバイダー扱うデータ
fiber扱うデータB2Bの企業・人物・求人・連絡先の補強
financial_datasets扱うデータ米国上場企業のティッカー別ニュース
similarweb扱うデータサイトのトラフィック推計、順位、競合の発見
baselayer扱うデータ米国企業の確認、役員、登記、KYB
affiliate扱うデータ商品カタログ、価格、ブランド、販売先リンク
particle扱うデータ話者と時刻つきのポッドキャスト書き起こし検索
jinko扱うデータ運賃順の旅行先の発見

使いたいプロバイダー固有のデータは、クエリとスキーマの両方に名前で書きます。書かないと、プロバイダーを使わずWeb検索に流れることがあります。申請制のプロバイダーは、利用者のExaアカウントで有効だと言われた場合以外は勧めません。

実行の継続: runIdとpreviousRunId

長い調査は1回のMCP呼び出しで終わらないことがあります。応答のstatusがrunningなら、返ってきたrunIdを付けてagent_runを再び呼び、outputReadyがtrueになるまで繰り返します。この再開が効くのは、1回の呼び出しより長く保持される実行です。

別物なのがpreviousRunIdで、完了した実行の続きを頼むときに使います。向く場面は次の5つです。

  • 一覧を絞り込む
  • 欠けた項目を埋める
  • 別のセグメントを追加で調べる
  • 前の結果を検証する
  • 「これに似たものをもっと」と頼む

失敗した実行や実行中のもの、無関係な新しい依頼には使えません。他のセグメントと独立した網羅が欲しいときも、別の実行に分けて結果を自分で統合します。

ZDR(Zero Data Retention)のチームは勝手が違います。新しい実行は常にストリームで返り、出力はそのライブストリームでしか受け取れないため、runIdでの再開もpreviousRunIdも使えません。MCP呼び出しの窓は約750秒で、収まらないときはeffortを下げるか、タスクを分けます。

網羅の検証: 「全件」と言い切る条件

実行が完了しても、結果が網羅的とは限りません。結果はoutput.structuredとoutput.groundingの両方を読み、次の5点を確かめます。

  1. 行数が目標に届いているか
  2. セグメントごとの偏りはないか
  3. 同一の対象が重複していないか
  4. 根拠の質は十分か
  5. 抜けている領域はどこか

「全社」「完全なリスト」「網羅的」と書いてよいのは、対象の範囲が有限で明確、探索がおもなセグメントを覆い、件数と抜けを確認し、重複を解消し、根拠を点検し、残る不明点を開示した場合だけです。検証が足りないときは「ベストエフォートの探索」「信頼度の高い初期の母集団」「網羅ではない」「Xでは厚く、Yでは薄い」のように書きます。

結果がまばらなら、previousRunIdで続ける、既出の結果をinput.exclusionに入れる、母集団を分ける、スキーマの項目を絞って明確にする、次のような手を使います。実行が始まらないときはHTTPエラーを表に出し、スキーマ・認証・入力を直します。Exa Agent向きの仕事を、黙って汎用のWeb検索に回すことはしません。目的やスキーマが間違っていたら、ストリームを中断して作り直します。

認証は匿名・OAuth・APIキーの3つ

MCPサーバーは匿名でも動きますが、レート制限があります。上限を上げたい場合や、Exa Agentを使う場合は、OAuthかAPIキーを使います。READMEが勧めているのはOAuthです。

方式設定向く場面
匿名設定設定なし向く場面まず試す
OAuth設定多くのクライアントがExaへのサインインを促す。強制するならhttps://mcp.exa.ai/mcp?login向く場面日常の利用、agent_run
APIキー設定ダッシュボードで発行し、?exaApiKey=…・Authorization: Bearer …・x-api-keyヘッダーのいずれかで渡す向く場面OAuthが使えないクライアント

searchスキルは、認証やレート制限のエラーが出ると、修正方法(できればOAuth)を利用者に示します。汎用のWeb検索へ黙って切り替える作りではありません。調査の出典がExa経由かどうかを後から確かめたい場合に、この挙動が効きます。

使い始めの確認と依頼の例

導入後の最初の確認は、検索を1本だけ頼むことです。単純な質問ならスキルは指揮役を省き、Claudeが直接検索して答えます。

Exaで、Claude Codeのプラグイン機構について最近の公式発表を2件探して要約して

多段の動きを試すなら、深さを自分で指定すると確認の質問を省けます。

Exaで、オープンソースのベクトルデータベースを網羅的に調べて。
ライセンス、マネージド提供の有無、最近半年の動きを表にして。
出典URLも付けて

「網羅的に」と書いたため、スキルの定義上は確認なしで複雑な調査として進む条件に当たります。画面に収まらない表は、指示どおりなら./exa-results/にファイルとして書き出されます。

プラグインとclaude mcp addをどう選ぶか

ツールだけで足りる場面、たとえばプロジェクトの.mcp.jsonでチームに共有したい検索ツールの設定なら、MCPサーバーとして追加する方が構成を絞れます。接続の書式はExa MCPサーバーの記事にあります。

searchスキルがサブエージェントを多用する点は、トークン消費を見るうえで押さえたい性質です。サブエージェント自体の作り方や並列実行の設計はClaude Code Subagents完全ガイドにあります。導入したプラグインがコンテキストをどれだけ使うかは、claude plugin detailsで測る記事の方法で確かめられます。

Claude Code全体のプラグインや設定の位置づけは、Claude Code完全ガイドから辿れます。

導入方法ごとに付くスキル

導入方法付くスキル向く用途
プラグイン(claude plugin install)付くスキルsearchとexa-agent向く用途多段の調査まで任せる
claude mcp add付くスキルなし向く用途検索と全文取得だけで足りる

claude mcp addで入れた構成でagent_runも使うなら、接続URLにtoolsパラメータを付けます。プラグインに同梱されたMCP設定がagent_runを最初から含むかは、マーケットプレイスの掲載ページにもREADMEにも記載がありません。プラグインで入れた場合は、exa-agentを使う前にagent_runが呼べるかをClaude Codeのツール一覧で確かめてください。

よくあるつまずき

切り分け

入れたのに期待どおり動かないとき

  • toolsを付けたら検索が消えた

    toolsパラメータは既定の組を置き換えます。web_search_exaとweb_fetch_exaも並べ直してください。

  • agent_runが認証エラーになる

    匿名ではagent_runを使えません。OAuthかAPIキーに切り替えます。強制するなら接続URLに?loginを付けます。

  • プロバイダーのデータが返らない

    クエリとスキーマの両方にプロバイダー名を書かないと、Web検索に流れます。申請制のプロバイダーは、自分のExaアカウントで有効なものだけが対象です。

まとめ

深い調査ほどhaikuのサブエージェントが増え、トークンも増えます。広く調べさせる前に、exa-agentの出力スキーマでmaxItemsとcoverage_notesを決めておくと、件数と抜けを実行後に数字で確かめられます。

「網羅的に」と頼むのは、その確認の型ができてからでも遅くありません。まず単純な検索を1本通し、認証とツールの有無を確かめてください。

この記事を共有:XはてブLinkedIn