Skip to main content
Glama
get-mcp-ads

LinkedIn Ads MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LINKEDIN_ADS_SCOPESNoOptional. Scopes actually granted to the token. When set, writes refuse to run without rw_ads. Setting it grants nothing.
LINKEDIN_ADS_CLIENT_IDNoClient ID of your LinkedIn app. Used with the refresh token.
LINKEDIN_ADS_LOG_LEVELNodebug, info, warn or error. Logs go to stderr. Defaults to info.info
LINKEDIN_ADS_ACCOUNT_IDSYesRequired. 1 to 100 comma-separated numeric ad account IDs. Every other account is refused before any request, reads included.
LINKEDIN_ADS_API_VERSIONNoLinkedIn-Version header as YYYYMM. Defaults to 202608, the version the hosted gateway runs.202608
LINKEDIN_ADS_ACCESS_TOKENNoMember access token from your own LinkedIn app. Required unless the three refresh variables are set.
LINKEDIN_ADS_CLIENT_SECRETNoClient secret of your LinkedIn app. Used with the refresh token.
LINKEDIN_ADS_ENABLE_WRITESNoDefaults to false. Only the exact value true exposes the write tools.false
LINKEDIN_ADS_REFRESH_TOKENNoProgrammatic refresh token, for apps LinkedIn approved for them. The access token is then renewed in memory.

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

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
linkedin_health_checkA

Read-only LinkedIn Ads health check. Confirms the token works, lists which configured ad accounts it can reach, checks the reporting endpoint and reports the API version header in use, without ever returning the token itself.

linkedin_list_ad_accountsA

List the LinkedIn sponsored ad accounts configured in LINKEDIN_ADS_ACCOUNT_IDS that the authenticated member can reach, with currency, status and serving status. Accounts outside the configured list are never returned. Test accounts are excluded unless asked for.

linkedin_get_account_detailsA

Read one LinkedIn ad account in full, with the members who hold a role on it. Roles decide what the connection can do, so a read that fails on one account and works on another is usually a role, not a scope.

linkedin_get_campaign_groupsA

List campaign groups in a LinkedIn ad account, with budget, schedule and serving status. On LinkedIn the campaign group is where a shared budget and a bid strategy live, so it is the level that explains why sibling campaigns stopped together.

linkedin_get_campaignsB

List campaigns in a LinkedIn ad account with status, objective, format, bid strategy, budget and schedule. On LinkedIn the campaign holds the targeting and the bid, and the creatives under it are the ads.

linkedin_get_creativesA

List the creatives of a LinkedIn ad account, optionally for given campaigns. A creative is the ad itself, and it carries its own intended status, its review verdict and the reasons it is being held back.

linkedin_get_insightsA

Run a LinkedIn Ads report grouped by one pivot. This is the analytics finder: one pivot, any granularity, and up to 20 fields including dateRange and pivotValues. Ratios such as CTR, CPC and CPM do not exist in the API and are computed here from the raw terms.

linkedin_run_statistics_reportA

Run a LinkedIn Ads report grouped by up to three pivots at once. This is the statistics finder, the only way to cross campaign with device, or campaign group with serving location, in a single request.

linkedin_get_demographicsA

Break LinkedIn delivery down by professional demographics: company, company size, industry, seniority, job title, job function or location. These are the numbers LinkedIn is bought for, and they come with limits the tool states alongside the rows.

linkedin_validate_queryA

Check a pivot and metric combination against the LinkedIn reporting rules before spending a call on it. Returns the fields that would actually be sent, the ones LinkedIn would drop, and the twenty field ceiling. Makes no request to LinkedIn.

linkedin_get_revenue_attributionA

Read the LinkedIn Revenue Attribution Report: pipeline and closed won revenue from the CRM, attributed to LinkedIn advertising. Only answers for accounts whose Business Manager has a CRM connected, and only over a window of 30 to 366 days.

linkedin_get_delivery_statusA

Explain why LinkedIn ads are or are not serving, from the account down to the creative. LinkedIn keeps a user status and a system serving status side by side, and it is almost always the second one that says why nothing is running.

linkedin_get_setup_guideA

Read account, supported formats and native LinkedIn write requirements before preparing changes.

linkedin_get_entityA

Read one campaign group, campaign or creative and verify account ownership.

linkedin_find_targetingB

Look up native targeting URNs such as countries by name.

linkedin_list_mediaA

List account image/video library files with download URLs and native processing status; not ad performance.

linkedin_get_mediaA

Refresh one image/video URL and verify library association.

linkedin_list_ad_creativesA

List the images and playable videos used by the ads of an account, with the actual ad names. Separates landing URLs from media URLs. Does not report delivery.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
linkedin-manifest
linkedin-metrics
linkedin-pivots
linkedin-reporting-rules
linkedin-targeting
linkedin-recipes

TDQS

A3.5/5.0

Scored across 18 tools

Disambiguation3/5

Several tools have genuinely close boundaries: linkedin_get_insights vs linkedin_run_statistics_report (reporting, differentiated only by pivot count), and linkedin_get_creatives vs linkedin_list_ad_creatives vs linkedin_list_media vs linkedin_get_media form a cluster of media/creative tools that are easy to confuse. The descriptions do narrate the differences, but the naming alone would not let an agent pick correctly.

Naming Consistency4/5

Consistent linkedin_ prefix with a verb_noun pattern (get_insights, list_ad_accounts, run_statistics_report, validate_query, find_targeting). Minor deviation: several list operations use 'get' (get_campaigns, get_creatives) while others use 'list' (list_media, list_ad_accounts), which blurs read-one vs read-many.

Tool Count4/5

18 tools is on the higher side but each maps to a real LinkedIn Ads entity or report and the domain is genuinely rich. It stays under the 25+ 'heavy' threshold and no tool looks like obvious padding, though the media/creative quartet could likely be consolidated.

Completeness3/5

Read/reporting coverage is strong (insights, multi-pivot stats, demographics, revenue attribution, delivery status, accounts, campaigns, creatives, media, targeting, validation). However the surface is essentially read-only with no create/update/pause/budget operations, and the setup guide's mention of 'write requirements before preparing changes' implies mutations are a known, unaddressed gap for an Ads server.

Maintenance

ActivityNo data
ResponsivenessNo issues