Claude Code
2026.10.25

Claude Codeと各種広告APIの連携手順まとめ!MCPやPythonでの実装法

Claude Codeと広告APIを連携する完全ガイド|MCPとPython実装手順まとめ

目次

結論:Claude Code×広告APIは、MCPとPython連携で「半自動運用」が最適解

Claude CodeとGoogle広告やFacebook広告などの各種広告APIを連携すると、レポート作成、自動入札調整、クリエイティブ案出しなど、多くの作業を半自動化できます。本記事では、MCP(Model Context Protocol)とPythonスクリプトを使って広告APIと安全に連携する手順を、実装寄りに整理して解説します。

「Claude Codeで広告運用を自動化したい」「APIは触ったことがあるが、Claudeとのつなぎ方がわからない」という方に向けて、設定フロー・実装サンプル・運用時の注意点まで体系的にまとめました。

Claude Codeと広告API連携の全体像

Claude Code × 広告API連携とは?

Claude Codeと広告API連携とは、AI開発環境であるClaude Codeから、Google Ads APIやFacebook Marketing APIなどの広告プラットフォームのAPIを呼び出し、入札価格や予算、広告文、レポート取得などを自動・半自動で行う仕組みのことです。

MCPやPythonを間に挟むことで、以下のようなワークフローが実現できます。

  • Claude Code上で「昨日のキャンペーン別CPAを一覧にして」と指示 → 広告APIからデータ取得 → テーブルやグラフで整形
  • 「CPAが目標の1.5倍以上のキャンペーンは入札を10%下げて」と指示 → 条件にマッチするキャンペーンを抽出 → API経由で自動調整
  • 「今週の成果をクライアント向けレポートに要約して」と指示 → データ取得+自然言語によるサマリ生成

MCPとは何か?なぜ使うのか

MCP(Model Context Protocol)とは、ClaudeのようなAIモデルに対して、外部ツールやAPIを安全に接続するための標準プロトコルです。Claudeにとっての「プラグイン」「拡張機能」のような役割を担います。

MCPを使う利点は次の通りです。

  • 安全性:アクセス可能なエンドポイントや引数を明示的に制御できる
  • 再利用性:一度定義したMCPサーバを、複数のプロジェクトやワークスペースで使い回せる
  • 抽象化:広告APIの複雑なパラメータを、Claudeから扱いやすい形にラップできる

そのため本記事では、MCP + Pythonで広告APIをラップし、Claude Codeから簡単に呼べる構造を前提に解説します。

前提準備:必要なアカウント・環境

1. 広告プラットフォーム側の準備

まずは各広告プラットフォームのAPIを利用できる状態にします。例として代表的なものを挙げます。

  • Google広告(Google Ads API)
    • Google Cloudプロジェクトの作成
    • Google Ads APIの有効化
    • OAuthクライアント(Web/デスクトップ)またはサービスアカウントの発行
    • Developer Tokenの申請・承認
  • Meta広告(Facebook / Instagram, Marketing API)
    • Meta for Developersアカウント作成
    • アプリ作成とMarketing API有効化
    • アクセストークン・System Userの発行
  • X広告(旧Twitter Ads API)
    • Developerアカウント審査
    • アプリ作成とAPIキー・トークン取得

それぞれのプラットフォームで「APIクライアントID・シークレット」「アクセストークン」「リフレッシュトークン」等を取得し、.envやSecret Managerに安全に保管しておきます。

2. 開発環境(Claude Code + ローカル/クラウド)

Claude Codeは、コード支援に特化したClaudeのモード/環境です。実際に広告APIにアクセスする処理は、以下いずれかの環境で動作させます。

  • ローカルPC(Python実行環境 + MCPサーバ)
  • クラウドランタイム(例:Railway, Render, Cloud Run, Vercelなど)

最低限必要なものは次の通りです。

  • Python 3.10+(推奨)
  • パッケージマネージャ(pip / uv / poetryなど)
  • Git(バージョン管理とデプロイ用)

実装パターンの比較:MCP vs 直接Python

広告API連携の代表的な構成

