Serper Search MCP について
Serper Search MCPは、AIクライアント向けの検索MCPサーバーで、Google検索に加えて専門検索、ページ取得、調査機能を提供します。複数プロバイダーの自動切り替えと、コンテキスト量に応じた結果の詳しさ調整に対応しています。
主な機能
- 01ウェブ、画像、動画、ニュース検索
- 02ショッピング、場所、論文、特許検索
- 03ページ取得と並列一括検索
- 04複数プロバイダーの自動切り替え
- 05詳細調査とRAGコンテキスト
- 06結果の詳しさを調整
活用シーン
- 01地域の店舗と営業時間の確認
- 02学術論文や特許情報の収集
- 03検索で見つけたページ全文の取得
- 04引用付きの段階的な調査レポート作成
MCP 対応
互換クライアント向けに、検索、ページ取得、調査の14種類のツールを公開します。stdioとHTTPのトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y serper-search-mcpSERPER_API_KEYシークレットYour Serper API key — get 2,500 free credits at https://serper.devGEMINI_API_KEYシークレットGoogle AI Studio key for deep_research (free tier) — get one at https://ai.google.devOPENROUTER_API_KEYシークレットOpenRouter LLM key for deep_research — takes priority over Gemini; free models at https://openrouter.aiTAVILY_API_KEYシークレットTavily fallback search provider — 1,000 free searches/month at https://tavily.comBRAVE_API_KEYシークレットBrave Search fallback provider — 2,000 free queries/month at https://brave.com/search/apiEXA_API_KEYシークレットExa neural semantic search fallback — get a key at https://exa.aiFIRECRAWL_API_KEYシークレットFirecrawl for JS-rendered page scraping (upgrades the scrape tool) — https://firecrawl.devローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🔍 Serper Search MCP Server v4.0
AI エージェント向け初のユニバーサル検索ゲートウェイ — Google(Serper)、Tavily、Brave、Exa、Firecrawl に対応。自動フェイルオーバー、14 個のツール、トークンを効率的に使う出力を備えています。
このサーバーでできること
この MCP サーバーは Serper API(Google 検索結果)をラップし、MCP 対応の AI クライアント(Claude、Cursor、Windsurf、KiloCode、n8n など)がリアルタイムで呼び出せる 14 個のツールを提供します。ウェブ、画像、動画、ニュース、ショッピング、場所、学術論文、特許、オートコンプリート、ページ全体のスクレイピング、複数検索に対応しています。
| ツール | 内容 |
|---|---|
search ⭐ | 統合検索 {type, provider, verbosity} — スキーマ 1 個(約 700 トークン。全スキーマでは約 7,000 トークン) |
search_web | オーガニック検索結果 + ナレッジグラフ + 回答ボックス + 「他の人はこちらも質問」 + 関連検索 |
search_images | 画像 URL、サムネイル、サイズ、ソースページ + gallery レイアウト + size/orientation/color/site |
search_videos | タイトル、チャンネル、再生時間、リンク |
search_news | 見出し、情報源、日付 — 新しさで絞り込み |
search_shopping | 商品、価格、評価、配送情報(常にリッチな出力) |
search_places | 住所、電話番号、7 日間すべての営業時間、GPS、道順を含む地域の事業者とスポット(常にリッチな出力) |
search_scholar 🆕 | 著者、ジャーナル、発行年、引用数を含む学術論文 |
search_patents 🆕 | 公開番号、権利者、発明者、日付を含む特許 |
autocomplete 🆕 | 検索語の候補 — 低コストで、LLM 不要 |
scrape 🆕 | ページ全体の内容を Markdown で取得 — 検索で見つけた記事を読み込めます |
search_many 🆕 | ウェブ検索を 1~10 件並列実行し、クエリをまたいで自動的に重複を除去 |
deep_research | 複数ステップの調査:サブクエリを自動生成 → 並列検索 → LLM が引用付きレポートを合成 |
search_rag_context | 埋め込みパイプラインやベクトル DB 向けの、メタデータ付きで整理されたチャンクテキスト — LLM 不要 |
出力の詳細度(トークン効率を重視。デフォルトは自動)
| モード | 対象 | 内容 | トークン数 |
|---|---|---|---|
auto(デフォルト) | サーバーが選択 | 開発→コンパクト、チャット→標準、学術・調査→フル、場所・ショッピング・画像→常にリッチ | 変動 |
compact | 開発・コーディング | タイトル + URL + 1 行の抜粋。KG/PAA/関連検索なし | 約 800 |
standard | 通常のチャット | KG + 回答ボックス + オーガニック検索結果 10 件 | 約 4,000 |
full | 調査担当者 | すべて + 引用 | 約 5,000 |
クレジットのルール:
compactはnum=5を取得します(10 件取得して 3 件表示することはありません)。検索 1 回 = 1 クレジット、キャッシュヒット = 0、スクレイピング ≈ 2。deep_research:基本 3 クレジット / 標準 5 クレジット / 詳細 8 クレジット。
プロバイダー(ユニバーサルゲートウェイ — 自動フェイルオーバー)
| プロバイダー | 1,000 件あたりの料金 | 使用する場面 |
|---|---|---|
| Serper(デフォルト) | $3-5、月 2,500 件無料 | 最安の Google 検索 — 最初に使うプロバイダーとして維持 |
| Tavily フォールバック | $8-16 | AI による再ランキング、金融・ニュース関連のトピック |
| Brave フォールバック | $5 | 独立したインデックス、プライバシー重視、669ms |
| Exa フォールバック | $4-7 | キーワード検索で見つからない場合のニューラルセマンティック検索 |
| Firecrawl フォールバック | 実質約 $3-4 | JavaScript レンダリング対応のスクレイピングと検索の強化 |
SEARCH_PROVIDER_ORDER=serper,tavily,brave,exa # failover chain
SEARCH_FALLBACK=true # on 402/429/5xx/empty
CLI(開発向け強力ツール — MCP スキーマより 4~32 倍低コスト)
npx serper-search-mcp search "react server components" --compact --limit 5
npx serper-search-mcp scrape https://example.com --max-chars 8000
npx serper-search-mcp research "RAG limits" --depth basic
npx serper-search-mcp rag "transformer" --format json
npx serper-search-mcp providers --status
無料で始められます: Serper では月 2,500 件のクエリを無料で利用できます。クレジットカードは不要です。
クイックスタート
🔑 プロバイダーキーとユニバーサルゲートウェイの設定
このサーバーはユニバーサル検索ゲートウェイとして機能します。必要なのは SERPER_API_KEY のみです。ほかの4つの検索プロバイダーやLLMキーを任意に組み合わせて追加すると、複数プロバイダーへの自動フェイルオーバー、セマンティック検索、スクレイピング機能の強化が有効になります。
| 変数 | プロバイダー/用途 | デフォルト/優先度 |
|---|---|---|
SERPER_API_KEY | Serper(Google 検索のベースライン) | 必須(serper.dev) |
TAVILY_API_KEY | Tavily(AI による再ランキングを行うフォールバック) | 任意(tavily.com) |
BRAVE_API_KEY | Brave(独立したウェブインデックスへのフォールバック) | 任意(brave.com/search/api) |
EXA_API_KEY | Exa(ニューラルセマンティック検索へのフォールバック) | 任意(exa.ai) |
FIRECRAWL_API_KEY | Firecrawl(JS レンダリングによるスクレイピングと検索機能の強化) | 任意(firecrawl.dev) |
OPENROUTER_API_KEY | deep_research 用 LLM | 任意(Gemini より優先) |
GEMINI_API_KEY | deep_research 用 LLM | 任意(OpenRouter がない場合に使用) |
フェイルオーバーの制御:
SEARCH_PROVIDER_ORDER=serper,tavily,brave,exa # custom failover priority chain
SEARCH_FALLBACK=true # auto-failover on 402/429/5xx/empty (default: true)
オプション 1 — npx(MCP クライアント設定)
この内容を MCP クライアントの設定ファイル(Claude Desktop、Cursor、Windsurf、KiloCode)に追加してください。
🌟 ユニバーサルゲートウェイの完全な設定(5つのプロバイダーすべてとフェイルオーバー):
{
"mcpServers": {
"serper-search": {
"command": "npx",
"args": ["-y", "serper-search-mcp"],
"env": {
"SERPER_API_KEY": "${SERPER_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}",
"OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}",
"SEARCH_PROVIDER_ORDER": "serper,tavily,brave,exa",
"SEARCH_FALLBACK": "true"
}
}
}
}
(使用しないプロバイダーのキーは省略できます。サーバーは設定済みのプロバイダーを自動的に検出し、未設定のものをスキップします)。
最小限の設定(Serper のみ):
{
"mcpServers": {
"serper-search": {
"command": "npx",
"args": ["-y", "serper-search-mcp"],
"env": {
"SERPER_API_KEY": "your_serper_key_here"
}
}
}
}
オプション 2 — Docker
docker run -i --rm \
-e SERPER_API_KEY \
-e TAVILY_API_KEY \
-e BRAVE_API_KEY \
-e EXA_API_KEY \
-e FIRECRAWL_API_KEY \
-e OPENROUTER_API_KEY \
smjahid/server-serper-search:4
HTTP モード(リモートサーバーまたはクラウド)の場合:
docker run --rm -p 8080:8080 \
-e SERPER_API_KEY \
-e SERPER_MCP_TRANSPORT=http \
-e SERPER_MCP_HOST=0.0.0.0 \
-e SERPER_MCP_AUTH_TOKEN="your_secure_bearer_token" \
smjahid/server-serper-search:4
オプション 3 — シェルと CLI(PowerShell/Bash/CMD)
PowerShell(Windows):
$env:SERPER_API_KEY = "your_key"
$env:TAVILY_API_KEY = "your_key" # optional
$env:OPENROUTER_API_KEY = "your_key" # optional
node index.js
Bash/macOS/Linux:
export SERPER_API_KEY="your_key"
export TAVILY_API_KEY="your_key" # optional
export OPENROUTER_API_KEY="your_key" # optional
node index.js
Windows コマンドプロンプト:
set SERPER_API_KEY=your_key
node index.js
💡 AI を活用したリサーチは無料です。
deep_researchはデフォルトで Gemini の無料枠を使用します。利用するには、上記のGEMINI_API_KEYを設定してください。
設定ファイルの場所
| クライアント | 設定パス |
|---|---|
| Claude Desktop(Mac) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop(Win) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| KiloCode | ~/.config/kilo/kilo.json(グローバル)または <project>/kilo.json(プロジェクト) |
| n8n | MCP Client ノード → サーバー URL |
ツールのリファレンス
search_web
SERP の詳細情報を含む Google ウェブ検索です。
{
"query": "best mechanical keyboards 2025", // required
"num_results": 10, // 1–20, default 10
"country": "US", // ISO 3166-1 alpha-2
"search_lang": "en", // language code
"freshness": "pw", // "pd" day · "pw" week · "pm" month · "py" year
"safesearch": "moderate",// "off" · "moderate" · "strict"
"autocorrect": true,
"summary": false, // Serper AI summary
"page": 1 // pagination
}
レスポンスに含まれる内容:
- 🎯 回答ボックス — 利用可能な場合の直接的な回答
- 🧠 ナレッジグラフ — エンティティ情報(種類、説明、評価、ウェブサイト、属性)
- 🌐 オーガニック検索結果 — タイトル、URL、スニペット、サイトリンク、日付
- 💬 他のユーザーはこちらも質問 — 回答付きの関連質問(最大4件)
- 🔗 関連検索 — 最大6件の候補
search_images
{
"query": "minimalist desk setup",
"num_results": 10,
"country": "US",
"safesearch": "moderate"
}
返される内容:画像 URL、サムネイル、寸法(幅 × 高さ)、ソースドメイン、ソースページの URL。
search_videos
{
"query": "react server components tutorial",
"num_results": 5,
"freshness": "pm"
}
返される内容:タイトル、チャンネル、再生時間、公開日、動画 URL。
search_news
{
"query": "OpenAI GPT-5 release",
"num_results": 10,
"freshness": "pd", // default is past day for news
"country": "US"
}
返される内容:見出し、掲載元、日付、スニペット、URL。
search_shopping
{
"query": "Sony WH-1000XM5 headphones",
"num_results": 8,
"country": "US"
}
返される内容:商品名、価格、販売者、星評価とレビュー件数、配送情報、商品 URL。
search_places ⭐ このサーバー独自の機能
{
"query": "ramen restaurants in Shibuya Tokyo",
"num_results": 5,
"country": "JP"
}
返される内容:ビジネス名、カテゴリ、住所、電話番号、ウェブサイト、星評価とレビュー件数、営業時間、GPS 座標と Google マップのリンク。
使用例:
- 「タイムズスクエアの近くで評価の高いコーヒーショップを探して」
- 「テキサス州オースティンで日曜日に営業している歯科医院は?」
- 「ダッカのコワーキングスペースを一覧表示して」
search_scholar 🆕 v4.0.0
学術文献を対象とした Google Scholar 検索です。
{
"query": "attention is all you need",
"num_results": 10,
"country": "US"
}
返される内容:タイトル、リンク、著者/ジャーナル/年(publicationInfo)、スニペット、引用数。
scrape 🆕 v4.0.0
単一 URL の全コンテンツを取得します(Serper Scrape API — scrape.serper.dev)。
{
"url": "https://example.com/article", // required
"include_markdown": true, // default true — markdown rendering
"include_images": false,
"include_links": false,
"include_videos": false,
"max_chars": 50000 // 1000–200000, default 50000
}
ページを Markdown 形式で返します(利用できない場合はプレーンテキストにフォールバック)。コンテキストの安全性を確保するため、出力は切り詰められます。ページあたり約 2 クレジットかかります。一般的な流れは search_web → 最適な検索結果を scrape です。
search_many 🆕 v4.0.0
1 回の呼び出しで、1~10 件のウェブ検索を並列実行します。
{
"queries": ["react server components", "vue server components", "sveltekit ssr"],
"num_results": 5,
"country": "US"
}
クエリ間で重複する URL は自動的に除外されます。クエリごとのエラーはインラインで報告され、バッチ全体は失敗しません。クエリごとに 1 クレジットかかります。
環境変数
検索プロバイダーとユニバーサルゲートウェイ
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SERPER_API_KEY | ✅ | — | 主要な検索プロバイダーのキー(serper.dev — 月 2,500 件まで無料) |
TAVILY_API_KEY | ❌ | — | Tavily のフォールバックプロバイダーキー(tavily.com — AI による再ランキング検索) |
BRAVE_API_KEY | ❌ | — | Brave Search のフォールバックプロバイダーキー(brave.com/search/api — 独立したインデックス) |
EXA_API_KEY | ❌ | — | Exa のニューラル検索フォールバックキー(exa.ai — セマンティック検索とハイライト) |
FIRECRAWL_API_KEY | ❌ | — | Firecrawl の JavaScript レンダリング対応スクレイピングおよび検索アップグレードキー(firecrawl.dev) |
SEARCH_PROVIDER_ORDER | ❌ | serper,tavily,brave | カンマ区切りのフェイルオーバー優先順位(serper,tavily,brave,exa,firecrawl) |
SEARCH_FALLBACK | ❌ | true | 402/429/5xx/空のレスポンス時に自動でフェイルオーバーします(true または false) |
サーバーとトランスポート
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SERPER_MCP_TRANSPORT | ❌ | stdio | MCP トランスポートモード:stdio(ローカル AI クライアント)または http(ステートレス Streamable HTTP) |
SERPER_MCP_PORT | ❌ | 8080 | HTTP トランスポートモードのポート(1~65535) |
SERPER_MCP_HOST | ❌ | 0.0.0.0 | HTTP モードでバインドするホストインターフェース |
SERPER_MCP_AUTH_TOKEN | ❌ | — | 設定すると、HTTP /mcp で Authorization: Bearer <token> が必要になります |
SERPER_MCP_LOG_LEVEL | ❌ | info | ログの詳細度:error · warn · info · debug · silent |
キャッシュと耐障害性の調整
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SERPER_CACHE_TTL_MS | ❌ | 600000 | 検索結果キャッシュの TTL(ミリ秒)。0 にするとキャッシュが無効になります |
SERPER_CACHE_MAX | ❌ | 200 | キャッシュするレスポンスの最大数(LRU 方式で削除) |
SERPER_TIMEOUT_MS | ❌ | 30000 | Serper 呼び出しごとのタイムアウト(ミリ秒) |
SERPER_RETRIES | ❌ | 2 | 429/5xx/ネットワークエラー時の再試行回数(Retry-After を尊重) |
SERPER_RETRY_BASE_MS | ❌ | 500 | 基本バックオフ待機時間(ミリ秒)(指数バックオフ+ジッター) |
詳細調査の LLM による統合
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
OPENROUTER_API_KEY | ❌ | — | deep_research の統合に使用する LLM キー(openrouter.ai で無料枠を利用可能) |
OPENROUTER_MODEL | ❌ | google/gemini-3.1-flash-lite:free | OpenRouter のモデル上書き設定 |
GEMINI_API_KEY | ❌ | — | deep_research の統合に使用する LLM キー(ai.google.dev で無料枠を利用可能) |
GEMINI_MODEL | ❌ | gemini-3.1-flash-lite | Gemini のモデル上書き設定 |
SERPER_LLM_TIMEOUT_MS | ❌ | 120000 | LLM 統合呼び出しごとのタイムアウト(ミリ秒) |
SERPER_LLM_RETRIES | ❌ | 2 | レート制限またはネットワークエラー時の LLM 呼び出し再試行回数 |
HTTP トランスポート(リモート/Docker)
ステートレス Streamable HTTP サーバーとして実行します(Docker イメージもこの方式で実行されます)。
npx serper-search-mcp --transport http --port 8080
# or via env: SERPER_MCP_TRANSPORT=http SERPER_MCP_PORT=8080 npx serper-search-mcp
- MCP エンドポイント:
POST http://localhost:8080/mcp - ヘルスチェック:
GET http://localhost:8080/health
Streamable HTTP に対応した任意の MCP クライアントを http://<host>:8080/mcp に接続してください。
オプションのベアラー認証
SERPER_MCP_AUTH_TOKEN(または --auth-token)を設定すると、/mcp で認証が必須になります。
SERPER_MCP_AUTH_TOKEN=secret npx serper-search-mcp --transport http --port 8080
curl -X POST http://localhost:8080/mcp \
-H "Authorization: Bearer secret" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
トークンなしのリクエストには 401 が返されます。ロードバランサー向けに /health は認証不要のままになり、auth_required を報告します。
プロンプトの例
任意の MCP クライアントに接続したら:
Search for the latest news about Claude 4 and summarize the key points.
Find me 5 Italian restaurants in Warsaw with their ratings and phone numbers.
What is the current price of the MacBook Pro M4 on Google Shopping?
Search for YouTube tutorials on building agentic AI systems published this month.
Find images of brutalist architecture in Eastern Europe.
deep_research
独自の LLM キーを使用して、複数ステップの AI 調査を実行します。LLM のデータが環境外に送信されることはありません。
必要なもの: OPENROUTER_API_KEY(openrouter.ai の無料モデル)または GEMINI_API_KEY(aistudio.google.com で無料)
{
"query": "What are the real-world limitations of RAG systems in production?",
"depth": "standard", // "basic" | "standard" | "deep"
"country": "US"
}
| 深さ | サブクエリ数 | 各結果数 | 最適な用途 |
|---|---|---|---|
basic | 3 | 3 | 手早い概要 |
standard | 5 | 5 | ほとんどのユースケース |
deep | 8 | 7 | 徹底的な調査 |
出力: インライン引用と「Sources」セクションを含む、構造化された Markdown レポートです。
環境変数でサポートされる LLM(すべての変数は上の表に記載されています):
| プロバイダー | 変数 | デフォルト |
|---|---|---|
| OpenRouter | OPENROUTER_API_KEY | — |
OPENROUTER_MODEL | google/gemini-3.1-flash-lite:free | |
| Google Gemini | GEMINI_API_KEY | — |
GEMINI_MODEL | gemini-3.1-flash-lite |
search_rag_context
Google 検索結果を、埋め込みに適したチャンクに変換します。LLM は不要で、テキスト処理のみで実行されます。
{
"query": "transformer architecture explained",
"num_results": 10,
"max_chunk_words": 200,
"include_paa": true,
"output_format": "json" // "json" or "text"
}
JSON 出力(ベクトル DB への取り込み用):
{
"query": "transformer architecture explained",
"total_sources": 10,
"total_chunks": 24,
"total_words": 4231,
"chunks": [
{
"chunk_index": 0,
"source_index": 1,
"title": "Attention Is All You Need",
"url": "https://arxiv.org/abs/1706.03762",
"domain": "arxiv.org",
"date": "2024-01-15",
"text": "The transformer architecture uses self-attention mechanisms...",
"word_count": 198,
"char_count": 1124
}
]
}
テキスト出力(プロンプトへの直接挿入用):
--- Chunk 1 | Source 1 | arxiv.org | 2024-01-15 ---
Title: Attention Is All You Need
URL: https://arxiv.org/abs/1706.03762
The transformer architecture uses self-attention...
ユースケース:
- Chroma、Pinecone、Qdrant、pgvector に取り込む
- 最新のウェブデータでプロンプトをグラウンディングする
- 検索拡張 RAG パイプラインを構築する
アーキテクチャ
serper-search-mcp-server/
├── index.js ← Zero-build JS entry (npx / Docker) — generated from src/ via `npm run bundle`; never edit by hand
├── src/
│ ├── index.ts ← TypeScript CLI entry
│ ├── api/
│ │ ├── SerperAPI.ts ← HTTP client (per-type endpoints, retry, timeout, TTL cache, scrape)
│ │ └── LLMClient.ts ← OpenRouter + Gemini client
│ ├── server/
│ │ └── SerperMCPServer.ts ← MCP server, stdio + HTTP transport, bearer auth
│ ├── tools/
│ │ ├── SearchTools.ts ← All 14 tool definitions + validation
│ │ ├── BatchSearch.ts ← search_many (parallel + dedupe)
│ │ ├── DeepResearch.ts ← Multi-step research orchestration
│ │ └── RAGContext.ts ← Chunk + metadata formatter
│ ├── types/
│ │ └── index.ts ← Full TypeScript types
│ └── utils/
│ ├── ResultFormatter.ts ← Markdown formatting
│ ├── HttpRetry.ts ← Timeout + retry/backoff
│ ├── TtlCache.ts ← TTL + LRU cache
│ ├── Logger.ts ← Leveled stderr logger (+ request-id)
│ ├── errors.ts ← Typed error hierarchy
│ ├── Metrics.ts ← /health counters
│ └── EnvCheck.ts ← Boot-time env validation
├── scripts/
│ └── bundle.mjs ← Builds index.js from src/ (`--check` mode for CI)
├── tests/ ← node:test suite (58 tests)
└── .github/workflows/ci.yml ← Node 18/20/22: build + bundle check + tests
二重ファイル設計: index.js はビルド手順なしで実行でき(npx や Docker に最適)、src/ から生成されます。唯一の信頼できる情報源は TS ツリーです。両者に差異がある場合、npm run check:bundle は CI を失敗させます。
Serper API キーの取得
- serper.dev にアクセスします
- 登録します(無料 — クレジットカード不要)
- ダッシュボードから API キーをコピーします
- 毎月 2,500 件のクエリを無料で利用できます
バージョンの変遷
| 機能 | v1.0.0 | v2.0.1 | v3.0.0 | v4.0.0 |
|---|---|---|---|---|
| ツールの合計数 | 5 | 5 | 8 | 14 |
search(統合) | ❌ | ❌ | ❌ | ✅ 自動で冗長度を調整 + プロバイダーのフェイルオーバー |
search_web | ✅ オーガニック検索結果のみ | ✅ オーガニック検索結果のみ | ✅ + アンサーボックス、ナレッジグラフ、PAA、関連項目 | ✅ |
search_images | ✅ | ✅ | ✅ + 寸法、ドメイン | ✅ + ギャラリーレイアウト |
search_videos | ✅ | ✅ | ✅ + 日付フィールド | ✅ |
search_news | ✅ | ✅ | ✅ より見やすい形式 | ✅ + 過去1日をデフォルトに設定 |
search_shopping | ✅ | ✅ | ✅ + 配送、オファー | ✅(常に詳細表示) |
search_places | ❌ | ❌ | ✅ 住所、電話番号、営業時間、GPS、Maps リンク | ✅ + 7日間すべての営業時間、道順 |
search_scholar | ❌ | ❌ | ❌ | ✅ 論文 + 被引用数 |
search_patents | ❌ | ❌ | ❌ | ✅ 公開情報、譲受人、日付 |
autocomplete | ❌ | ❌ | ❌ | ✅ 高速なクエリ補完 |
scrape | ❌ | ❌ | ❌ | ✅ ページ全体 → Markdown |
search_many | ❌ | ❌ | ❌ | ✅ 一括検索 + クエリ間の重複排除 |
deep_research | ❌ | ❌ | ✅ サブクエリ → 並列検索 → LLM レポート | ✅ |
search_rag_context | ❌ | ❌ | ✅ 分割テキスト + メタデータ、JSON/テキスト出力 | ✅ |
| API エンドポイント | すべて /search に tbm パラメーターを指定 | すべて /search に tbm パラメーターを指定 | ✅ タイプごとに適切なエンドポイント | ✅ + scholar + scrape ホスト |
| アンサーボックス/KG/PAA | ❌ | ❌ | ✅ SERP を完全に抽出 | ✅ |
| ページネーション | ❌ | ❌ | ✅ page パラメーター | ✅ |
| 自動修正パラメーター | ❌ | ❌ | ✅ | ✅ |
| LLM サポート | ❌ | ❌ | ✅ OpenRouter + Gemini(ユーザー自身のキー) | ✅ |
| LLM 不要の RAG 出力 | ❌ | ❌ | ✅ JSON + プレーンテキスト | ✅ |
| TypeScript 型 | 部分的(any が多用されています) | 部分的(any が多用されています) | ✅ すべての結果形式に完全な型定義 | ✅ + scholar/scrape |
| MCP SDK バージョン | ^0.5.0 | ^0.5.0 または ^1.0.0 | ^1.0.0 | ^1.0.0 |
| Node の要件 | >=16 | >=16 | >=18(ネイティブの fetch、axios 不使用) | >=18 |
| HTTP トランスポート | ❌ | ✅ | ✅ | ✅ ステートレスな Streamable HTTP |
| HTTP ベアラー認証 | ❌ | ❌ | ❌ | ✅ オプション |
| 再試行 + タイムアウト | ❌ | ❌ | ❌ | ✅ 429/5xx/ネットワークエラー |
| レスポンスキャッシュ | ❌ | ❌ | ❌ | ✅ TTL + LRU |
| ログレベル | ❌ | ❌ | ❌ | ✅ error/warn/info/debug/silent |
| テスト + CI | ❌ | ❌ | ❌ | ✅ node:test + GitHub Actions |
| Docker | ❌ | ✅ | ✅ | ✅ |
| npx | ❌ | ✅ | ✅ | ✅ |
| クライアント設定 | Claude Desktop のみ | Claude Desktop + 少数のクライアント | Claude Desktop + Cursor + Windsurf + KiloCode + n8n | ✅ |
| テレメトリー | ❌ なし | ❌ なし | ❌ なし(意図的 — プライバシー面で有利) | ❌ なし |
変更履歴
v4.0.0 — ユニバーサル検索ゲートウェイ(マルチプロバイダー、14 個のツール、CLI、レジリエンス、テスト)
- ➕ ユニバーサル・マルチプロバイダー・ゲートウェイ — フェイルオーバーチェーン:Serper → Tavily → Brave(+ Exa/Firecrawl)。
provider=allでは逆順位融合を実行します - ➕ 14 個の MCP ツール — 統合された
search(トークンを考慮した自動詳細度調整)、search_scholar、search_patents、autocomplete、scrape、search_manyなど - ➕ 開発者向け CLI —
search、scrape、research、rag、providers、statusサブコマンド - ➕
search_scholarツール — 著者、学術誌、年、引用数を含む Google Scholar の検索 - ➕
scrapeツール —scrape.serper.dev経由でページ全体のコンテンツを Markdown 形式で取得(切り詰めに安全) - ➕
search_manyツール — 1~10 件のウェブ検索を並列実行し、クエリ間で URL を重複排除。クエリごとに失敗を分離します - ➕ リトライ + タイムアウト — 429/5xx/ネットワークエラー時に指数バックオフ + ジッターでリトライします(Retry-After を尊重)
- ➕ レスポンスキャッシュ — メモリ内 TTL + LRU(
SERPER_CACHE_TTL_MS=0で無効化) - ➕ オプションの HTTP ベアラー認証 —
SERPER_MCP_AUTH_TOKENで/mcpを保護します。/healthは引き続き認証不要です - ➕ 実際のログレベル —
SERPER_MCP_LOG_LEVELで error/warn/info/debug/silent を制御できるようになりました - ➕ テストスイート + CI — 58 件の
node:testテスト(追加の依存関係不要。実 HTTP を使った E2E テストを含む)+ GitHub Actions のマトリックス(Node 18/20/22) - 🔧 HTTP トランスポートが Node 18 でも動作するようになりました — MCP SDK 用の WebCrypto shim(
crypto.randomUUID)。Docker のベースイメージをnode:20-alpineに更新しました - 🔧
search_langが Serper のhlに正しくマッピングされるようになりました(以前は無視されていました) - 🔧 ニュース検索のデフォルトが、ドキュメントに記載されている過去 1 日以内の鮮度になりました
- 🔧
max_chunk_wordsを 50~1000 に制限しました(ゼロや負の値によるハングを修正) - 🔧
deep_researchで不明なdepthはstandardにフォールバックします - 🔧 不明なツールは
InternalErrorではなくMethodNotFoundを返します - 🔧 値を指定しない
--api-keyによって起動が失敗する問題を修正しました - 🔧
index.jsは esbuild を介してsrc/から生成されます。npm run check:bundleで差異を検出します - 🔧 Windows 対応の npm スクリプト。
npm auditで脆弱性 0 件を報告します
v3.0.0 — 場所 + 詳細調査 + RAG
- ➕
search_placesツール — 住所、電話番号、営業時間、GPS 情報を含む地域の事業者を検索 - ➕ ウェブ検索でのナレッジグラフ抽出
- ➕ ウェブ検索でのアンサーボックス抽出
- ➕ ウェブ検索結果での「他の人はこちらも質問」+ 関連検索
- ➕ ページネーションに対応(
pageパラメーター) - ➕ ウェブ検索に
autocorrectパラメーターを追加 - 🔧 タイプごとの Serper エンドポイントを修正(画像/動画/ニュース/ショッピングで専用エンドポイントを使用するようになりました)
- 🔧 すべての結果形式に完全な TypeScript 型を追加
- ➕
deep_researchツール — LLM による統合を用いた複数ステップの調査(OpenRouter / Gemini) - ➕
search_rag_contextツール — メタデータ付きの埋め込み対応チャンク(LLM 不要) - 🔧 Node ≥ 18 が必要です(ネイティブ
fetch)
v2.0.1
- HTTP/SSE トランスポートモード
- Docker Compose に対応
- CLI フラグ
v1.0.0
- 初回リリース:ウェブ、画像、動画、ニュース、ショッピング
コントリビューション
PR と課題を歓迎します。大きな変更を行う前に、課題を作成してください。
git clone https://github.com/smjahid012/serper-search-mcp-server.git
cd serper-search-mcp-server
npm install
export SERPER_API_KEY="your_key"
node index.js # test immediately, no build required
ライセンス
Apache 2.0 — LICENSE を参照してください
SMLabs AI が開発 · smjahid012
これによって時間を節約できた場合は、GitHub で ⭐ を付けていただくと、ほかの人にも見つけてもらいやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。