はじめに
Claude Code には内蔵の WebSearch ツールがあり非常に便利ですが、より安定した高機能なウェブ検索を実現するには、MCP(Model Context Protocol)サーバーを追加することをおすすめします。
そこで、本記事では、最も手軽な方法である Tavily MCP の導入手順を解説します。
Claude Code 内蔵 WebSearch vs Tavily MCP
| 項目 | Tavily MCP | Claude Code 内蔵 WebSearch |
|---|---|---|
| 安定性 | ✅ 独立 API で安定 | ⚠️ 利用不可の場合もあり |
| 検索エンジン | Tavily AI 検索エンジン | Claude の標準検索 |
| 結果数 | 最大 20 件指定可能 | 固定(約 10 件) |
| 追加機能 | extract, crawl, map | 検索のみ |
| フィルタリング | ドメイン指定、日付範囲、トピック | ドメイン指定のみ |
| コンテンツ取得 | 生コンテンツ取得オプション | サマリーのみ |
| 地域指定 | 国別ブースト可能 | IP から自動推定 |
| API 制限 | 無料: 月 1,000 リクエスト | Claude 利用制限に含まれる |
以上の様な理由により、安定性と機能性から Tavily MCP の使用をおすすめします。
内蔵 WebSearch の問題点(利用不可になるケース)
Claude Code の内蔵 WebSearch は、以下の状況で利用不可(unavailable エラー)になることがあります:
1. レート制限
| エラーコード | 説明 |
|---|---|
too_many_requests |
API レート制限を超過 |
max_uses_exceeded |
リクエストあたりの最大検索回数を超過 |
短時間に多くの検索を実行すると、レート制限に達することがあります。
2. 使用量制限
- WebSearch の使用は 日次の利用制限 にカウントされます
- 無料プランでは特に制限が厳しくなります
- 利用制限に達すると、リセットまで待つ必要があります
3. 内部エラー・接続問題
| エラーコード | 説明 |
|---|---|
unavailable |
内部エラーが発生 |
invalid_input |
無効な検索クエリ |
query_too_long |
クエリが最大長を超過 |
接続状況によって検索の可用性が変わる場合があります。
4. サンドボックス・ネットワーク制限
Claude Code のサンドボックス設定やネットワーク制限により、外部ドメインへのアクセスがブロックされる場合があります。
なぜ Tavily MCP が推奨されるのか
| 問題 | 内蔵 WebSearch | Tavily MCP |
|---|---|---|
| レート制限 | Claude の制限に依存 | ✅ 独立した API 制限 |
| 可用性 | 不安定な場合あり | ✅ 安定した独立サービス |
| 追加機能 | 検索のみ | ✅ extract, crawl, map |
結論: 安定した検索機能や追加機能が必要な場合は、Tavily MCP の導入をおすすめします。
Tavily MCPとは
Tavilyは、LLM向けに最適化されたWeb検索APIを提供するサービスです。Tavily MCPを使うことで、Claude Codeから直接Web検索や情報抽出が可能になります。
主な機能
- tavily-search: Web検索(ニュース、一般検索、期間指定など)
- tavily-extract: 指定URLからコンテンツを抽出
- tavily-crawl: サイト内クロール(リンク追跡してコンテンツ収集)
- tavily-map: サイト構造のマッピング
1つのAPIキーで4ツールすべて利用可能
Tavilyの設定は1回行えば完了です。APIキーを設定するだけで、上記4つのツールすべてが自動的に利用可能になります。ツールごとに個別の設定は不要です。
4つのツールの使い分け
Tavily MCPには4つのツールがありますが、目的に応じて使い分けることで効率的に情報収集できます。
ツール選択の判断フロー
情報を探したい
│
├─ 何を調べるか不明 → tavily-search(一般検索)
│
├─ 特定のURLがある
│ │
│ ├─ 1ページの内容だけ → tavily-extract
│ │
│ ├─ サイト内の複数ページ → tavily-crawl
│ │
│ └─ サイト構造を把握したい → tavily-map
│
└─ キーワードで探す → tavily-search
各ツールの使いどころ
| ツール | 最適な用途 | 例 |
|---|---|---|
| tavily-search | キーワードで情報を探す | 「SystemVerilog 最新仕様」「Python 3.12 新機能」 |
| tavily-extract | 既知のURLから内容を取得 | ドキュメントページ、ブログ記事の要約 |
| tavily-crawl | サイト内の関連ページを網羅 | 公式ドキュメントの特定セクション全体 |
| tavily-map | サイト構造の把握 | 大規模ドキュメントサイトの全体像確認 |
ツールの指定方法
Claude はプロンプトの内容から適切なツールを自動選択しますが、明示的に指定することも可能です。
1. 明示的に指定する(確実)
ツール名を直接指定すると、確実にそのツールが使われます:
tavily-search で「RISC-V 最新仕様」を検索して
tavily-extract で https://docs.python.org/3/whatsnew/3.12.html の内容を取得して
tavily-crawl で https://docs.rust-lang.org/book/ をクロールして、所有権に関するページを収集して
tavily-map で https://pytorch.org/docs/stable/ のサイト構造を調べて
2. 意図を伝えて選ばせる(柔軟)
明示的に指定しなくても、意図を伝えれば Claude が適切なツールを選択します:
| プロンプト例 | 選択されるツール |
|---|---|
| 「〜について調べて」「〜を検索して」 | tavily-search |
| 「このURLの内容を読んで」「〜のページを要約して」 | tavily-extract |
| 「このサイトの〜に関するページを全部集めて」 | tavily-crawl |
| 「このサイトにどんなページがあるか調べて」 | tavily-map |
3. 使い分けのヒント
tavily-search を使うべき場面
- 何を調べればよいかわからないとき
- 最新情報やニュースを探すとき
- 複数のソースから情報を集めたいとき
tavily-extract を使うべき場面
- URLがすでにわかっているとき
- 特定ページの詳細な内容が必要なとき
- ページの生コンテンツを取得したいとき
tavily-crawl を使うべき場面
- 公式ドキュメントの特定トピックを網羅したいとき
- サイト内の関連ページをまとめて取得したいとき
- 深い調査が必要なとき
tavily-map を使うべき場面
- 大規模サイトの構造を把握したいとき
- どのページを読むべきか判断したいとき
- サイトのナビゲーション構造を理解したいとき
ツール組み合わせの例
複数のツールを組み合わせることで、より効果的な調査が可能です:
1. まず tavily-search で「PyTorch 分散学習 公式ドキュメント」を検索
2. 見つかったURLに対して tavily-map でサイト構造を確認
3. 必要なセクションを tavily-crawl で網羅的に取得
または:
1. tavily-map で https://docs.example.com/ の構造を把握
2. 必要なページを特定してから tavily-extract で個別に内容を取得
セットアップ手順
1. Tavily APIキーの取得
- tavily.com にアクセス
- アカウントを作成(GoogleアカウントやGitHubアカウントでサインアップ可能)
- ダッシュボードからAPIキーをコピー
無料枠について
- 月1,000 API credits が無料
- クレジットカード登録不要
2. Claude CodeにMCPサーバーを追加
ターミナルで以下のコマンドを実行します:
claude mcp add tavily -e TAVILY_API_KEY=tvly-xxxxxxxx -- npx -y tavily-mcp@latest
tvly-xxxxxxxx の部分を、取得した実際のAPIキーに置き換えてください。
claude mcp add は --scope local|user|project を指定できます。
project を選ぶとプロジェクト直下の .mcp.json に保存されます。
デフォルトはローカル(~/.claude.json のプロジェクト設定)に保存されます。
設定は ~/.claude.json に以下のように保存されます:
{
"projects": {
"/path/to/your/project": {
"mcpServers": {
"tavily": {
"type": "stdio",
"command": "npx",
"args": ["-y", "tavily-mcp@latest"],
"env": {
"TAVILY_API_KEY": "tvly-xxxxxxxx"
}
}
}
}
}
}
3. 動作確認
Claude Codeを再起動し、以下のように質問してみましょう:
最新のSystemVerilog関連のニュースを検索して
Tavilyが正しく設定されていれば、Web検索結果を元に回答が返ってきます。
使用例
技術調査
SUNDIALS 7.xの最新リリース情報を調べて
ニュース検索
過去7日間のAI半導体関連ニュースを検索して
特定サイトからの情報抽出
https://example.com のページ内容を抽出して要約して
Tavily を優先的に使用する設定
Claude Code には内蔵の WebSearch ツールがありますが、Tavily を優先的に使用したい場合は以下の方法があります。
方法 1: プロンプトで直接指示
検索時に明示的に Tavily を指定します:
Tavily を使って SystemVerilog の最新ニュースを検索して
または:
tavily-search で〜を調べて
方法 2: CLAUDE.md に設定(推奨)
プロジェクトの CLAUDE.md またはグローバルの ~/.claude/CLAUDE.md に以下を追加:
# Web検索の設定
- Web検索には内蔵 WebSearch ではなく、Tavily MCP (tavily-search, tavily-extract, tavily-crawl, tavily-map) を使用すること
グローバル設定の場合(すべてのプロジェクトに適用):
echo -e "\n# Web検索の設定\n- Web検索には Tavily MCP を優先して使用すること" >> ~/.claude/CLAUDE.md
方法 3: 内蔵 WebSearch を無効化(確実)
~/.claude/settings.json に permissions 設定を追加して、内蔵 WebSearch を完全に無効化できます:
{
"permissions": {
"deny": ["WebSearch"]
}
}
既存の設定ファイルがある場合は、permissions セクションを追加してください:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"deny": ["WebSearch"]
},
"その他の既存設定": "..."
}
設定ファイルの場所
-
ユーザー全体:
~/.claude/settings.json -
プロジェクト共有:
.claude/settings.json(Git にコミット可能) -
個人用プロジェクト:
.claude/settings.local.json(Git 除外推奨)
方法の比較
| 方法 | 説明 | 確実性 | 適用範囲 |
|---|---|---|---|
| プロンプトで指示 | 「Tavily で検索して」 | △ 毎回指示が必要 | その場限り |
| CLAUDE.md に記載 | 優先使用の指示を追加 | ○ 自動的に考慮される | プロジェクト/グローバル |
| WebSearch を deny | settings.json で無効化 | ◎ 完全にブロック | プロジェクト/グローバル |
推奨: 確実に Tavily のみを使用したい場合は 方法 3、柔軟性を残したい場合は 方法 2 をお勧めします。
各ツールの詳細パラメータ
tavily-search
| パラメータ | 説明 | デフォルト |
|---|---|---|
query |
検索クエリ(必須) | - |
max_results |
最大結果数 | 10 |
search_depth |
検索深度: basic, advanced, fast, ultra-fast | basic |
topic |
トピック: general, news | general |
include_raw_content |
生コンテンツを含める | false |
include_images |
画像を含める | false |
days |
日数(news トピック時) | 3 |
include_domains |
含めるドメイン | [] |
exclude_domains |
除外するドメイン | [] |
country |
国別ブースト(小文字英語) | "" |
tavily-extract
| パラメータ | 説明 | デフォルト |
|---|---|---|
urls |
URL のリスト(必須) | - |
extract_depth |
抽出深度: basic, advanced | basic |
include_images |
画像を含める | false |
tavily-crawl
| パラメータ | 説明 | デフォルト |
|---|---|---|
url |
開始 URL(必須) | - |
max_depth |
最大クロール深度 | 1 |
max_breadth |
各ページから辿るリンク数 | 20 |
limit |
処理する最大リンク数 | 50 |
instructions |
クロール指示(自然言語) | - |
tavily-map
| パラメータ | 説明 | デフォルト |
|---|---|---|
url |
開始 URL(必須) | - |
max_depth |
最大マッピング深度 | 1 |
max_breadth |
各ページから辿るリンク数 | 20 |
limit |
処理する最大リンク数 | 50 |
他の選択肢
Tavily以外にも、リサーチ機能を追加する方法があります:
mcp-omnisearch
複数の検索エンジンを統合したMCPサーバーです。
{
"mcpServers": {
"mcp-omnisearch": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-omnisearch"],
"env": {
"TAVILY_API_KEY": "",
"BRAVE_API_KEY": "",
"PERPLEXITY_API_KEY": ""
}
}
}
}
利用したいサービスのAPIキーだけ設定すればOKです。
これらはコミュニティ提供のMCPサーバーです。導入前にソース確認を推奨します。
Claude-Deep-Research
学術的なリサーチに特化したMCPサーバーで、DuckDuckGoとSemantic Scholarを統合しています。APA形式の引用も自動生成されます。
こちらもコミュニティ提供のサーバーです。利用は自己責任で。
セキュリティ上の懸念事項
Tavily MCPを導入する前に、以下のセキュリティリスクを理解しておく必要があります。
1. APIキーの管理
# この設定はローカルの設定ファイルに平文で保存される
claude mcp add tavily -e TAVILY_API_KEY=tvly-xxxxxxxx -- npx -y tavily-mcp@latest
リスク
- APIキーが
~/.claude/settings.json/.claude/settings.json/.claude/settings.local.jsonに平文で保存される - MCP を project scope で追加した場合、
.mcp.jsonに設定が書き込まれる - Gitリポジトリに誤ってコミットしてしまう可能性がある
- 他のユーザーやプロセスから読み取られる可能性がある
対策
-
.gitignoreに設定ファイルを追加する - 環境変数経由でAPIキーを渡す場合は、
.envファイルも.gitignoreに含める - 定期的にAPIキーをローテーションする
- Tavilyダッシュボードで使用量を監視する
2. 検索クエリの外部送信
Tavily MCPを使用すると、検索クエリがTavilyのサーバーに送信されます。
注意が必要なケース
- プロジェクト名や内部コードネームを含む検索
- 未公開の技術情報に関する検索
- 顧客情報や機密データを含むクエリ
例:避けるべき検索クエリ
# NG: 社内プロジェクト名が外部に送信される
「ProjectX の暗号化アルゴリズムの脆弱性について調べて」
# OK: 一般的な技術用語のみ
「AES-256 の既知の脆弱性について調べて」
対策
- 機密情報を含まない一般的な技術用語で検索する
- 社内プロジェクト固有の情報は検索クエリに含めない
- 企業のセキュリティポリシーを確認する
3. 取得コンテンツの信頼性
Web検索結果は必ずしも正確とは限りません。
リスク
- 古い情報や誤った情報が含まれる可能性
- SEO対策された低品質なコンテンツが上位に来る場合がある
- 悪意のあるコードサンプルが含まれる可能性
対策
- 重要な技術情報は公式ドキュメントで裏取りする
- コードサンプルは内容を理解してから使用する
- 複数のソースで情報を確認する
4. サードパーティMCPサーバーのリスク
Tavily MCPは npx 経由でnpmパッケージとして実行されます。
考慮すべき点
- npmパッケージはサプライチェーン攻撃のリスクがある
- パッケージの更新により意図しない動作変更が起こる可能性
-
@latest指定は常に最新版を取得するため、破壊的変更の影響を受ける
対策
# バージョンを固定する(推奨)
claude mcp add --transport stdio tavily-mcp \
--env TAVILY_API_KEY=tvly-xxxxxxxx \
-- npx -y mcp-remote@<version> "https://mcp.tavily.com/mcp?api_key=${TAVILY_API_KEY}"
- 信頼できるパッケージのみを使用する(GitHubスター数、メンテナンス状況を確認)
- バージョンを固定して、意図しない更新を防ぐ
- 可能であればソースコードをレビューする
5. 企業環境での利用
企業でClaude Codeを使用する場合、追加の考慮が必要です。
| 確認項目 | 内容 |
|---|---|
| 情報セキュリティポリシー | 外部APIへのデータ送信が許可されているか |
| データ分類 | 検索に使用する情報の機密レベル |
| 監査要件 | API使用ログの保持が必要か |
| ネットワーク制限 | 外部APIへのアクセスが許可されているか |
対策
- IT部門やセキュリティチームに事前確認する
- 個人の開発マシンでのみ使用し、CI/CD環境では無効化する
- 必要に応じてプロキシ経由でアクセスする
セキュリティチェックリスト
導入前に以下を確認してください:
-
APIキーが
.gitignore対象のファイルに保存されている - 機密情報を含む検索クエリを送信しないルールを理解している
- 企業のセキュリティポリシーを確認した(企業利用の場合)
- パッケージのバージョンを固定した
- Tavilyダッシュボードで使用量モニタリングを設定した
補足:Claude Agent SDK
Anthropicは Claude Agent SDK を公式に提供しており、
コーディング用途だけでなく、汎用的なエージェント構築用途を想定しています。
- ビジネス支援エージェント
- リサーチ支援エージェント
- ワークフロー自動化エージェント
つまり、Claude Codeの基盤(エージェントハーネス)は汎用的なエージェント構築に適しており、リサーチ用途も公式に想定されています。
まとめ
| 項目 | 内容 |
|---|---|
| ビルトイン機能 | WebSearch あり(ただし利用不可の場合あり) |
| 推奨方法 | Tavily MCP |
| 無料枠 | 月1,000 API credits |
| 設定の手軽さ | コマンド1行 |
| 利用可能ツール | search, extract, crawl, map |
Claude Codeでの開発作業中に技術情報を調べたい場面は多いと思います。Tavily MCPを追加しておけば、ターミナルを離れることなく安定したWeb検索ができるようになり、開発効率が向上します。
内蔵の WebSearch が利用不可になった場合でも、Tavily があれば安心です。月1,000 API credits の無料枠があれば、日常的な技術調査には十分かもしれません。ぜひ試してみてください。