linkedin-campaign-manager-mcp
LinkedIn Campaign Manager MCP
LinkedIn Marketing API用MCPサーバー。Claudeから平易な英語でキャンペーン、パフォーマンス、リード獲得フォームをクエリできます。
広告アカウント、キャンペーン、クリエイティブ、パフォーマンス分析、デモグラフィック、動画分析、予算の進捗管理、期間比較、コンバージョン、リード獲得フォーム、オーディエンス、ターゲティングファセットを網羅した19種類の読み取り専用ツール。LinkedInでスポンサードコンテンツ、リード獲得フォーム、アカウントベースのキャンペーンを運用するB2B有料ソーシャルチーム向けに構築されています。
なぜこれが必要なのか
LinkedIn Marketing APIは、非常に扱いづらいことで知られています。毎月のRosettaバージョニング、文書化されていないフィールドマッピング、分析用のRest.li形式のネストされたクエリパラメータ、そして黙って期限切れになる60日間のアクセストークンなどです。このサーバーは、それらすべてを内部で処理するため、dateRange=(start:(year:...))のようなコードを手書きする代わりに、平易な英語で質問することができます。
LinkedIn広告用の他のオープンソースMCPサーバーで、これほど深い機能を持つものはありません。ほとんどは「キャンペーンの一覧表示」で止まっています。本サーバーには、デモグラフィック、動画視聴完了ファネル、予算の進捗管理、期間比較、そしてMarketoやSalesforceとリードを照合するための個人情報(PII)を含むリード獲得フォームの回答が含まれています。
プロンプトの例
インストール後、Claudeに以下のように尋ねることができます:
「過去28日間のLinkedIn広告の支出傾向を、キャンペーングループ別に教えてください。」
「今月と先月の競合他社攻略キャンペーンのCPLを比較して、どのクリエイティブが数字を動かしましたか?」
「支出額トップのキャンペーンのデモグラフィックを取得して、どの役職や業界がコンバージョンしているか教えてください。」
「先月、最も送信率が高かったリード獲得フォームはどれですか?また、リード単価はいくらでしたか?」
「認知度向上キャンペーンの動画視聴完了ファネルを表示してください。どこで離脱が発生していますか?」
「予算超過のリスクがあるキャンペーンはありますか?すべてのアクティブなキャンペーンの予算進捗を表示してください。」
「昨日のリード獲得フォームの回答を取得して、Marketoと照合できるようにしてください。」
デモ
🎥 解説動画近日公開 — Claude Codeから60秒以内にLinkedInキャンペーンのパフォーマンスをクエリする方法。
ツール
ツール | 機能 |
| ユーザーがアクセス可能なすべての広告アカウント(ステータスと通貨を含む)。 |
| 単一アカウントの詳細:通貨、ステータス、タイプ、請求情報。 |
| アカウント内のキャンペーン。ステータスやキャンペーングループでフィルタリング可能。 |
| キャンペーンの詳細:ターゲティング基準、入札額、予算、目的。 |
| キャンペーングループ(予算や目的を共有するコンテナ)。 |
| 広告クリエイティブ。キャンペーンやステータスでフィルタリング可能。 |
| クリエイティブの詳細:見出し、コピー、URL、画像/動画URN。 |
| 指定期間のインプレッション/クリック/支出/コンバージョン/リード。DAILY/MONTHLY/YEARLY/ALLの粒度。 |
| 企業/企業規模/業界/職種/役職/職位/地域/国別のパフォーマンス。 |
| WoW/MoM/YoY比較。サーバー側で計算された_current/_prior/_delta/_pct_change列を含む。 |
| クリエイティブごとの動画視聴完了ファネル:開始 → 25% → 50% → 75% → 完了 + 完了率。 |
| 設定期間におけるアクティブなキャンペーンの支出対予算消化率。 |
| Insight Tagコンバージョンイベントの定義:タイプ、アトリビューションウィンドウ、有効ステータス。 |
| コンバージョンイベント別のパフォーマンス(CONVERSIONピボット):クリック後対ビュー後の内訳。 |
| DMPセグメント:マッチングオーディエンス、企業リスト、結合/類似セグメントとそのサイズ。 |
| ターゲティング値(役職、スキル、企業、業界、場所、職位)のタイプアヘッド検索。 |
| リード獲得フォーム + 質問設定 + ステータス。 |
| 個人情報(名前、メール、企業、役職)を含む実際のフォーム送信データ。 |
| クリエイティブごとのLGF指標:フォーム開封率、送信率、リード単価。 |
セットアップ
1. インストール
npm install -g linkedin-campaign-manager-mcpまたは、クローンしてローカルでビルド:
git clone https://github.com/ZLeventer/linkedin-campaign-manager-mcp
cd linkedin-campaign-manager-mcp
npm install
npm run build2. LinkedIn Developerアプリの作成
Marketing APIは制限されています。特定の製品承認を受けたLinkedIn Developerアプリが必要です:
developer.linkedin.com にアクセスし、アプリを作成(会社ページに関連付けます)。
Productsタブ — 以下へのアクセスをリクエストします:
Marketing Developer Platform(r_ads,r_ads_reportingを含む)Lead Gen FormsまたはCommunity Management API(r_ads_leadgen_automationを含む)
LinkedInがアプリのアクセス権を手動で審査します(通常2〜6週間)。
Authタブ — Authorized Redirect URLs に
http://127.0.0.1:53123を追加します。 (LINKEDIN_OAUTH_PORTを変更した場合は、そのポート番号を使用してください)。Authタブから Client ID と Client Secret をコピーします。
製品承認がない場合、すべてのAPI呼び出しは403を返します。サーバーは正常にコンパイルおよび起動しますが、403はアプリレベルの権限の問題であり、コードの問題ではありません。
3. 環境設定
cp .env.example .env
# edit .env with your LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET,
# LINKEDIN_DEFAULT_AD_ACCOUNT (numeric ID from Campaign Manager URL)4. 認証(初回のみのOAuthフロー)
npm run authこれにより、ポート53123(または LINKEDIN_OAUTH_PORT)でローカルHTTPサーバーが開き、ターミナルに認証URLが表示され、OAuthコールバックを待機します。ブラウザで承認すると、コードがアクセストークンと365日間のリフレッシュトークンと交換され、token.json(モード0600)に保存されます。
リフレッシュトークンが期限切れになった場合(365日後)のみ、npm run auth を再実行する必要があります。
5. Claude Code(または任意のMCPクライアント)への接続
~/.claude.json の mcpServers に以下を追加します:
{
"mcpServers": {
"linkedin": {
"command": "linkedin-campaign-manager-mcp",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret",
"LINKEDIN_TOKEN_PATH": "/absolute/path/to/token.json",
"LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789",
"LINKEDIN_API_VERSION": "202504"
}
}
}
}ソースから実行する場合:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-campaign-manager-mcp/dist/index.js"],
"env": {
"LINKEDIN_CLIENT_ID": "...",
"LINKEDIN_CLIENT_SECRET": "...",
"LINKEDIN_TOKEN_PATH": "/path/to/token.json",
"LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789"
}
}
}
}Claude Codeを再起動します。19個のツールが linkedin サーバーの下に表示されます。
環境変数
変数 | 必須 | デフォルト | 説明 |
| はい | — | OAuthアプリのクライアントID |
| はい | — | OAuthアプリのクライアントシークレット |
| いいえ |
| トークンファイルの読み書きパス |
| 推奨 | — | 数値のアカウントID。 |
| いいえ |
| OAuthリダイレクト用のループバックポート |
| いいえ |
| LinkedIn Rosetta APIバージョン (YYYYMM) |
URNの取り扱い
LinkedInのリソースはURNで識別されます:urn:li:sponsoredAccount:123、urn:li:sponsoredCampaign:456 など。
すべてのツール入力は、数値IDのみ、または完全なURNのいずれかを受け入れます。クライアントが数値IDを自動的にラップします。数値IDはキャンペーンマネージャーのURL(/accounts/<id>/、/campaigns/<id>/)に表示されます。
日付入力
すべての日付パラメータは以下を受け入れます:
入力 | 意味 |
| リテラルISO日付 |
| そのままの意味 |
| 今日のN日前 |
デフォルト範囲:28daysAgo → yesterday。
LinkedIn特有の注意点
APIバージョンの変更
LinkedIn Rosettaは月次バージョン(202504 = 2025年4月)を使用します。バージョンはリリースから約12ヶ月後に廃止され、その時点で 410 Gone エラーが発生します。四半期ごとに LINKEDIN_API_VERSION を更新してください。バージョニングのドキュメントを参照してください。
分析クエリの形式
/adAnalytics は、単純なISO文字列ではなく、Rest.li形式のネストされたパラメータを使用します:
dateRange=(start:(year:2024,month:10,day:1),end:(year:2024,month:10,day:31))
campaigns=List(urn:li:sponsoredCampaign:123,urn:li:sponsoredCampaign:456)これは内部的に dateRangeParam() と liGetRaw() によって処理されます。サーバーを拡張する場合は、手動で構築したURLを使用して liGetRaw() 経由で分析呼び出しをルーティングしてください。URLSearchParams がネストされた括弧を壊すため、分析エンドポイントには liGet() を使用しないでください。
分析データの遅延
LinkedInの分析データは、ほとんどの指標で2〜6時間、コンバージョンデータでは最大24時間の遅延が発生します。昨日の数値は通常完了していますが、今日の数値は部分的です。
60日間のアクセストークン、365日間のリフレッシュトークン
アクセストークンは60日で期限切れになり、リフレッシュトークンは365日で期限切れになります。クライアントは必要に応じて、リクエストごとに自動的にアクセストークンを更新します。リフレッシュトークンが期限切れになった場合は、npm run auth を再度実行してください。
リード獲得フォームの回答に含まれる個人情報(PII)
li_get_leadgen_responses は、名前、メール、企業、役職といった実際のリードの個人情報を返します。出力は機密情報として扱ってください。共有ログ、暗号化されていないストレージ、または公開チャンネルには書き込まないでください。LinkedInのデータ利用ポリシーでは、リードが積極的に同意していない限り、受信から90日以内にリードの回答を削除することが義務付けられています。このツールは、承認されたCRM照合(Marketo/SFDC)を目的としています。
レート制限
LinkedInは厳密なレート制限数を公開していません。実際には、アプリごとに1分あたり約100回の分析呼び出しでスロットリングが発生すると予想してください。429エラー時の再試行機能は組み込まれていません。制限に達した場合は、呼び出し頻度を減らすか、クライアント側で結果をキャッシュしてください。
このサーバーを使用すべきでない場合
キャンペーン、予算、クリエイティブの作成または編集 — 設計上、読み取り専用です。キャンペーン作成には自動化するには失敗モードが多すぎるため、キャンペーンマネージャーのUIを使用してください。
リアルタイムのインプレッションデータ — ほぼリアルタイムのデータには、LinkedIn Insight Tag + GA4を使用してください。
任意のターゲティング基準に対するオーディエンスサイズの推定 — アドホックなサイズ測定には、キャンペーンマネージャーのオーディエンスビルダーUIを使用してください。
li_get_audience_insightsは、保存済み/アップロード済みのセグメントのサイズのみを返します。
ライセンス
MIT © 2026 Zach Leventer
Maintenance
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
233 tools for Google, Microsoft, TikTok, LinkedIn Ads in Claude or ChatGPT. Writes need approval.
Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZLeventer/linkedin-campaign-manager-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server