構成 概要 メリット デメリット おすすめ用途
MCP + Python(推奨) Pythonで広告APIクライアントを実装し、MCPサーバとして公開。Claude CodeからMCPツールとして呼び出す。 権限範囲を絞れる/再利用しやすい/Claudeから自然言語で柔軟に操作できる 初期実装コストがやや高い 運用を見据えた半自動化ワークフロー
直接Pythonスクリプトのみ Claude Codeはコード生成だけ行い、実行はローカル/サーバ上のPythonスクリプトで実施 実装がシンプル/既存スクリプトを流用しやすい 都度コードを実行する必要/対話的な自動運用には不向き 単発のレポート生成や一括編集
サーバレス関数 + Webhook Cloud FunctionsやLambdaで広告API処理を実装し、ClaudeからはHTTP経由で叩く スケールしやすい/他のシステムとも連携しやすい インフラ構築の知識が必要/MCPよりもセットアップが重い 大規模アカウント・複数クライアント運用

どのパターンを選ぶべきか

小〜中規模の広告運用で、「まずはClaudeから安全にAPIを触れるようにしたい」というケースでは、MCP + Python構成が最もバランスが良くおすすめです。

既にPythonで広告運用スクリプトを持っている場合は、まずはそのコードをClaude Codeに読み込ませて、コードリファクタリングや関数化を手伝ってもらうのも有効です。その上で、よく使う部分だけをMCPツールとして切り出すとスムーズです。

ステップ別:Claude Codeと広告APIをつなぐ実装フロー

ステップ1:Pythonで広告APIクライアントを実装

まずは、Pythonで広告APIを叩く最小構成のスクリプトを用意します。ここでは例として、Google Ads APIで前日のキャンペーン指標を取得するイメージコードを示します(実運用では公式SDKやドキュメントを参照してください)。

from google.ads.googleads.client import GoogleAdsClient
from datetime import date, timedelta

# 認証情報の読み込み(google-ads.yaml など)
client = GoogleAdsClient.load_from_storage("google-ads.yaml")

def fetch_campaign_metrics(customer_id: str):
    ga_service = client.get_service("GoogleAdsService")

    yesterday = date.today() - timedelta(days=1)
    query = f"""
        SELECT
          campaign.id,
          campaign.name,
          metrics.impressions,
          metrics.clicks,
          metrics.conversions,
          metrics.cost_micros
        FROM campaign
        WHERE segments.date = '{yesterday}'
    """

    response = ga_service.search(customer_id=customer_id, query=query)

    results = []
    for row in response:
        results.append({
            "campaign_id": row.campaign.id,
            "campaign_name": row.campaign.name,
            "impressions": row.metrics.impressions,
            "clicks": row.metrics.clicks,
            "conversions": row.metrics.conversions,
            "cost": row.metrics.cost_micros / 1_000_000,  # 円などに換算
        })

    return results

if __name__ == "__main__":
    customer_id = "123-456-7890"
    print(fetch_campaign_metrics(customer_id))

この段階では、「Python単体で広告APIが正しく叩けるか」を確認することが重要です。エラー処理やレートリミット対応なども、まずはこのレイヤーで実装しておきます。

ステップ2:MCPサーバとしてツール化する

次に、上記のPython関数をMCPサーバとして公開し、Claude Codeから呼べるようにします。MCPサーバは、JSON-RPCベースで「ツールの定義」と「実行処理」を提供する小さなサービスです。

実装イメージとしては以下のようになります(実際のコードは利用するMCPフレームワークに合わせて調整してください)。

from mcp.server import Tool, run_mcp_server
from typing import List, Dict
from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage("google-ads.yaml")

def fetch_campaign_metrics(customer_id: str) -> List[Dict]:
    # ...(前述の実装)...
    pass

# ツール定義
fetch_campaign_tool = Tool(
    name="fetch_campaign_metrics",
    description="指定したGoogle Adsアカウントの前日のキャンペーン指標を取得します。",
    input_schema={
        "type": "object",
        "properties": {
            "customer_id": {"type": "string", "description": "Google Ads customer ID (xxx-xxx-xxxx)"}
        },
        "required": ["customer_id"]
    }
)

@fetch_campaign_tool.handler
def handle_fetch_campaign_metrics(params):
    customer_id = params["customer_id"]
    return {"campaigns": fetch_campaign_metrics(customer_id)}

if __name__ == "__main__":
    run_mcp_server([fetch_campaign_tool])

