SerpApi MCP

公式

SerpApi MCP サーバー:Googleおよびその他の検索エンジンの結果を取得するためのサーバー

SerpApi MCPで何ができますか?

  • マルチエンジン検索 — searchツールでエンジン固有のパラメータを指定し、Google、Bing、YouTube、eBay、その他のエンジンから結果を取得します。
  • 構造化された結果形式 — JSONまたはMarkdown出力をリクエストでき、コンパクトモードまたは完全モードで応答の詳細度とトークン使用量を制御できます。
  • インタラクティブな結果表示 — サポートホストでは、search_tableで並べ替え可能なテーブル、search_dashboardでチャートや展開可能な詳細を利用できます。
  • リアルタイムデータ参照 — 「ロンドンの天気」や「AAPL株」のような自然言語でクエリし、天気予報、株価、ニュースを取得できます。
  • ガイド付きパラメータ入力 — 検索実行前に、不足している必須フィールド(例:フライト日、ホテルのチェックイン/チェックアウト)のフォームを受け取ります。

ドキュメント

SerpApi MCP サーバー

SerpApi と統合し、包括的な検索エンジン結果とデータ抽出を提供する Model Context Protocol (MCP) サーバー実装です。

Python 3.13+ MIT License Install in VS Code Install in Cursor

特徴

  • マルチエンジン検索: Google、Bing、Yahoo、DuckDuckGo、YouTube、eBay、およびその他
  • エンジンリソース: MCP リソースを介して利用可能なエンジン別パラメータスキーマ(検索ツールを参照)
  • リアルタイム気象データ: 検索クエリによる位置情報ベースの天気と予報
  • 株式市場データ: 検索統合による企業財務および市場データ
  • 動的結果処理: さまざまな結果タイプを自動的に検出してフォーマット
  • 柔軟なレスポンスモード: 完全またはコンパクトな JSON レスポンス
  • JSON レスポンス(デフォルト): 完全モードまたはコンパクトモードの構造化 JSON 出力
  • Markdown レスポンス: 平均でトークン使用量を 50%、複雑なネスト JSON を持つ API では 90% 以上削減
  • インタラクティブ UI(MCP アプリ): オプトインの search_table および search_dashboard ツール。対応ホストで結果をインタラクティブ UI としてレンダリング
  • Claude Desktop 拡張機能: MCP バンドル(.mcpb)からのワンクリックローカルインストール。下記参照

クイックスタート

SerpApi MCP サーバーは、mcp.serpapi.com でホスト型サービスとして利用できます。接続するには API キーを提供する必要があります。API キーは SerpApi ダッシュボード で確認できます。

Claude Desktop をホスト型サーバーを使用するように設定できます:

{
  "mcpServers": {
    "serpapi": {
      "type": "http",
      "url": "https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp"
    }
  }
}

ホスト型サーバーを以下の MCP クライアントに追加することもできます:

OpenClaw

openclaw mcp add serpapi --url https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp --transport streamable-http

Claude Code

claude mcp add --transport http serpapi https://mcp.serpapi.com/mcp --header "Authorization: Bearer YOUR_SERPAPI_API_KEY"

Hermes

hermes mcp add serpapi --url https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp

Codex(シェルの SERPAPI_API_KEY からキーを読み取ります)

codex mcp add serpapi --url https://mcp.serpapi.com/mcp --bearer-token-env-var SERPAPI_API_KEY

セルフホスティング

git clone https://github.com/serpapi/serpapi-mcp.git
cd serpapi-mcp
uv sync && uv run src/server.py

Claude Desktop を設定:

{
  "mcpServers": {
    "serpapi": {
      "type": "http",
      "url": "http://localhost:8000/YOUR_SERPAPI_API_KEY/mcp"
    }
  }
}

API キーを取得: serpapi.com/manage-api-key

Claude Desktop 拡張機能(MCP バンドル)

