Most reporting connectors stop at reporting. Here "which creative has the best CTR" and "pause the other one" are both callable, which is either the point or the risk depending on who has the credentials. Two API limits shape what you can ask: reach data is capped at a 92-day range, and demographic data lags 12-24 hours, so today's breakdown will not be there yet.
A server over the LinkedIn Marketing API covering both sides of ad operations: reading performance across accounts, campaigns, creatives, audiences and conversions, and writing campaign groups, campaigns and creatives.
- 25 specialised tools across accounts, campaigns, creatives, audiences, conversions, analytics and campaign management
- list_ad_accounts and get_account_details establish which account you are working in
- get_campaign_performance, get_creative_performance, get_campaign_groups and list_campaigns cover reporting — list_campaigns includes drafts and paused campaigns with zero impressions
- get_audience_demographics breaks results down by job function, industry, seniority, company size, country and region; get_audience_reach returns unique reach, frequency and native audience penetration
- get_conversion_performance, list_conversions, get_lead_gen_performance and list_lead_forms cover conversions and lead generation
- compare_performance contrasts two time periods or entities; get_daily_trends returns a daily time series
- create_campaign_group, update_campaign_group, create_campaign, update_campaign, create_creative, create_inline_ad, update_creative_status and upload_image handle the write side, with delete tools for groups and campaigns
- Every performance report carries the same metric set, including audience penetration and average dwell time
- Demographic results resolve to readable names rather than internal ids
Node.js 18 or higher, and a LinkedIn Developer App attached to a company page with Advertising API access approved — approval typically takes 1-5 business days. Add http://localhost:3000/callback as a redirect URL, then supply LINKEDIN_CLIENT_ID and LINKEDIN_CLIENT_SECRET and run `npm run auth` once. Tokens are stored under your home directory, last 60 days and refresh automatically. The scopes used are r_ads, r_ads_reporting, rw_ads and r_organization_social.
One command plus a key — npx -y linkedin-ads-mcp, then supply credentials
