LinkedIn Ads MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKEDIN_ACCESS_TOKEN | Yes | Your LinkedIn OAuth access token with required scopes (r_ads, rw_ads, r_ads_reporting, r_basicprofile) | |
| LINKEDIN_AD_ACCOUNT_ID | Yes | Your LinkedIn Ad Account ID (e.g., urn:li:sponsoredAccount:123456789) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_ad_accountsA | List all LinkedIn Ad accounts the authenticated user has access to. Use this to find account IDs when managing multiple accounts. |
| switch_default_accountA | Show which account is currently the default, and explain how to target a different one. |
| list_campaign_groupsA | List all campaign groups in the ad account. Returns names, statuses, budgets. |
| get_campaign_groupA | Get details of a single campaign group by ID. |
| create_campaign_groupB | Create a new campaign group. Validates that budget type is consistent. |
| update_campaign_groupC | Update an existing campaign group. |
| list_campaignsC | List campaigns, optionally filtered by group or status. |
| get_campaignB | Get full details of a single campaign. |
| create_campaignA | Create a new campaign. Enforces best practices: audience expansion OFF, audience network OFF, manual bidding default. |
| update_campaignC | Update a campaign. Re-applies best-practice enforcement. |
| list_saved_audiencesA | List all saved/matched audiences in the ad account. |
| get_saved_audienceC | Get details of a single saved audience. |
| create_saved_audienceC | Create a new saved audience with targeting criteria. |
| update_saved_audienceB | Update a saved audience's targeting criteria or name. |
| delete_saved_audienceC | Delete a saved audience by ID. |
| bulk_geo_swap_audiencesB | Clone a list of saved audiences, replacing one geo-location with another. E.g., swap UK targeting to US and auto-create new audiences with updated names. |
| search_targeting_entitiesB | Search for targeting entities like job titles, skills, industries, companies. |
| get_audience_sizeB | Estimate audience size for given targeting criteria. |
| get_geo_urnsC | Get common geo URNs for targeting (convenience helper). |
| upload_imageA | Upload an image to the LinkedIn media library from a local file or Google Drive link. |
| upload_videoB | Register a video upload to the LinkedIn media library. Returns upload URLs for multipart upload. |
| create_sponsored_postA | Create a sponsored post (dark post) for use as ad content. This post won't appear in the org's feed — it's only used as ad creative. Returns a share URN to pass to create_ad_creative. REQUIRES w_organization_social OAuth scope — if you get ACCESS_DENIED, add this scope to your LinkedIn app and re-authorize. |
| create_full_adA | End-to-end ad creation: upload image + create dark post + create ad creative. Combines upload_image, create_sponsored_post, and create_ad_creative into one call. REQUIRES w_organization_social OAuth scope for post creation. |
| list_creativesC | List ad creatives, optionally filtered by campaign. |
| create_ad_creativeA | Create an ad creative and associate it with a campaign. For sponsored content ads, first create a share/post and pass its URN as contentReference. For lead gen, also provide leadgenFormUrn and callToAction. |
| get_creativeC | Get details of a single creative by ID. |
| get_campaign_analyticsB | Pull performance metrics for one or more campaigns over a date range. |
| get_creative_analyticsC | Pull performance metrics at the creative/ad level. |
| get_account_summaryB | Get a high-level summary of account performance over a date range. |
| get_conversion_trackingB | List all conversion rules configured on the account. |
| get_lead_form_responsesC | Pull lead gen form responses for a specific form. |
| run_full_auditA | Run a comprehensive audit across 10 checks: declining CTR, low budget utilization, missing conversion tracking, maximized delivery, audience expansion, audience network, stale campaigns, creative fatigue, overlapping audiences, missing UTM parameters. |
| check_single_auditA | Run a single audit check by name. Useful for targeted investigation. |
| bulk_create_campaign_groupsA | Queue and execute bulk creation of campaign groups (up to 100). Each item can have unique names, budgets, and schedules. Executes sequentially with rate limiting. Returns a summary with IDs of all created groups. |
| bulk_create_campaignsB | Queue and execute bulk creation of campaigns (up to 100). Supports $ref:group_N references to link to groups created in the same session. Best practices are enforced on every campaign. |
| bulk_update_campaignsB | Bulk update multiple campaigns at once — e.g. pause all, change bids, swap targeting. |
| get_queue_statusC | Check the status of a bulk execution queue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 37 tools
Each tool targets a distinct function or resource: campaigns vs. campaign groups, creatives, audiences, analytics, audit, etc. Even bulk tools are clearly separated by resource type (campaign_groups, campaigns, geo_swap_audiences). No significant overlap.
All tools follow a consistent verb_noun pattern in snake_case (e.g., create_campaign, list_campaign_groups, upload_image). Exceptions like 'switch_default_account' and 'run_full_audit' are still clear and follow the same verb-first structure.
37 tools is high, but the domain of LinkedIn advertising is broad, covering campaigns, groups, audiences, creatives, analytics, audits, media, and bulk operations. However, some tools like check_single_audit and run_full_audit could be merged, and the count could be trimmed without losing functionality.
Covers most CRUD operations for core resources (campaigns, groups, audiences) with creation, read, and update, but lacks delete operations for campaigns, campaign groups, and creatives. Bulk creation is present, but bulk deletion is missing. Audit, analytics, targeting search, and media upload are well covered.