Google Custom Search MCP について
Google Custom Search MCPはProgrammable Search Engineを通じて、AIアプリにウェブページと画像の検索機能を提供します。検索範囲はエンジン設定で決まり、結果のページ送りとAPIへの直接GETにも対応します。
主な機能
- 01ウェブページ検索
- 02サムネイル付き画像検索
- 03言語・国・日付・サイトで絞り込み
- 04検索結果のページ送り
- 05APIへの直接GETリクエスト
- 06読み取り専用操作
活用シーン
- 01テーマに関する新しい記事を検索
- 02指定サイト内だけを検索
- 03言語や日付でページを検索
- 04サイズを指定してテーマ画像を探す
MCP 対応
MCP サーバーとして、ウェブ検索、画像検索、Custom Search APIへの直接GETツールをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-google-custom-searchGOOGLE_CUSTOM_SEARCH_API_KEYシークレットGoogle Cloud API key with the Custom Search API enabled. Treat it as a secret.GOOGLE_CUSTOM_SEARCH_ENGINE_IDDefault Programmable Search Engine id (cx). Tools accept a per-call engine_id override.GOOGLE_CUSTOM_SEARCH_API_BASEAPI root override.GOOGLE_CUSTOM_SEARCH_TIMEOUT_MSPer-request timeout in milliseconds.GOOGLE_CUSTOM_SEARCH_MAX_RETRIESRetries on transient errors (429, and 5xx/network — the API is idempotent GETs only).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| num | integer | いいえ | ページあたりの結果数、1..10(API の上限は 10、デフォルトは 10)。 |
| safe | enum | いいえ | セーフサーチ:active は成人向けコンテンツをフィルタリングし、off(API のデフォルト)ではフィルタリングしません。off | active |
| sort | string | いいえ | 並べ替え式。たとえば "date" は新しい順です。関連度順にする場合は省略します(通常はこちらがおすすめです)。 |
| query | string | はい | 検索クエリ。Google の構文(引用符、site:、filetype:、OR、-による除外)に対応しています。 |
| start | integer | いいえ | 結果の開始インデックス(1 始まり)です。前のページで返された next_start/previous_start を使用してください。クエリごとに API が返す結果は最大 100 件のため、start + num - 1 は 100 以下である必要があります(超過する範囲のリクエストは拒否され、クォータは消費されません)。 |
| rights | string | いいえ | ライセンスフィルター:cc_publicdomain、cc_attribute、cc_sharealike、cc_noncommercial、cc_nonderived(| で組み合わせます)。 |
| country | string | いいえ | 地域バイアス。この国から検索した場合のように結果を順位付けします。例:"de"。弱いシグナルです。 |
| language | string | いいえ | この言語の結果のみを返します。例:"en"、"de"、"zh-CN"。 |
| or_terms | string | いいえ | スペース区切りの単語です。各結果に少なくとも 1 つ含まれている必要があります。 |
| engine_id | string | いいえ | 検索に使用する Programmable Search Engine ID(cx)です。設定済みの GOOGLE_CUSTOM_SEARCH_ENGINE_ID を上書きします。省略すると設定済みのエンジンを使用します。 |
| file_type | string | いいえ | この種類のファイルのみを返します。例:"pdf"、"xlsx"、"svg"。 |
| exact_terms | string | いいえ | 各結果に必ず含まれる必要がある語句です。 |
| site_search | string | いいえ | 含める、または除外するサイトまたはドメインです。例:"example.com"。site_search_filter と組み合わせて使用します。 |
| date_restrict | string | いいえ | 過去 N 日/週/か月/年の結果のみを返します:"d7"、"w2"、"m6"、"y1" など。 |
| exclude_terms | string | いいえ | 結果に含まれてはならない単語または語句です。 |
| include_pagemap | boolean | いいえ | 各結果の生の pagemap(OpenGraph/メタタグ/サムネイルなどの構造化ページデータ)を付加します。情報量が多いため、ページのメタデータが必要な場合以外はオフにしてください。 |
| country_restrict | string | いいえ | 厳密なフィルターです。Google がこの国に属すると判断したドキュメントのみを返します。例:"DE"。 |
| filter_duplicates | boolean | いいえ | Google の重複コンテンツフィルターです(デフォルトでオン)。false にすると、類似した重複結果も返します。 |
| interface_language | string | いいえ | クエリの解釈に使用するインターフェース言語です。例:"de"。英語以外の検索の関連性が向上します。 |
| site_search_filter | enum | いいえ | include = site_search の結果のみ、exclude = それ以外のすべての結果です。デフォルトは include です。include | exclude |
詳細
Google Custom Search MCP
English | Русский
A1 Google Custom Search MCP を使うと、Programmable Search Engine を通じて、AI アプリから自然な言葉でウェブや画像を検索できます。ページの検索、言語・国・日付・サイトによる絞り込み、検索結果のページ送り、サムネイル付き画像ファイルの取得を依頼できます。
Google Cloud API キーを使って、Google Custom Search JSON API を利用します。検索対象は、ごく少数のサイトからウェブ全体まで、エンジン側で決定します。また、このサーバーは JSON API の制限を明示し、あらゆる検索タスクが可能であるかのように示すことはありません。
- ツールは3つです。 ウェブ検索、画像検索、そして型付きツールでは公開されていないパラメーターを指定するための、生の GET リクエスト用ツールです。
- 最初から最後まで読み取り専用です。 Custom Search JSON API には書き込み用のエンドポイントがありません。すべてのツールが読み取り専用としてマークされており、ここからデータを変更することはできません。
- 検索対象は自分で管理できます。 検索対象はエンジンの設定で決まるため、検索結果やランキングは google.com と異なる場合があります。
- キーはヘッダー内に保持されます。 API キー認証を使用します。OAuth やスコープは不要です。キーは
X-Goog-Api-Keyヘッダーで送信され、URL には表示されません。 - Google Search Console ではありません。 自分のサイトがどのようにインデックス登録され、ランキングされているかを確認することはできません。
まずは、読み取り専用の質問から始めましょう。
先月のパスキー導入に関する最近の記事を探し、上位3件の結果を要約してください。
サーバーを接続 · ユースケースを見る · 技術ドキュメントを開く
1分で動作を確認
あなた: 先月のパスキー導入に関する最近の記事を、英語だけで探してください。
アシスタント: エンジンを使って1回検索し、それぞれの結果のタイトル、リンク、スニペットを表示します。何も変更されません。すべてのツールが読み取り専用です。
あなた: 次のページを表示してください。
アシスタント:
next_startカーソルから続けて、同じクエリの検索結果11~20件を表示します。あなた: 次に、同じトピックの大きな報道写真を探してください。
アシスタント: 画像検索に切り替え、画像ファイルとその寸法、サムネイル、掲載ページを返します。
目次
クイックスタート
Node.js 20 以降、Custom Search API が有効になっている Google Cloud API キー、および Programmable Search Engine の ID(cx)が必要です。
- API キーとエンジン ID を取得する。
- AI アプリにサーバーを追加します。
- 上記の読み取り専用の質問をします。
Codex
アプリ内の場合: Settings → MCP servers を開き、Add server を選択して、STDIO を選びます。コマンド npx -y mcp-google-custom-search@latest と環境変数 GOOGLE_CUSTOM_SEARCH_API_KEY、GOOGLE_CUSTOM_SEARCH_ENGINE_ID を入力し、Save、続けて Restart を選択します。
コマンドラインからの場合:
codex mcp add google-custom-search \
--env GOOGLE_CUSTOM_SEARCH_API_KEY=your_api_key \
--env GOOGLE_CUSTOM_SEARCH_ENGINE_ID=your_engine_id \
-- npx -y mcp-google-custom-search@latest
codex mcp list
Claude Code
claude mcp add \
--env GOOGLE_CUSTOM_SEARCH_API_KEY=your_api_key \
--env GOOGLE_CUSTOM_SEARCH_ENGINE_ID=your_engine_id \
--transport stdio --scope user google-custom-search \
-- npx -y mcp-google-custom-search@latest
claude mcp list
Claude Desktop
現在の公式手順は Settings → Extensions です。カスタムデスクトップ拡張機能を使用するには、Advanced settings → Extension Developer → Install Extension… を開き、.mcpb ファイルを選択して、画面の指示に従います。
このリポジトリで現在公開されているのは npm の stdio パッケージで、.mcpb バンドルは含まれていません。ローカル設定を引き続きサポートする Claude Desktop ビルドでは、代わりに次の JSON stdio 設定を使用してください。
{
"mcpServers": {
"google-custom-search": {
"command": "npx",
"args": ["-y", "mcp-google-custom-search@latest"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "your_api_key",
"GOOGLE_CUSTOM_SEARCH_ENGINE_ID": "your_engine_id"
}
}
}
}
これらのビルドでは、macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json に、Windows の場合は %APPDATA%\Claude\claude_desktop_config.json に保存します。
Cursor
macOS/Linux では ~/.cursor/mcp.json に、Windows では %USERPROFILE%\.cursor\mcp.json に追加します。
{
"mcpServers": {
"google-custom-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-custom-search@latest"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "your_api_key",
"GOOGLE_CUSTOM_SEARCH_ENGINE_ID": "your_engine_id"
}
}
}
}
VS Code
MCP: Open User Configuration を実行して、次を追加します。
{
"servers": {
"google-custom-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-custom-search@latest"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${input:custom_search_api_key}",
"GOOGLE_CUSTOM_SEARCH_ENGINE_ID": "${input:custom_search_engine_id}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "custom_search_api_key", "description": "Google Cloud API key", "password": true },
{ "type": "promptString", "id": "custom_search_engine_id", "description": "Programmable Search Engine id (cx)" }
]
}
MCP: List Servers で確認します。
何を依頼できるか
ウェブを検索する
- トピックに関する最近のチュートリアルを見つけ、上位の検索結果を要約します。
docs.python.org内だけを検索するか、信頼できないサイトを除いて検索します。- 同じクエリの次のページの検索結果を表示します。
検索結果を絞り込む
- 過去 1 か月以内に公開された英語のページだけを対象にします。
- PDF ファイルだけを対象にし、完全一致するフレーズを必須にしたり、語句を除外したりします。
- 1 か国のコンテンツに限定するか、特定の使用権を持つ資料に絞ります。
画像を見つける
- トピックに関する大きな写真を、寸法やサムネイルとともに見つけます。
- クリップアートまたは線画だけ、あるいは白黒の画像だけを対象にします。
- 各画像が掲載されているページを表示します。
型付きツールの機能を超えて利用する
- 型付きツールでは公開されていないパラメーターを使って API を呼び出します。たとえば、応答を絞り込む
fields、lowRange/highRange、hqを使用します。 - プロモーションと完全な
pagemapを含む、生の応答エンベロープを取得します。
検索の仕組み
- すべてのクエリは、
cxIDで識別されるProgrammable Search Engineを通じて実行されます。使用されるのは、設定済みのデフォルトエンジン、または呼び出しごとに指定するengine_idです。検索対象はエンジンの設定で決まり、特定サイトのリスト、または「ウェブ全体を検索」が有効な場合はウェブ全体です。 - 結果は、タイトル、URL、スニペット、メタデータに正規化されて返され、ページネーション用の
next_start/previous_startカーソルが含まれます。total_resultsはGoogleによる推定値であり、ページを進める間に減少することがあります。 - APIが1回の呼び出しで返す結果は最大10件、1つのクエリにつき最大100件です(
start + num - 1は100以下でなければなりません)。サーバーはリクエスト前に範囲が広すぎる場合は拒否します。APIに送信すると、割り当て枠を1単位消費した後で400が返るためです。 - 画像検索には、エンジンのコントロールパネルで画像検索を有効にする必要があります。有効でない場合、APIは
400を返します。
レスポンスのcorrected_queryはスペルの候補にすぎず、結果は元のクエリに対するものです。また、これはProgrammable Searchであり、Google Search Consoleではありません。APIでは、自サイトのインデックス登録状況や検索順位を確認できません。
変更される内容
| 操作 | 内容 | 確認の境界 |
|---|---|---|
ウェブ検索(search) | エンジンから検索結果を読み取ります | 変更なし |
画像検索(search_images) | エンジンから画像検索結果を読み取ります | 変更なし |
生のAPIリクエスト(raw_request) | 任意のCustom Search APIパスに対してGETを実行します | 変更なし — APIに書き込み用エンドポイントはありません |
例外的な手段も含め、すべてのツールに読み取り専用の注釈が付いています。Custom Search JSON APIは書き込み機能のない単一のGETエンドポイントであるため、呼び出しで消費されるのは1日あたりの割り当て枠だけです。
アクセスの取得
Google Custom Searchの認証にはAPIキーを使用します。OAuthやスコープは必要ありません。
- Google Cloudプロジェクトを作成するか選択し、Custom Search APIを有効にします。
- API とサービス → 認証情報でAPIキーを作成します。キーをCustom Search APIのみに制限しておくと安心です。
- コントロールパネルでProgrammable Search Engineを作成し、検索エンジン ID(
cx)をコピーします。オープンウェブ検索ではウェブ全体を検索を、画像ツールでは画像検索を有効にします。
APIキーはパスワードとして扱ってください。サーバーはキーをURLではなくX-Goog-Api-Keyヘッダーで送信するため、ログに記録されたURLや表示されたURLからキーが漏れることはありません。
設定
| 変数 | 必須 | 説明 |
|---|---|---|
GOOGLE_CUSTOM_SEARCH_API_KEY | はい | Custom Search APIを有効にしたGoogle Cloud APIキー。シークレットです。 |
GOOGLE_CUSTOM_SEARCH_ENGINE_ID | 推奨 | デフォルトのProgrammable Search Engine ID(cx)。ツールでは呼び出しごとにengine_idで上書きできます。 |
GOOGLE_CUSTOM_SEARCH_API_BASE | いいえ | Custom Search APIのベースURLを上書きします。 |
GOOGLE_CUSTOM_SEARCH_TIMEOUT_MS | いいえ | リクエストごとのタイムアウト。デフォルトは30000 msです。 |
GOOGLE_CUSTOM_SEARCH_MAX_RETRIES | いいえ | 一時的なエラー(429/5xx/ネットワーク)の再試行回数。デフォルトは3です。 |
認証情報がなくてもサーバーは起動してMCPハンドシェイクを完了します。最初のツール呼び出しで、設定する変数が具体的に説明されます。設定の不備となるのは、APIキーなしでエンジンIDだけを指定する場合です。キーは呼び出しごとに指定できないため、両方をセットで設定する必要があります。
データ、上限、バックグラウンド処理
- リクエストは Google に送信されます。 ローカルサーバーは Custom Search JSON API を呼び出します。匿名のテレメトリには、インストール ID、パッケージのバージョン、AI クライアントとプラットフォームのバージョン、ツール名が含まれますが、API キー、検索クエリ、検索結果、ツールの引数は含まれません。オプトアウトするには、
ASKADS_TELEMETRY=0を設定してください。 - Google には 1 日あたりの割り当てがあります。 3 つのツールのいずれからの呼び出しも、プロジェクトごとの割り当てを 1 単位消費します。無料枠は 1 日あたり 100 クエリで、課金を有効にすると 1 日あたり最大 10,000 クエリまで利用できます。
429が返された場合、サーバーはRetry-Afterに従ってバックオフします。API のすべての呼び出しは冪等な GET であるため、5xxエラーやネットワークエラーも再試行されますが、400/403はすぐに失敗します。 - バックグラウンドでのポーリングはありません。 サーバーは呼び出された場合にのみ実行されます。AI アプリがスケジュールタスクに対応している場合、定期的に検索を再実行できます。各実行で引き続き割り当て単位が消費されます。
技術ドキュメント
- MCP 機能カタログ — 各ツールのタスク別ページ。
- すべてのツールと入力
- 開発ドキュメント
- 公開ドキュメント
- Custom Search JSON API リファレンス
サポート
バグを見つけた場合や、利用シナリオが必要な場合は、Issue を作成するか、Telegram にご連絡ください。
最後までご覧いただき、ありがとうございます!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。