ローカルでのワンクリックインストールには、最新リリース から .mcpb バンドルをダウンロードし(または下記のようにビルドし)、Claude Desktop で開きます(または 設定 → 拡張機能 にドロップします)。Claude Desktop はインストール中に SerpApi API キーを要求し、機密設定として保存し、サーバーを stdio 経由でローカルに実行します。バンドルは MCPB uv ランタイムを使用します: ソース、pyproject.toml および uv.lock のみを同梱し、Claude Desktop はインストール時に uv で Python とロックされた依存関係をプロビジョニングするため、ベンダリングはなく、1 つのバンドルが macOS、Windows、Linux で動作します。

uv run mcpb/build.py   # needs Node.js for the MCPB CLI; writes dist/serpapi-mcp-<version>.mcpb

バンドル関連のすべては mcpb/ にあり、プロジェクトルートには .mcpbignore があります。ビルドは SerpApi Playground からエンジンスキーマを再生成し(--no-rebuild-engines は作業ツリーから engines/ をバンドル)、mcpb/manifest.json を検証し、.mcpbignore を除いた git 追跡ファイルをマニフェストとともにバンドルルートにパックし、一時ディレクトリにインストールして stdio 経由で起動して動作確認を行います(--no-smoke は最後のステップをスキップ)。バンドルはリリース時のみビルドされます: v<version> タグをプッシュするとリリースワークフローが実行され、テストスイートを実行してからホスト型サーバーをデプロイし、MCP レジストリエントリを公開し、バンドルをビルドして GitHub リリースに添付します。プルリクエストは tests/test_mcpb.py でマニフェストと stdio エントリポイントテストを実行しますが、バンドルはパックしません。

同じ stdio エントリポイントは、サーバーをサブプロセスとして起動する任意のローカル MCP ホストで動作します:

{
  "mcpServers": {
    "serpapi": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/serpapi-mcp", "--frozen", "--no-dev", "src/stdio.py"],
      "env": { "SERPAPI_API_KEY": "YOUR_SERPAPI_API_KEY" }
    }
  }
}

認証

2 つの方法がサポートされています:

  • ヘッダーベース: Authorization: Bearer YOUR_API_KEY(推奨: キーが URL とログに残りません)
  • パスベース: /YOUR_API_KEY/mcp(ヘッダーを設定できないクライアント用)

例:

# Header-based
curl "https://mcp.serpapi.com/mcp" -H "Authorization: Bearer your_key" -d '...'

# Path-based
curl "https://mcp.serpapi.com/your_key/mcp" -d '...'

接続、ツール一覧表示、リソース読み取りにはキーは不要です。search とアプリツールにはキーが必要で、ない場合はエラーを返します。

検索ツール

MCP サーバーには、すべての SerpApi エンジンと結果タイプをサポートする 1 つのメイン検索ツールがあります。利用可能なすべてのパラメータは SerpApi API リファレンス にあります。 エンジンパラメータスキーマは MCP リソースとしても公開されています: serpapi://engines(インデックス)および serpapi://engines/<engine>。 引数補完 をサポートするクライアントは、serpapi://engines/{engine_name} のエンジン名の提案を要求できます。たとえば、プレフィックス google_f は一致するエンジン識別子を提案します。これはリソース URI パラメータを補完するものであり、任意の検索クエリを補完するものではありません。

提供できるパラメータは各 API エンジンに固有です。サンプルパラメータを以下に示します:

  • params.q(必須): 検索クエリ
  • params.engine: 検索エンジン(デフォルト: "google_light")
  • params.location: 地理的フィルター
  • params.output: レスポンス形式。JSON(デフォルト)の場合は省略、Markdown の場合は "md" に設定
  • mode: レスポンスモード。"compact" は JSON からメタデータを削除し、Markdown はそのまま返されます
  • ...その他のパラメータは SerpApi API リファレンス を参照

例:

{"name": "search", "arguments": {"params": {"q": "coffee shops", "location": "Austin, TX"}}}
{"name": "search", "arguments": {"params": {"q": "weather in London"}}}
{"name": "search", "arguments": {"params": {"q": "AAPL stock"}}}
{"name": "search", "arguments": {"params": {"q": "news"}, "mode": "compact"}}
{"name": "search", "arguments": {"params": {"q": "detailed search"}, "mode": "complete"}}
{"name": "search", "arguments": {"params": {"q": "news", "output": "md"}}}
{"name": "search", "arguments": {"params": {"engine": "amazon", "k": "mechanical keyboards", "amazon_domain": "amazon.com", "output": "md"}}}
{"name": "search", "arguments": {"params": {"engine": "google_scholar", "q": "retrieval augmented generation"}}}
{"name": "search", "arguments": {"params": {"engine": "youtube", "search_query": "how to make espresso"}}}
{"name": "search", "arguments": {"params": {"engine": "apple_app_store", "term": "habit tracker"}}}
{"name": "search", "arguments": {"params": {"engine": "ebay", "_nkw": "vintage mechanical keyboard"}}}

サポートされているエンジン: Google、Bing、Yahoo、DuckDuckGo、YouTube、eBay、およびその他(serpapi://engines を参照)。

結果タイプ: アンサーボックス、オーガニック結果、ニュース、画像、ショッピング - 自動検出されフォーマットされます。

検索レスポンスは既存の MCP structuredContent.result 文字列を保持し、テキストコンテンツに同じ文字列を含めます。JSON 出力の場合、result にはシリアライズされた JSON が含まれます。既存のクライアントは JSON.parse(response.structuredContent.result) で引き続き解析できます。Markdown 出力の場合、変更されていない Markdown が含まれます。エラーとキャンセルは同じラッパーを使用します。検索実行の失敗は isError: true を設定します。FastMCP の高レベル call_tool() を使用するクライアントは ToolError を処理するか、call_tool_mcp() を使用して結果フラグを検査する必要があります。MCP ツール結果 を参照してください。

search はエンジンカタログとエンジン固有のルールを使用して、不足しているパラメータを特定します。MCP 2026-07-28 をサポートするクライアントは、検索が実行される前にフォームを受け取ります。受け入れられた回答は検証されます。辞退またはキャンセルでは検索は実行されません。レガシークライアントおよびフォーム引き出しのないクライアントは、不足しているパラメータをリストしたエラーを受け取り、エージェントが会話で質問できるようにします。MCP 入力リクエスト を参照してください。

  • Google Flights: 出発地と到着地の識別子、出発日、往復の場合は復路日。日付と空港識別子がチェックされます。トークンベースの検索、複数都市の旅程、および selected_flights_json は既存の動作を維持します。
  • Google Hotels: 目的地またはホテルのクエリ、チェックイン日、チェックアウト日。チェックアウトはチェックインの後である必要があります。ゲスト数やその他のオプションフィルターは、呼び出し元の値または API のデフォルトを保持します。
  • Google Maps Directions: 不足している出発地と目的地の住所。すでに提供されている座標またはプレイスデータ ID は、対応するエンドポイントを満たします。
  • その他のカタログエンジンは、YouTube の search_query、Yelp の find_loc、Amazon の k など、必須フィールドを使用します。エンジンルールは、Amazon カテゴリノード、eBay カテゴリ、Google Scholar 引用検索など、既知のデフォルトと代替を考慮します。

フォームは各リクエストの元の引数から導出されます。requestState やプロセスローカルの継続ストレージを使用しないため、共有状態保護キーなしで別のレプリカで再試行を実行できます。認証はすべての HTTP リクエストに適用され、要求されたフィールドの回答のみが使用されます。回答が別の要件を導入した場合、ツールは残りのフィールドをリストして、エージェントが新しい呼び出しで提供できるようにします。

ガイド付き検索を拡張するには、エンジンの engines/<engine>.json ファイルに必須フィールド、説明、タイプ、オプションを追加します。要件が他のパラメータ、デフォルト、または代替に依存する場合は、src/engine_input_rules.py に EngineInputRules エントリを追加します。src/search_input.py の共有 MCP ハンドラーはエンジン固有の分岐を必要としません。フォームは文字列、数値、ブール値、および単一選択フィールドをサポートします。サポートされていない複雑なフィールドは、不足パラメータエラーを受け取ります。不明なエンジンは SerpApi にパススルーされます。

インタラクティブ UI(MCP アプリ)

search ツールはデフォルトで JSON を返します。MCP Apps 拡張機能(SEP-1865)をサポートするホストの場合、2 つのオプトインツールが結果を会話内で直接インタラクティブ UI としてレンダリングするため、大量の SERP JSON がモデルのコンテキストウィンドウに入ることはありません:

  • search_table: オーガニック結果を並べ替え可能で検索可能なテーブルとして表示
  • search_dashboard: サマリーメトリクス、ソース内訳チャート、クリックで展開する詳細パネル付きの結果テーブル

両方とも search と同じ params を受け入れます。MCP Apps をサポートしないホストは、これらのツールを単に無視します。

MCP ホストなしでローカルでプレビュー:

uv run fastmcp dev apps src/server.py

開発

# Local development
uv sync && uv run src/server.py

# Docker
docker build -t serpapi-mcp . && docker run -p 8000:8000 serpapi-mcp

# Build the Claude Desktop extension (MCP Bundle); rebuilds engines, needs Node.js for the MCPB CLI
uv run mcpb/build.py

# Release: update pyproject.toml, server.json, mcpb/manifest.json and uv.lock together.
uv run --no-sync scripts/bump_version.py 2.0.0
# Review and commit the changes before tagging the release.
# Nothing ships on a plain push to main. The tag runs the release workflow, which runs the test
# suite and then deploys the hosted server, publishes server.json to the MCP Registry, and builds
# the MCP Bundle and attaches it to the GitHub release.
git tag v2.0.0 && git push origin v2.0.0

# Regenerate engine resources (Playground scrape)
python build-engines.py

# Testing with MCP Inspector
npx @modelcontextprotocol/inspector
# Configure: URL mcp.serpapi.com/YOUR_KEY/mcp, Transport "Streamable HTTP transport"

トラブルシューティング

  • "API キーがありません": URL パス /{YOUR_KEY}/mcp またはヘッダー Bearer YOUR_KEY にキーを含めてください
  • "無効なキー": serpapi.com/dashboard で確認してください
  • "レート制限を超えました": 待機するか、SerpApi プランをアップグレードしてください
  • "結果がありません": 別のクエリまたはエンジンを試してください

プライバシーポリシー

  • 送信: MCP ホストがツール呼び出しに渡すパラメータのみ。サーバーは会話の残り、ホスト上のファイル、メモリ、履歴を一切見ることはありません。
  • 転送: 各検索は API キーとともに serpapi.com に送信され、結果は変更されずに返されます。SerpApi が検索とアカウントをどのように処理するかについては、SerpApi プライバシーポリシー を参照してください。
  • 保持: mcp.serpapi.com はリクエストメトリクス(メソッド、ステータスコード、期間)を記録し、クエリや結果は保存しません。URL パス内のキーはリクエストログに表示される可能性があるため、ヘッダーを優先してください。
  • ローカルバンドル: Claude Desktop 拡張機能はお使いのマシンで実行され、キーを Claude Desktop の設定に保持し、serpapi.com を直接呼び出します。mcp.serpapi.com を通過するものはありません。
  • 連絡先: privacy@serpapi.com、または issue を開いてください。

貢献

  1. リポジトリをフォーク
  2. 機能ブランチを作成: git checkout -b feature/amazing-feature
  3. 依存関係をインストール: uv install
  4. 変更を加える
  5. 変更をコミット: git commit -m 'Add amazing feature'
  6. ブランチにプッシュ: git push origin feature/amazing-feature
  7. プルリクエストを開く

ライセンス

MIT ライセンス - 詳細は LICENSE ファイルを参照してください。