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) サーバー実装です。
特徴
- マルチエンジン検索: 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 を開いてください。
貢献
- リポジトリをフォーク
- 機能ブランチを作成:
git checkout -b feature/amazing-feature - 依存関係をインストール:
uv install - 変更を加える
- 変更をコミット:
git commit -m 'Add amazing feature' - ブランチにプッシュ:
git push origin feature/amazing-feature - プルリクエストを開く
ライセンス
MIT ライセンス - 詳細は LICENSE ファイルを参照してください。