ポイントは以下の通りです。

  • ツール名・説明・入力スキーマを丁寧に定義すると、Claudeが正しく呼び出しやすくなる
  • 返り値はJSONで機械的に扱いやすい構造にする(配列・オブジェクト)
  • APIキーやトークンは環境変数/設定ファイルから読み込み、コードに直書きしない

ステップ3:Claude Code側のMCP設定

MCPサーバを立ち上げたら、Claude Code側でそのサーバを「使えるツール」として登録します。具体的な手順は利用環境によって異なりますが、一般的には次のような設定になります。

# 例:Claude Codeのmcp設定ファイル(イメージ)
{
  "mcpServers": {
    "google_ads_mcp": {
      "command": "python",
      "args": ["path/to/google_ads_mcp_server.py"],
      "env": {
        "GOOGLE_ADS_CONFIGURATION_FILE": "/path/to/google-ads.yaml"
      }
    }
  }
}

設定後、Claude Codeを再起動/リロードすると、「google_ads_mcp」内のツール(fetch_campaign_metrics)が利用可能になり、チャット上で自然言語からツール呼び出しが行えるようになります。

ステップ4:Claudeから実際にツールを呼び出す

設定が完了したら、Claude Code上で次のように指示します。

昨日の Google 広告アカウント「123-456-7890」のキャンペーン別のインプレッション、クリック数、コンバージョン数、コストを一覧にして、
・表形式で整形
・CVRとCPAも計算
・パフォーマンスの高い順に並び替え
までやってください。

Claudeは内部的にfetch_campaign_metricsツールを呼び出し、返ってきたJSONを元にテーブル化と指標計算、分析コメントの生成を行います。

Pythonのみでの実装パターン(MCPなし)

直接Pythonスクリプトを生成・実行する方法

MCPを使わない場合でも、Claude Codeは広告APIのコード生成・修正・デバッグに非常に役立ちます。一般的なフローは次の通りです。

  1. 公式SDK/APIドキュメントを提示し、「この仕様に沿ってキャンペーンレポートを取得するPythonコードを書いて」と指示
  2. Claude Codeが生成したコードをローカル環境で実行し、発生したエラーをそのまま貼り付けて「このエラーを解決して」と依頼
  3. 完成したスクリプトをcronやCloud Schedulerで定期実行し、CSVやBigQueryに保存

このパターンのメリットは、初期セットアップが簡単なことです。一方で、日常的に「会話しながら広告運用を調整する」ワークフローには向かないため、単発レポートや月次定型集計に活用すると良いでしょう。

よくある実装ユースケースと設計のポイント

ユースケース1:レポート自動生成

もっとも取り組みやすいのが、レポート自動生成です。

  • 日次・週次で各キャンペーン/広告グループの指標を取得
  • Claudeに「重要指標のハイライト」「異常値の検知」「要因仮説」を書かせる
  • 結果をスプレッドシートやNotionに書き出す

この場合、MCPツールとしては次のような粒度が扱いやすくなります。

  • get_campaign_report(date_range, group_by)
  • get_keyword_report(date_range, group_by)
  • get_conversion_summary(date_range)

ユースケース2:入札・予算の自動調整

次の段階として、入札価格や予算を自動で微調整する仕組みを作るケースがあります。例:

  • CPAが目標の2倍を超えたキャンペーン → 入札を-10%
  • CVRが高く、予算消化が少ないキャンペーン → 予算を+20%

この場合、MCPツールとしては次のようなAPIを用意します。

  • list_campaigns(filter):条件に合うキャンペーン一覧を取得
  • update_campaign_bid(campaign_id, bid_modifier)
  • update_campaign_budget(campaign_id, budget_modifier)

Claude側には、「このルールに従って対象キャンペーンを抽出し、シミュレーション結果を表で示した上で、問題なければ実行して」といったプロンプトを与えることで、人間が最終確認しながら半自動調整を行えます。

ユースケース3:クリエイティブ改善アイデアの抽出

広告文やバナーのパフォーマンスデータをAPIから取得し、Claudeに改善案やABテスト案を出してもらうことも有効です。

  • 見出し・説明文のCTRを比較し、「高パフォーマンスパターン」「低パフォーマンスパターン」を分類
  • 高パフォーマンスパターンを元に、新しいコピー案を自動生成
  • ブランドトーンや禁止表現をプロンプトに明示し、広告ポリシー違反を避ける

