linkedin-ads について
linkedin-adsは、ClaudeからLinkedIn Campaign Managerのアカウント、キャンペーン、実績データを参照するためのMCPサーバーです。複数アカウントと切り口別レポートに対応し、既定では読み取り専用で、CTRはランディングページのクリック数から算出します。
主な機能
- 01複数のLinkedIn広告アカウント管理
- 02キャンペーンとキャンペーングループの一覧
- 03アカウントとキャンペーンの実績分析
- 04オーディエンス・デバイス・クリエイティブ別のレポート
- 05ランディングページクリックによるCTR算出
活用シーン
- 01複数の広告アカウントをまとめて確認
- 02キャンペーン実績の確認
- 03オーディエンスやデバイス別の結果比較
MCP 対応
MCPクライアントにLinkedIn Campaign Managerのデータ参照ツールを提供します。既定では読み取り専用で、LINKEDIN_ADS_MCP_WRITE=trueにすると変更系ツールの書き込みゲートが有効になります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-linkedin-adsLINKEDIN_CLIENT_IDLinkedIn OAuth app client IDLINKEDIN_CLIENT_SECRETシークレットLinkedIn OAuth app client secretLINKEDIN_ACCESS_TOKENシークレットLinkedIn OAuth access tokenローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LinkedIn Ads MCP サーバー
LinkedIn Campaign Manager API 用の本番環境対応 MCP サーバーです。Claude から LinkedIn 広告アカウント、キャンペーン、広告セット、クリエイティブを読み書きできるようになります。
機能:
- 7 個のツール -- 本番環境でテスト済み
- 複数アカウントの管理(複数の LinkedIn 広告アカウント)
- キャンペーンとキャンペーングループの一覧表示
- アカウントとキャンペーンのパフォーマンス分析
- 柔軟なピボットベースのレポート(デモグラフィック、デバイス、クリエイティブの内訳)
- ランディングページクリック数に基づく CTR(合計クリック数ではありません)
実績:
- ⭐ 本番環境での実績:管理中のアクティブなキャンペーン
- 📊 複数クライアント:Flowspace、Forcepoint、Neon One
- 🔄 CTR の正確性:
landingPageClicksを使用(エンゲージメントを含む合計クリック数ではありません) - ✅ テストカバレッジ:40 件以上のコントラクトテスト
インストール
npm install mcp-linkedin-ads
設定
セキュリティ: .mcp.json ファイルは API 認証情報を含んでいる可能性があるため、共有したり Git にコミットしたりしないでください。.mcp.json を .gitignore に追加してください。
-
OAuth 認証情報を取得します:
- LinkedIn Developer Portal にアクセスします
- 「Sign In with LinkedIn」と「Marketing Developer Platform」を有効にした新しいアプリを作成します
- スコープ:
r_ads、rw_ads、w_member_social、r_organization_social、w_organization_social
-
config.jsonを作成します:cp config.example.json config.json -
認証情報を入力します:
{ "oauth": { "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET" }, "clients": { "default": { "account_id": "YOUR_AD_ACCOUNT_ID", "name": "My Account" } } } -
環境変数を設定します(本番環境では推奨):
export LINKEDIN_ADS_CLIENT_ID="your_client_id" export LINKEDIN_ADS_CLIENT_SECRET="your_client_secret" export LINKEDIN_ADS_ACCESS_TOKEN="your_access_token"
環境変数
| 変数 | 必須 | デフォルト | 用途 |
|---|---|---|---|
LINKEDIN_ADS_CLIENT_ID | はい | -- | OAuth クライアント ID |
LINKEDIN_ADS_CLIENT_SECRET | はい | -- | OAuth クライアントシークレット |
LINKEDIN_ADS_ACCESS_TOKEN | はい | -- | OAuth アクセストークン |
LINKEDIN_ADS_REFRESH_TOKEN | 任意 | -- | OAuth リフレッシュトークン(設定すると自動的にローテーションされます) |
LINKEDIN_ADS_MCP_WRITE | 任意 | false | 変更を伴うツールを公開するには true に設定します。デフォルトは読み取り専用です。 |
デフォルトは読み取り専用
LinkedIn Ads MCP に現在含まれているのは、読み取り専用ツールのみです。
書き込みモードのゲートはすでに設けられており、今後追加される作成/更新/一時停止/有効化/削除ツールは、MCP サーバー環境で
LINKEDIN_ADS_MCP_WRITE=true が設定されていない限り、ListTools から隠され、呼び出し時にも拒否されます。これは Google Ads MCP のゲートと同じ仕組みで、Bing/Reddit/Meta に展開中のパターンにも準拠しています。その目的は、運用担当者が明示的に許可しない限り、LLM への何気ないリクエストによって本番環境の広告アカウントが変更されるのを防ぐことです。
使用方法
サーバーを起動する
npm start
Claude Code で使用する
~/.claude.json に追加します:
{
"mcpServers": {
"linkedin-ads": {
"type": "http",
"url": "http://localhost:3001"
}
}
}
Claude Desktop:(macOS の場合)~/Library/Application Support/Claude/claude_desktop_config.json、または(Windows の場合)%APPDATA%\Claude\claude_desktop_config.json に追加します。
API 呼び出しの例
// Get client context
linkedin_ads_get_client_context({ working_directory: "/path/to/project" })
// List campaigns
linkedin_ads_list_campaigns({ account_id: "511664399" })
// Get campaign performance
linkedin_ads_campaign_performance({
start_date: "2026-01-01",
end_date: "2026-03-31",
time_granularity: "MONTHLY"
})
// Flexible analytics (e.g. by seniority)
linkedin_ads_analytics({
start_date: "2026-03-01",
end_date: "2026-03-31",
pivot: "MEMBER_SENIORITY"
})
重要なデータ規則
CTR の計算
- 必ず
clicks(合計クリック数)ではなく、landingPageClicks(LP クリック数)を使用してください - 合計クリック数にはソーシャルエンゲージメント(いいね、コメント、シェア)が含まれるため、CTR が過大になります
- 正確なキャンペーン分析にはこれが非常に重要です
キャンペーンのステータス
DRAFT— まだ有効ではありませんACTIVE— 配信中ですPAUSED— 手動で一時停止されていますARCHIVED— 過去の記録です
オーディエンスターゲティング
- 柔軟なターゲティング:
flexible_spec配列(項目間は OR ロジック) - 除外ターゲティング:
exclude_spec配列 - 職種、役職レベル、職能、地域に対応しています
CLI ツール
npm run dev # Run in dev mode (tsx)
npm run build # Compile TypeScript
npm test # Run contract tests
アーキテクチャ
ファイル:
src/index.ts— MCP サーバー、OAuth フロー、ツールハンドラーsrc/tools.ts— ツールスキーマの定義src/errors.ts— エラー処理と分類config.json— 認証情報とクライアントのマッピング
エラー処理:
- OAuth エラー:トークンの更新が必要な場合に明確なメッセージを表示します
- レート制限:バックオフを伴う自動再試行を行います(LinkedIn の推奨方式)
- 無効なキャンペーン:作成前に検証します(API クォータを節約)
開発
新しいツールの追加
src/tools.tsでスキーマを定義しますsrc/index.tsのツールディスパッチにハンドラーを追加します.contract.test.tsのコントラクトテストでテストします- ここにドキュメントを追加します
テスト
npm test -- --run # Single run
npm test -- --watch # Watch mode
トラブルシューティング
Config file not found
cp config.example.json config.json
# Fill in your OAuth credentials and account IDs
Missing required credentials
以下を確認してください:
LINKEDIN_ADS_CLIENT_IDとLINKEDIN_ADS_CLIENT_SECRETが設定されている(または config.json に記載されている)config.jsonが存在し、account_idを持つクライアントが少なくとも1つ含まれている- OAuth トークンが有効である(トークンには有効期限があります)
Rate limit exceeded
LinkedIn は厳格なレート制限を適用しています。サーバーには指数バックオフを伴う自動再試行機能が含まれています。制限に達した場合:
- 再試行する前に待ちます
- 可能な場合は操作をまとめます
- クエリの頻度を下げます
CTR seems too low
clicks(すべてのインタラクション)ではなく、landingPageClicks(LP クリック)を使用していることを確認してください。後者にはソーシャルエンゲージメントが含まれるため、CTR が不正確に高くなります。
ライセンス
MIT
コントリビューション
コントリビューションを歓迎します。以下をお願いします:
- 新しいツールのテストを追加する
- 新機能を README に反映する
- 既存のコードスタイルに従う
- バージョンを付けてリリースにタグを付ける
サポート
- 課題: バグや機能リクエストは GitHub の課題へ
- ドキュメント: 詳細な API リファレンスは
docs/フォルダーを参照してください - コミュニティ: GitHub のディスカッションへ
制作者
Mark Harnett — AI を活用した広告管理ツールを開発する、デマンドジェネレーションのリーダーであり、ペイドメディアの実務者です。このサーバーは、複数のクライアントの LinkedIn キャンペーンを管理する中で、Claude にキャンペーン運用、パフォーマンス分析、一括でのクリエイティブ更新を自律的に処理させたいという思いから生まれました。
本番環境でのワークロードを想定して構築されています。回復性に優れた API 呼び出し(サーキットブレーカー、バックオフを伴う再試行、レスポンスの切り詰め)、正確な CTR 算出(総クリック数ではなくランディングページのクリック数を使用)、複数アカウントのサポートを備えています。
Mark のその他のプロジェクト: mcp-bing-ads -- 10 個のツールを備えた Bing/Microsoft Ads MCP サーバー。
最終更新日: 2026-03-13
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。