seo-stack-mcp について
seo-stack-mcpは、SEOやサイト分析に携わるチーム向けのオープンソースでセルフホスト可能なMCPサーバーです。7つのデータソースと分析ツールをまとめ、検索クエリの減少、コンテンツギャップ、週次レポートなどを算出します。
主な機能
- 017種類のSEO・分析データソースに接続
- 02検索パフォーマンスと傾向を分析
- 03カニバリゼーションとコンテンツギャップを検出
- 04週次パフォーマンスレポートを生成
- 05設定済みソースのツールのみ公開
活用シーン
- 01流入が減少している検索クエリを確認
- 02改善機会のあるページを特定
- 03複数ソース間でサイト実績を比較
- 04定期的なSEOレポートを作成
MCP 対応
設定したデータソースのツールと、組み込みのSEO分析機能をMCPクライアントに公開します。Claude Desktop、Claude Code、Cursorを含む各種MCPクライアントに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx seo-stack-mcpGOOGLE_APPLICATION_CREDENTIALSシークレットPath to a Google service-account JSON key (enables GSC + GA4)SEO_STACK_OAUTH_CLIENTシークレットPath to a Google OAuth desktop client secrets JSON (alternative to service account)GA4_PROPERTY_IDDefault GA4 property IDGSC_SITE_URLDefault Search Console property (e.g. sc-domain:example.com)ADSENSE_ACCOUNT_IDAdSense account (accounts/pub-XXXX...) — enables AdSense tools on top of the Google credentialsADSENSE_CURRENCYReporting currency for AdSense tools (default USD)BING_WEBMASTER_API_KEYシークレットBing Webmaster Tools API key (enables Bing tools)BING_SITE_URLDefault Bing site URLCLARITY_API_TOKENシークレットMicrosoft Clarity Data Export API token (enables Clarity tools)GOOGLE_ADS_DEVELOPER_TOKENシークレットGoogle Ads developer token (enables Keyword Planner tools; needs the google-ads extra)GOOGLE_ADS_CLIENT_IDGoogle Ads OAuth client idGOOGLE_ADS_CLIENT_SECRETシークレットGoogle Ads OAuth client secretGOOGLE_ADS_REFRESH_TOKENシークレットGoogle Ads OAuth refresh token (adwords scope)GOOGLE_ADS_CUSTOMER_IDGoogle Ads customer id (10 digits)GOOGLE_ADS_LOGIN_CUSTOMER_IDManager account id, if the customer is under an MCCOPENPAGERANK_API_KEYシークレットOpen PageRank API key (enables the pagerank_score tool)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
seo-stack-mcp
AI エージェント向けの、完全なオープンソース SEO データスタックです。 Google Search Console、Google Analytics 4、Bing Webmaster Tools、Microsoft Clarity、Google AdSense、Google Keyword Planner、Open PageRank を単一の MCP サーバーにまとめています。生の API をラップするだけでなく、カニバリゼーションチェック、すぐ成果につながる施策、コンテンツギャップ、週次レポートなどのアナリストツールも組み込まれています。
セルフホスト可能、無料、MIT ライセンスです。Claude Desktop、Claude Code、Cursor、およびあらゆる MCP クライアントで動作します。
N 個のサーバーを個別に使わず、これを選ぶ理由
- インストールも設定も 1 つ — 7 種類の MCP サーバーを、それぞれ異なる認証設定で接続する必要はありません。
- アナリストツールを搭載 — 「今月、どのクエリが減少していますか?」 や 「すぐ成果につながるキーワードを見つけて」 と尋ねると、エージェントが処理しなければならない生データではなく、サーバー側で算出した回答が得られます。
- データソースは任意 — 使用するものだけを設定できます。ツールは設定したデータソースのものだけが表示されます。
- セルフホスト可能 — トークンはお使いのマシンから外に出ません。Search Console を読み取るサードパーティのホスト型ゲートウェイはありません。
クイックスタート(60 秒)
MCP クライアントの設定に追加します(Claude Desktop の claude_desktop_config.json、Cursor の mcp.json、または claude mcp add):
{
"mcpServers": {
"seo-stack": {
"command": "uvx",
"args": ["seo-stack-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"GA4_PROPERTY_ID": "123456789",
"BING_WEBMASTER_API_KEY": "your-key",
"CLARITY_API_TOKEN": "your-token"
}
}
}
}
すべての環境変数は任意です。使いたいデータソースだけを設定してください。これだけで完了です。クライアントを再起動して、「今週の上位クエリは何ですか?」 と尋ねてみましょう。
GitHub から最新の開発版を直接実行するには、代わりに "args": ["--from", "git+https://github.com/Raffaele86/seo-stack-mcp", "seo-stack-mcp"] を使用します。
認証情報
| データソース | 必要なもの | 入手先 |
|---|---|---|
| GSC + GA4 | サービスアカウント JSON(推奨)→ GOOGLE_APPLICATION_CREDENTIALS | Google Cloud Console → サービスアカウントを作成 → Search Console API と Analytics Data API を有効化 → GSC / GA4 で SA のメールアドレスをユーザーとして追加 |
| GSC + GA4(別の方法) | OAuth デスクトップクライアント JSON → SEO_STACK_OAUTH_CLIENT | 初回実行時に同意を求めるブラウザーが開きます。更新トークンは ~/.config/seo-stack-mcp/ にキャッシュされます |
| Bing | BING_WEBMASTER_API_KEY | Bing Webmaster Tools → Settings → API access |
| Clarity | CLARITY_API_TOKEN | Microsoft Clarity → プロジェクト → Settings → Data Export API |
| AdSense | 上記の Google 認証情報 + ADSENSE_ACCOUNT_ID(accounts/pub-XXXX...) | AdSense → Account → Settings → Account information。Google Cloud で AdSense Management API を有効にします。OAuth を使用していて、後から AdSense を有効にする場合は、キャッシュされたトークンを ~/.config/seo-stack-mcp/ から削除し、新しいスコープに同意してください |
| Keyword Planner | GOOGLE_ADS_DEVELOPER_TOKEN、GOOGLE_ADS_CLIENT_ID、GOOGLE_ADS_CLIENT_SECRET、GOOGLE_ADS_REFRESH_TOKEN、GOOGLE_ADS_CUSTOMER_ID(MCC 配下の場合は GOOGLE_ADS_LOGIN_CUSTOMER_ID も必要) | Google Ads API Center → デベロッパートークン(Basic access で十分です。API 呼び出しは無料です)。google-ads エクストラも必要です:uvx --with google-ads seo-stack-mcp または pip install seo-stack-mcp[ads] |
| Open PageRank | OPENPAGERANK_API_KEY | Open PageRank — 無料の API キー。1 時間あたり 10,000 回呼び出せます |
省略可能なデフォルト値:GSC_SITE_URL、BING_SITE_URL(質問のたびにサイトを指定する必要がなくなります)、ADSENSE_CURRENCY(デフォルトは USD)、GOOGLE_ADS_LOCATION_ID / GOOGLE_ADS_LANGUAGE_ID(Keyword Planner の地域/言語のデフォルト値。デフォルトは米国/英語)。
ツール
Google Search Console(29 個のツール)
| ツール | 説明 |
|---|---|
gsc_bulk_inspect_urls | URL Inspection API を使用して複数の URL を一括で検査します。1 回の呼び出しにつき最大 50 URL です。 |
gsc_bulk_request_indexing | Google Indexing API を使用して複数の URL のインデックス登録をリクエストします。最大 50 URL です。 |
gsc_cannibalization_check | 複数のページが競合しているクエリ(キーワードのカニバリゼーション)を検出します。検索順位のあるページが 2 つ以上あるクエリを表示します。 |
gsc_compare_periods | 2 つの期間を比較し、項目ごとのクリック数、表示回数、CTR、掲載順位の差分を表示します。 |
gsc_content_gap_analysis | コンテンツギャップ分析:競合サイトは検索順位を獲得しているものの、自社サイトは獲得していない(または大きく差をつけられている)クエリを表示します。 |
gsc_country_performance | 国別のパフォーマンス:クリック数、表示回数、CTR、平均掲載順位を表示します。デフォルトは過去 28 日間です。 |
gsc_daily_stats | 日ごとのサイト統計の集計:クリック数、表示回数、CTR、平均掲載順位を表示します。 |
gsc_declining_queries | クリック数や掲載順位が低下しているクエリ:直近 N 日間と同じ日数の前期間を比較します。 |
gsc_delete_sitemap | Google Search Console からサイトマップを削除します。認証情報に書き込みスコープが必要です。 |
gsc_device_performance | モバイル、デスクトップ、タブレット間でパフォーマンスを比較します。デフォルトは過去 28 日間です。 |
gsc_indexing_status_summary | 複数 URL のインデックス登録状況の概要:インデックス登録済み、未登録、エラーの URL 数を表示します。 |
gsc_inspect_url | Google Search Console URL Inspection API を使用して URL を検査します。 |
gsc_keyword_opportunities | 表示回数が多いものの CTR が低く、掲載順位が 5~20 位のクエリ:最適化の機会を表示します。 |
gsc_list_sitemaps | Google Search Console に登録されているサイトのすべてのサイトマップを一覧表示します。 |
gsc_list_sites | 設定済みの認証情報で利用できる Google Search Console プロパティをすべて一覧表示します。 |
gsc_low_hanging_fruit | 掲載順位が 3~10 位で表示回数が多いクエリ:わずかな最適化でトップ 3 に押し上げられる可能性があります。 |
gsc_page_trend | 特定のページの日ごとの推移を過去 N 日間にわたって表示します(デフォルトは 90 日間)。 |
gsc_pages_for_query | 特定のクエリで検索順位を獲得しているページを表示します。パフォーマンスデータのあるすべてのページが対象です。 |
gsc_queries_for_page | 特定のページへのトラフィックを促しているクエリを表示します。パフォーマンスデータのあるすべてのキーワードが対象です。 |
gsc_query_trend | 特定のクエリの日ごとの推移を過去 N 日間にわたって表示します(デフォルトは 90 日間)。 |
gsc_request_indexing | Google Indexing API を使用して URL のインデックス登録をリクエストします。 |
gsc_rising_queries | 上昇しているクエリ:直近 N 日間と同じ日数の前期間を比較します。 |
gsc_search_analytics | Search Analytics をクエリし、指定したディメンションのクリック数、表示回数、CTR、掲載順位を取得します。 |
gsc_search_analytics_filtered | 高度なフィルターを使用した Search Analytics。フィルター:query_contains、query_regex、page_contains、page_regex、国(例:'ita')、デバイス(モバイル/デスクトップ/タブレット)。 |
gsc_search_appearance | SERP の検索結果タイプ(リッチスニペット、動画、FAQ など)別のパフォーマンスを表示します。デフォルトは過去 28 日間です。 |
gsc_submit_sitemap | Google Search Console にサイトマップを送信します。認証情報に書き込みスコープが必要です。 |
gsc_top_pages | クリック数または表示回数の多いページを表示します。order_by:clicks、impressions、ctr、position。デフォルトは過去 28 日間です。 |
gsc_top_queries | クリック数または表示回数の多いクエリを表示します。order_by:clicks、impressions、ctr、position。デフォルトは過去 28 日間です。 |
gsc_weekly_report | 自動週次レポート:直近 7 日間とその前の 7 日間の指標を差分とともに比較し、上位のクエリとページを表示します。 |
Google Analytics 4(10 個のツール)
| ツール | 説明 |
|---|---|
ga4_compare_periods | 主要な指標について、変化率とともに2つの期間を比較します。 |
ga4_conversion_paths | ユーザーの経路:セッション数とユーザー数を含む、流入元からランディングページまでの経路です。 |
ga4_events | イベント数とユーザー数を含む、GA4 の上位イベントです。 |
ga4_landing_pages | セッション数、ユーザー数、直帰率を含む、入口ページ(ランディングページ)です。 |
ga4_overview | サイトの概要:ユーザー数、セッション数、ページビュー数、直帰率、平均セッション時間です。 |
ga4_page_performance | デバイス別および流入元別の内訳を含む、単一ページの詳細なパフォーマンスです。 |
ga4_realtime | リアルタイムレポート:現在閲覧されているページとアクティブユーザー数です。 |
ga4_top_pages | ページビュー数、ユーザー数、滞在時間、直帰率などの全指標を含む、トラフィック上位のページです。 |
ga4_traffic_sources | 流入元/メディア別のトラフィックの内訳です(例:google/organic、direct/none)。 |
ga4_user_demographics | ユーザー属性の内訳:国、デバイス、ブラウザー、言語です。 |
Bing Webmaster Tools(22 個のツール)
| ツール | 説明 |
|---|---|
bing_crawl_issues | クロールに問題がある URL(4xx/5xx エラー、リダイレクトなど)です。 |
bing_crawl_stats | Bing のクロール統計:クロールされたページ数、エラー、リダイレクトなどです。 |
bing_keyword | 完全一致する検索クエリの Bing での表示回数(表示回数+部分一致)です。 |
bing_keyword_stats | Bing でのキーワードの履歴統計:表示回数と推移です。 |
bing_link_counts | Bing による被リンク数が最も多いページです。 |
bing_pages_for_query | Bing で特定の検索クエリに対してランクインしているページです。 |
bing_queries_for_page | 特定のページにトラフィックをもたらす検索クエリです。 |
bing_query_page_detail | 特定の検索クエリとページの組み合わせに関する詳細な統計です。 |
bing_query_traffic | Bing での特定の検索クエリのトラフィックの日別推移です。 |
bing_related_keywords | Bing での検索語句に関連するキーワードと、その表示回数データです。 |
bing_sitemaps | Bing に送信されたすべてのサイトマップ/フィードを一覧表示します。 |
bing_sites | Bing Webmaster Tools アカウントで認証済みのすべてのサイトを一覧表示します。 |
bing_submission_quota | Bing への URL 送信クォータを確認します。 |
bing_submit_sitemap | 新しいサイトマップ/フィードを Bing に送信します。 |
bing_submit_url | インデックス登録のために URL を Bing に送信します。 |
bing_submit_urls_batch | インデックス登録のために URL をまとめて Bing に送信します(最大500件)。 |
bing_top_pages | クリック数、表示回数、平均掲載順位を含む、Bing での上位ページです。 |
bing_top_queries | クリック数、表示回数、平均掲載順位を含む、Bing の検索クエリ上位です。 |
bing_traffic_stats | Bing の日別トラフィック統計:クリック数と表示回数の推移です。 |
bing_url_info | Bing での特定 URL のインデックス登録状況です。 |
bing_url_links | Bing による特定 URL へのインバウンド被リンクです。 |
bing_url_traffic | Bing での特定 URL のトラフィックデータです。 |
Microsoft Clarity(10 個のツール)
| ツール | 説明 |
|---|---|
clarity_breakdown | 自由形式の未加工の内訳(1~3個のディメンション)です。上級ユーザー向けです。キャッシュにない場合はクォータを1単位消費します。 |
clarity_dead_clicks | デッドクリックが発生した上位 URL(操作できない要素のクリック。UX 上の問題を示すシグナル)です。 |
clarity_engagement | URL(または別のディメンション)ごとのエンゲージメント時間とスクロール深度です。 |
clarity_excessive_scroll | 過剰なスクロールが発生した上位 URL(ユーザーが簡単に見つけられない情報を探している状態)です。 |
clarity_popular_pages | 過去数日間の訪問数による上位 URL(人気ページ指標、ディメンション=URL)です。 |
clarity_quickback_clicks | クイックバッククリックが発生した上位 URL(ユーザーがすぐに戻るため、ページが関連性に欠ける状態)です。 |
clarity_quota_status | 1日のクォータ状況です(ローカルカウンターを使用し、API は呼び出しません)。 |
clarity_rage_clicks | レイジクリックが発生した上位 URL(短時間に繰り返されるクリック。ユーザーの不満を示します)。 |
clarity_script_errors | JavaScript エラーとエラークリックが発生した上位 URL(ページ上の技術的な問題)です。 |
clarity_traffic | Microsoft Clarity のトラフィック内訳(セッション数、ボットの割合、セッションあたりのページ数)です。 |
Google AdSense(10 ツール)
| ツール | 説明 |
|---|---|
adsense_alerts | AdSense アカウントのアクティブなアラート(重要度、種類、メッセージ)。 |
adsense_by_ad_unit | 広告ユニットごとのパフォーマンス:収益、インプレッション数、クリック数、CTR、eCPM。 |
adsense_by_country | 国別の収益内訳。収益順に並べ替えます。 |
adsense_by_platform | デバイスのプラットフォーム(デスクトップ、モバイル、タブレット)別の収益内訳。 |
adsense_compare_periods | 2 つの期間を比較し、主要な指標の変化率を表示します。 |
adsense_earnings_by_date | 日別の収益と合計、平均、傾向。 |
adsense_earnings_overview | 収益の概要:推定収益、ページビュー数、インプレッション数、クリック数、RPM、CTR。 |
adsense_payments | AdSense アカウントの最近の支払い。 |
adsense_sites | AdSense アカウントにリンクされたサイト(ドメイン、状態、自動広告)。 |
adsense_top_pages | 収益上位の URL チャネル(AdSense で URL チャネルが設定されている必要があります)。 |
Google Keyword Planner(4 ツール)
| ツール | 説明 |
|---|---|
kp_historical_metrics | 既知のキーワードのリストに対する、実際の過去の Keyword Planner 指標。 |
kp_keyword_ideas | 実際の指標を含むキーワード候補:検索ボリューム、競合状況、ページ上部の入札単価、過去 12 か月の検索ボリューム。 |
kp_status | ソースの状態:ライブラリ、認証情報の充足状況(マスク済み)、ライブ接続テスト。 |
kp_suggest_geo_target | 地名を地域ターゲットの定数 ID に変換します。 |
Open PageRank(1 ツール)
| ツール | 説明 |
|---|---|
pagerank_score | 1 回の呼び出しで最大 100 件のドメインを対象とするドメインオーソリティスコア(0~10)。ローカルで 30 日間キャッシュします。 |
公式の GA4 サーバーや mcp-gsc ではなく、このプロジェクトを選ぶ理由
どちらも優れたツールであり、このプロジェクトもその点を否定するものではありません。Google 公式の analytics-mcp は GA4 のみを対象とし、mcp-gsc は GSC のみを対象としています。1 つのデータソースを中心に利用している場合は、これらをお使いください。このプロジェクトは、無料の SEO ツール一式を横断して作業し、複数のソースをまたぐワークフロー(GSC + GA4 + Bing + Clarity)と、独自の分析ツールを 1 か所で利用したい方を対象としています。
関連項目
local-leads-mcp — 営業先開拓を担うプロジェクトです。OpenStreetMap でウェブサイトのない地域の事業者を見つけて確認できます。API キーは不要です。
ライセンス
MIT。
ラファエレ・ノチェラ が開発・保守しています — フリーランスのウェブ・SEO担当者です。コンサルティングを承ります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。