LinkedIn Ads MCP Server
LinkedIn Ads MCP Server
An MCP server that connects Claude (Code or Desktop) to the LinkedIn Ads API, giving you natural-language control over campaign management, audience targeting, creative uploads, analytics, and account auditing.
What it does
Category | Capabilities |
Campaigns | Create, list, update campaign groups and campaigns |
Audiences | Create/edit saved audiences, bulk geo-swap targeting |
Creatives | Upload images and videos, create ad creatives |
Analytics | Campaign and creative performance reports, account summaries |
Auditing | 10-point account audit (CTR decline, budget utilization, missing conversion tracking, etc.) |
Bulk ops | Queue and execute batch campaign/group creation and updates |
Best-practice enforcement is built in — audience expansion and audience network are disabled by default on every write operation.
Prerequisites
Node.js 18+
A LinkedIn Developer App with Advertising API access (apply here)
OAuth scopes:
r_ads,rw_ads,r_ads_reporting,r_basicprofileYour LinkedIn Ad Account ID
Quick start
git clone <this-repo-url>
cd linkedin-ads-mcp-server
npm install
cp .env.example .env
# Edit .env with your LinkedIn credentials
npm run build
npm startYou should see: LinkedIn Ads MCP server running — 34 tools registered
Connecting to Claude
Claude Code (CLI)
Add to your ~/.claude/settings.json:
{
"mcpServers": {
"linkedin-ads": {
"command": "node",
"args": ["/path/to/linkedin-ads-mcp-server/dist/index.js"],
"env": {
"LINKEDIN_ACCESS_TOKEN": "your_token",
"LINKEDIN_AD_ACCOUNT_ID": "urn:li:sponsoredAccount:123456789"
}
}
}
}Claude Desktop
Add the same mcpServers block to %APPDATA%/Claude/claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).
Restart Claude after updating the config.
Usage
Once connected, just talk to Claude:
"List my campaign groups"
"Create a new campaign group called Q3 Brand Awareness"
"Run a full account audit"
"Show analytics for my top 5 campaigns this month"
"Swap targeting from UK to US for all saved audiences"
To target a different ad account without restarting, pass it inline:
"List campaigns for account urn:li:sponsoredAccount:987654321"
Full setup guide
See SETUP.md for detailed instructions covering:
Creating a LinkedIn Developer App
Generating OAuth tokens
Linking your ad account
Configuring Claude Code / Claude Desktop
Token refresh for production use
Upgrading to Standard API tier
Token expiration
Access tokens expire after 60 days. See SETUP.md Part 5 for the refresh flow.
License
MIT
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/charltonmediagroup/LICampaignsMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server