SerpApi MCP
公式SerpApi MCP サーバー:Googleおよびその他の検索エンジンの結果を取得するためのサーバー
SerpApi MCPで何ができますか?
- 複数エンジンでの検索 — 1回の
search呼び出しで、エンジンと場所を選択して、Google、Bing、YouTube、eBayなどの複数の検索エンジンを横断して検索できます。 - Markdownまたはコンパクトな出力 — 大規模またはネストされたレスポンスでのトークン使用量を抑えるため、結果をMarkdownまたはコンパクトなJSONで取得できます。
- ページの抽出 —
extractを使って、単一ページの内容を読み取ったり、サイトのURLを一覧化したり、ページ数の上限を指定して複数のページをクロールしたりできます。 - インタラクティブな結果表示 —
search_tableまたはsearch_dashboardを選ぶと、対応するホストで結果を並べ替え可能なテーブルまたはダッシュボードとして表示できます。
ドキュメント
SerpApi MCP Server
SerpApi と連携し、包括的な検索エンジンの検索結果とデータ抽出を提供する Model Context Protocol (MCP) サーバーの実装です。
機能
- 複数エンジン検索: Google、Bing、Yahoo、DuckDuckGo、YouTube、eBay、その他多数
- エンジンリソース: MCP リソースからエンジンごとのパラメータスキーマを利用可能(Search Tool を参照)
- リアルタイムの天気情報: 検索クエリを使った、場所に基づく天気情報と予報
- 株式市場データ: 検索連携による企業の財務情報と市場データ
- 動的な結果処理: さまざまな結果タイプを自動検出して整形
- 柔軟な応答モード: 完全またはコンパクトな JSON 応答
- JSON 応答(デフォルト): 完全モードまたはコンパクトモードの構造化 JSON 出力
- Markdown 応答: トークン使用量を平均 50% 削減。複雑なネストされた JSON を返す API では 90% 以上削減できます。
- インタラクティブ UI(MCP Apps): オプトインで利用できる
search_tableとsearch_dashboardのツールは、対応ホストで結果をインタラクティブ UI として表示します - Claude Desktop Extension: MCP Bundle(
.mcpb)からワンクリックでローカルにインストールできます。詳細は以下を参照してください
クイックスタート
SerpApi MCP Server は、ホスト型サービスとして 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 Extension(MCP bundle)
ローカルにワンクリックでインストールするには、最新リリースから .mcpb bundle をダウンロードし、Claude Desktop で開きます(または Settings → Extensions にドロップします)。Claude Desktop はインストール時に SerpApi API キーを求め、機密設定として保存し、stdio 経由でサーバーをローカル実行します。インストール時に uv を使って Python と依存関係を用意します。同じ bundle は macOS、Windows、Linux で使用できます。
同じ 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 と App ツールにはキーが必要で、キーがない場合はエラーを返します。
Search tool
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 の引用検索など、既知のデフォルト値や代替手段が考慮されます。
回答によって別の必須項目が判明した場合、ツールは残りのフィールドを一覧表示します。エージェントは新たな呼び出しでそれらを指定できます。フォームでは文字列、数値、ブール値、単一選択フィールドがサポートされます。サポートされていない複雑なフィールドには、不足パラメータのエラーが返されます。不明なエンジンは SerpApi にそのまま渡されます。
Extract tool
extract ツールはウェブページを読み取り、その内容を構造化 JSON または Markdown として返します。単一ページの抽出、ウェブサイトの URL の検出、複数ページのクロールができます。利用可能なすべてのパラメータは Extract API リファレンスまたは serpapi://engines/extract リソースで確認できます。
指定できるパラメータの例:
params.url(必須): ページまたはウェブサイトの URLparams.mode: 抽出モード。"scrape"(デフォルト)は 1 ページを読み取り、"map"は URL を検出し、"crawl"は複数ページを抽出しますparams.include_markdown: ページの内容を Markdown として含めます。スクレイプとクロールではデフォルトでtrueが設定されます。無効にするにはfalseを指定しますparams.output: 応答形式。完全モードではデフォルトで"json"、コンパクトモードでは"md"が設定されます。形式を上書きするには明示的に指定します。params.max_pages: クロールする最大ページ数(開始ページを含む。デフォルト: 10、最大: 100)params.json_restrictor: 返すフィールドを選択します(例:"markdown,error")mode: 応答モード。"complete"(デフォルト)は完全な応答を返します。"compact"はデフォルトでネイティブ Markdown を返します。params.output="json"を明示的に指定すると、単一ページのコンパクトな抽出では、存在する場合にトップレベルのmarkdownフィールドが保持され、API エラーも保持されます。別のエンジンにリダイレクトされた結果など、Markdown を含まない応答では、メタデータを削除したうえでデータが保持されます。JSON を使用する場合、明示的に指定したparams.json_restrictorの値とparams.include_markdown=falseが優先されます。マップとクロールでは、コンパクト JSON からメタデータが削除されます。Markdown 出力は変更せずに返されます。
例:
{"name": "extract", "arguments": {"params": {"url": "https://example.com"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com"}, "mode": "compact"}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "output": "md"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "mode": "map"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "mode": "crawl", "max_pages": 2}}}
単一ページの内容をネイティブ Markdown として取得するには、mode="compact" を使用します。params.output="json" を追加すると、markdown フィールドを含む JSON が返されます。完全な JSON ではこのフィールドがデフォルトで含まれます。クロールの JSON では、各 pages エントリに含まれます。params.output="json" と params.include_markdown=false を設定すると、Markdown を除いた残りの構造化フィールドが保持されます。
キャッシュされていないリクエストでクロールを行う場合、抽出に成功したページごとに検索クレジットを 1 つ消費します。抽出するページ数を制限するには params.max_pages を使用してください。
インタラクティブ UI(MCP apps)
search ツールはデフォルトで JSON を返します。MCP Apps 拡張機能(SEP-1865)に対応するホストでは、オプトインで利用できる 2 つのツールが会話内に結果をインタラクティブ UI として直接表示します。そのため、大量の SERP JSON がモデルのコンテキストウィンドウに入ることはありません。
search_table: オーガニック検索結果を、並べ替えと検索が可能なテーブルとして表示します。search_dashboard: 概要指標、ソース別の内訳グラフ、クリックして詳細パネルを展開できる結果テーブルを表示します。
どちらも search と同じ params を受け取ります。MCP Apps に対応していないホストは、これらのツールを無視します。
トラブルシューティング
- 「Missing API key」: URL パス
/{YOUR_KEY}/mcpまたはヘッダーBearer YOUR_KEYにキーを含めてください - 「Invalid key」: serpapi.com/dashboard で確認してください
- 「Rate limit exceeded」: しばらく待つか、SerpApi のプランをアップグレードしてください
- 「No results」: 別のクエリまたはエンジンを試してください
プライバシーポリシー
- 送信される情報: MCP ホストがツール呼び出しに渡すパラメータのみです。サーバーがホスト上の会話の残りの部分、ファイル、メモリ、履歴を見ることはありません。
- 転送される情報: 各検索は API キーとともに
serpapi.comに送信され、結果は変更されずに返されます。SerpApi による検索とアカウントの取り扱いについては、SerpApi プライバシーポリシーを参照してください。 - 保持される情報:
mcp.serpapi.comはリクエストのメトリクス(メソッド、ステータスコード、所要時間)を記録しますが、クエリや結果は保存しません。URL パス内のキーはリクエストログに記録される可能性があるため、ヘッダーの使用を推奨します。 - ローカル bundle: Claude Desktop extension はお使いのマシン上で実行され、キーを Claude Desktop の設定に保存し、
serpapi.comを直接呼び出します。mcp.serpapi.comを経由するデータはありません。 - お問い合わせ: privacy@serpapi.com、またはissueを作成してください。
貢献
開発環境のセットアップ、スキーマ更新コマンド、テスト、Docker と MCP Bundle のビルド、リリースについては CONTRIBUTING.md を参照してください。
ライセンス
MIT License。詳細は LICENSE ファイルを参照してください。