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) |
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
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