セキュリティ・運用上の注意点

APIキー・トークン管理

広告APIはアカウント予算や入札に直接影響するため、認証情報の管理が最重要です。

  • APIキー・トークンをコードにベタ書きしない(必ず環境変数や設定ファイルで管理)
  • 権限を必要最小限に絞る(読み取り専用の権限アカウントを用意するなど)
  • テスト用アカウントと本番アカウントを分ける

レートリミットと失敗時リトライ

広告APIには必ずレート制限があります。MCPツール実装時には、次のような対策を組み込んでおきましょう。

  • 一定回数以上の連続リクエストを制限する
  • 429/5xxエラー時の指数バックオフリトライ
  • Claude側には「大量データを一度に取得しない」ようプロンプトで注意書きを入れる

人間のレビューを必ず挟む

特に入札・予算変更系のツールは、誤ったプロンプトや予期せぬデータ状態で大きな変更が入るリスクがあります。

  • まずは「提案モード(シミュレーション)」のみを実装し、Claudeには「変更案の一覧」を出させるだけにする
  • 運用に慣れてきたら、特定条件下のみ自動実行を許可する
  • 変更履歴を必ずログに残し、いつでもロールバックできるようにする

よくある質問(FAQ)

Q1. MCPを使わずに、Claudeから直接HTTPで広告APIを叩けますか?

A. 技術的にはHTTPクライアントをツールとして用意することで可能ですが、MCPを利用して広告API専用のツールを定義するほうが安全かつ管理しやすいため推奨です。特に認証やレート制限のロジックを共通化しやすくなります。

Q2. どの広告プラットフォームから対応するべきですか?

A. 運用ボリュームが大きく、レポート工数が重い媒体から優先すると効果が出やすいです。多くの場合、Google広告やMeta広告が最初の候補になります。1媒体でワークフローを固めてから、他媒体に展開するとスムーズです。

Q3. Python以外の言語でもMCPと広告API連携は可能ですか?

A. 可能です。Node.jsやTypeScriptなど、広告APIの公式SDKが提供されている言語であれば同様の構成を組めます。ただし、ドキュメントやサンプルが豊富なPythonは学習コストが低く、最初の実装には特に向いています。

Q4. 小規模アカウントでも導入メリットはありますか?

A. はい。特にレポート自動生成はアカウント規模に関わらず効果があります。手作業でExcelやスプレッドシートにコピペしている時間を削減し、分析や施策検討に時間を割けるようになります。

Q5. 広告アカウントの停止・BANリスクはありませんか?

A. 正しく実装すればリスクは低いですが、過度なリクエストやポリシー違反の広告生成はアカウント停止の原因となりえます。レートリミットと認証周りの仕様をよく確認し、クリエイティブ生成時は各プラットフォームのポリシーをプロンプトで明示してください。

まとめ:まずは「レポート+MCP」の小さな成功体験から

Claude Codeと広告APIの連携は、一見難しく感じられますが、次のステップに分解すれば着実に前進できます。

  • ① Pythonで広告APIを叩く最小スクリプトを作る
  • ② そのスクリプトをMCPサーバとしてラップする
  • ③ Claude CodeからMCPツールを呼び出せるよう設定する
  • ④ レポート生成 → 入札・予算調整 → クリエイティブ改善の順に、ユースケースを広げる

特に、レポート自動生成はリスクが低く、効果を実感しやすい領域です。まずは1つの媒体・1つのレポートから始めて、Claude CodeとMCP、Python連携のワークフローに慣れていくのがおすすめです。

実装や設計に迷ったときは、Claude Codeに既存コードやAPIドキュメントを読み込ませ、「この要件を満たすMCPツールの設計を一緒に考えて」と依頼すると、具体的な関数設計やエラー処理のパターンまで提案してくれます。

より実践的なイメージやコード例については、以下のYouTube動画も参考にしてください。

https://youtu.be/MDKJA5lqELo?si=bX5t8NNeb_ErYWPN

ブログ一覧へ戻る

おすすめ記事

CONTACT US

公式LINEで
無料相談受付中!

専門スタッフがLINEで無料相談を承ります。
初めての方も安心してご利用ください。