Microsoft Advertising MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BING_ADS_CLIENT_ID | Yes | Application (client) ID of your Microsoft Entra app registration, or of your Google OAuth client. | |
| BING_ADS_ACCOUNT_IDS | Yes | Required allowlist of account IDs (aid in the web app URL), comma-separated. Write accountId:customerId for an account owned by another customer. Up to 200 accounts. | |
| BING_ADS_CUSTOMER_ID | No | Customer ID that owns the accounts (cid in the web app URL). Required unless every account entry in BING_ADS_ACCOUNT_IDS carries its own customer ID. | |
| BING_ADS_ENVIRONMENT | No | Either production or sandbox. Each environment needs its own credentials. | production |
| BING_ADS_OAUTH_TENANT | No | Microsoft Entra tenant of the token endpoint. | common |
| BING_ADS_CLIENT_SECRET | No | Client secret. Only for a web app registration, or for Google identity. Leave unset for a public app. | |
| BING_ADS_ENABLE_WRITES | No | Defaults to false. Only the exact value true exposes write tools. | false |
| BING_ADS_REFRESH_TOKEN | Yes | Refresh token granted with the https://ads.microsoft.com/msads.manage and offline_access scopes. | |
| BING_ADS_DEVELOPER_TOKEN | Yes | Your Microsoft Advertising developer token. Required in production; the sandbox always uses Microsoft's universal sandbox token. | |
| BING_ADS_IDENTITY_PROVIDER | No | Either Microsoft or Google, for users who sign in to Microsoft Advertising with a Google account. | Microsoft |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bing_list_accountsA | List the accounts in BING_ADS_ACCOUNT_IDS that this user can reach, with name, number, currency, status and owning customer. Discovery pages through every account Microsoft returns, then keeps only the configured ones. |
| bing_health_checkB | Read the selected account and confirm the environment, owning customer and currency. This does not validate every feature. |
| bing_get_campaignsA | Read native campaign configuration, budget, settings and status for one campaign type. Repeat for other types to inventory the whole account. |
| bing_get_ad_groupsA | Read ad groups and their native configuration in an owned campaign. |
| bing_get_adsB | Read ads with their native creative assets, URLs and status. adTypes controls which formats Microsoft returns. |
| bing_get_keywordsB | Read keywords, match types, bids and status from an owned ad group. |
| bing_get_targetingA | Read configured campaign or ad group targeting for one criterion type, inclusions and exclusions included. This is configuration, not demographic performance. |
| bing_get_audiencesA | Read audience configuration for one audience type. An empty audience does not establish that it can be matched or targeted. |
| bing_get_uet_tagsB | Read UET tracking tag configuration. Nothing is installed on a website. |
| bing_get_conversion_goalsA | Read conversion goal configuration. This does not establish that conversions are being recorded. |
| bing_get_mediaA | Read metadata of uploaded media by ID in the selected account, including image representations and their URLs. |
| bing_get_videosA | Read account video assets and processing status. Active means the media is ready, not that an ad is delivering. |
| bing_get_asset_groupsA | Read Performance Max asset groups with their native creative configuration and status. |
| bing_get_geo_fileA | Get Microsoft's current geographic targeting file link. Use its Location IDs; never reuse Google location IDs. The link is returned as data and not downloaded. |
| bing_list_ad_creativesA | List image assets linked to account-owned ads and Performance Max asset groups, with parent IDs and names. Bounded scan; no inferred delivery, video contents or KPI attribution. |
| bing_get_reporting_schemaA | Read the pinned report types and the native columns each one supports, with official references. A column in this list is not evidence of populated data. |
| bing_get_write_schemaB | Read the pinned native fields of a Microsoft Advertising entity. Read each polymorphic object's documentation for its REST Type value. Account eligibility is separate. |
| bing_get_setup_guideA | Coverage, safety rules and known limitations of this server. Read it before claiming that a feature is or is not supported. |
| bing_get_insightsA | Submit an asynchronous Microsoft Advertising report for the selected account and return a receipt. Poll the receipt with bing_get_report. Column compatibility and sandbox data availability apply. |
| bing_get_reportA | Poll and download a report submitted by bing_get_insights for the same account. Returns up to 2,000 CSV rows as strings; narrow the range when truncated is true. Empty sandbox output is not production evidence. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Microsoft Advertising guide |
TDQS
Scored across 20 tools
Most tools map cleanly to distinct Microsoft Advertising entities or actions, and the hierarchy reads (campaigns, ad groups, ads, keywords) are well separated. Minor ambiguity exists around media/videos/ad creatives and the paired bing_get_insights/bing_get_report naming, though descriptions clarify usage.
All tools use a consistent bing_ prefix with snake_case naming and mostly verb_noun structure such as bing_get_campaigns and bing_list_accounts. The few noun-oriented names like bing_health_check and bing_get_setup_guide are minor and still predictable.
Twenty tools is heavy for a single server, even for a broad advertising domain with many entity types. Most tools are distinct, but the set is near the upper bound and includes several schema/guide/health helpers that could feel like overhead.
The surface covers many read/inspection paths and async reporting, but there are no create, update, delete, bid, or budget mutation tools despite a bing_get_write_schema tool implying write readiness. For an advertising management server, this is a significant lifecycle gap.