Microsoft Advertising MCP server
Search campaigns and async reporting on the Microsoft Advertising API.
- Tools
- 29
- Read-only
- 15
- Write
- 14
- Off by default
- Destructive
- 4
- Flagged distinctly
Microsoft Advertising through an assistant
The manager-and-account hierarchy, then campaigns, ad groups, ads and keywords beneath it -- including negative keywords at both campaign and ad-group level. Reporting follows Microsoft's own submit-poll-download model, handled as three tools so a long-running report never blocks a conversation. Writes are opt-in per tool, the same as every other ad connector here.
- Manager-account and advertiser-account hierarchy discovery
- Search campaigns, ad groups, ads and keywords
- Negative keywords at ad-group level
- Async report submit, poll and fetch for account and keyword performance
- Account users and account-level settings
- Create and update campaigns, ad groups, ads and keywords (opt-in)
What people actually ask
Real questions, answered from live Microsoft Advertising data.
“Which Microsoft Advertising accounts sit under this manager account?”
microsoft_ads_list_customersmicrosoft_ads_list_accounts“Pull last month's keyword performance for this account.”
microsoft_ads_create_reportmicrosoft_ads_get_report_result“Which keywords are paused, and which ad groups do they sit in?”
microsoft_ads_list_keywordsmicrosoft_ads_list_ad_groups29 Microsoft Advertising tools
Grouped by what they touch. Every tool is individually toggleable — you expose only what you want.
Keywords
7 tools3 read-only · 4 writeShowing 7 of 7 tools
- microsoft_ads_add_negative_keywordsWrite
Add negative keywords to a campaign or ad group to exclude search terms from matching. Negative keywords only restrict spend, never grow it, so this doesn't require confirmSpend.
- microsoft_ads_create_keywordWrite
Add a keyword to an ad group. Always created Paused so it never spends before review.
- microsoft_ads_delete_keywordWriteDestructive
Permanently delete a keyword. This cannot be undone.
- microsoft_ads_get_keywordRead-only
Get a single keyword by ID, with its match type, bid, and status.
- microsoft_ads_list_ad_group_negative_keywordsRead-only
Negative keywords excluded at the ad group level, with match type.
- microsoft_ads_list_keywordsRead-only
List the keywords in an ad group, with match type, bid, and status.
- microsoft_ads_update_keywordWrite
Change a keyword's bid, match type, or pause/enable it. Enabling a keyword under an active ad group, or raising its bid, both increase spend -- requires confirmSpend: true. Because the current bid isn't read back before this call, any bid value provided is treated as a possible increase and gated the same way.
Ad groups
5 tools2 read-only · 3 writeShowing 5 of 5 tools
- microsoft_ads_create_ad_groupWrite
Create a Search ad group under an existing campaign. Always created PAUSED.
- microsoft_ads_delete_ad_groupWriteDestructive
Permanently delete an ad group and everything under it (ads, keywords). IRREVERSIBLE.
- microsoft_ads_get_ad_groupRead-only
Get full details of one ad group by ID.
- microsoft_ads_list_ad_groupsRead-only
Ad groups under a campaign, with status and bid.
- microsoft_ads_update_ad_groupWrite
Rename, pause/enable, or change an ad group's CPC bid. Enabling one under an active campaign resumes its spend -- requires confirmSpend: true.
Ads
5 tools2 read-only · 3 writeShowing 5 of 5 tools
- microsoft_ads_create_adWrite
Create a Responsive Search Ad in an ad group -- Microsoft requires 3-15 headlines (<=30 chars each) and 2-4 descriptions (<=90 chars each). Always created Paused so it never spends before review.
- microsoft_ads_delete_adWriteDestructive
Permanently delete an ad. This cannot be undone.
- microsoft_ads_get_adRead-only
Get a single ad by ID, with its full headline/description set, final URL, and status.
- microsoft_ads_list_adsRead-only
List the ads in an ad group, with their headlines, descriptions, final URL, and status.
- microsoft_ads_update_adWrite
Pause or enable an ad, or edit its headlines/descriptions/final URL. Enabling an ad under an active ad group resumes its spend -- requires confirmSpend: true.
Campaigns
5 tools2 read-only · 3 writeShowing 5 of 5 tools
- microsoft_ads_create_campaignWrite
Create a Search campaign with a new daily budget. Always created PAUSED -- use microsoft_ads_update_campaign with confirmSpend to activate it once you've reviewed the setup.
- microsoft_ads_delete_campaignWriteDestructive
Permanently delete a campaign and everything under it (ad groups, ads, keywords). IRREVERSIBLE.
- microsoft_ads_get_campaignRead-only
Get full details of one campaign by ID.
- microsoft_ads_list_campaignsRead-only
Search campaigns on this account, with status, budget, and bidding strategy.
- microsoft_ads_update_campaignWrite
Rename, pause/enable, or change a campaign's daily budget. Enabling a paused campaign or increasing its budget starts or grows real spend -- requires confirmSpend: true.
Accounts
4 tools4 read-only · 0 writeShowing 4 of 4 tools
- microsoft_ads_get_accountRead-only
Get full details of one AdvertiserAccount -- currency, time zone, pause reason, and parent customer.
- microsoft_ads_list_accountsRead-only
List the AdvertiserAccounts under a Customer (Manager account).
- microsoft_ads_list_account_usersRead-only
List the users associated with the Customer that owns this account, with their roles. Useful for confirming who has access before making changes on an account's behalf.
- microsoft_ads_list_customersRead-only
List the Customers (Manager accounts) the authenticated user can access. This is the entry point for discovering customerId/accountId values -- call this before any other Microsoft Ads tool if you don't already have them.
Reporting
3 tools2 read-only · 1 writeShowing 3 of 3 tools
- microsoft_ads_create_reportWrite
Request an Account Performance or Keyword Performance report. Returns a reportRequestId -- call microsoft_ads_get_report_status to check when it's ready, then microsoft_ads_get_report_result to fetch it. Report generation is asynchronous and can take minutes; this call returns immediately.
- microsoft_ads_get_report_resultRead-only
Fetch and parse a completed report's data. Returns an error if the report hasn't finished -- call microsoft_ads_get_report_status first to check. Large reports are truncated to the first 2000 rows; check the returned total_rows/truncated fields.
- microsoft_ads_get_report_statusRead-only
Poll a report's generation status. Call microsoft_ads_get_report_result once status is Success.
Every tool name and description, machine-readable: /llms-full.txt
You decide what it can touch
The same model applies to every connector, and it defaults closed.
Authorize once
Connect Microsoft Advertising through its own consent screen. Credentials are encrypted with AES-256-GCM and never returned by any API response or tool call.
Writes off by default
A new connection switches on a read-oriented default set only. Every write tool must be enabled deliberately before any client can call it.
Roles enforced server-side
READ, WRITE and ADMIN gate tool invocation on the server, not just in the UI. A READ member's token is refused any write tool.
Connect Microsoft Advertising in minutes
No infrastructure to run. Copy one URL and one token into your client.
- 1Create a free workspace and connect Microsoft Advertising.
- 2Choose which tools to expose — writes stay off until you enable them.
- 3Copy your MCP endpoint URL and bearer token.
- 4Paste them into Claude, Cursor, or any MCP client.
{
"mcpServers": {
"serve-mcp": {
"url": "https://servemcp.com/api/mcp/your-workspace",
"transport": "http",
"headers": {
"Authorization": "Bearer smcp_..."
}
}
}
}More in Advertising & Social
Meta (Facebook & Instagram)
Advertising & SocialFacebook Pages, Instagram and Meta Ads behind a single connection.
Amazon Ads
Advertising & SocialSponsored Products, Brands and Display -- plus the analysis that explains a ROAS drop.
Threads
Advertising & SocialAlso Meta's, but a separate app and a separate login -- so it gets its own connection.
Put Microsoft Advertising in front of your assistant
Free plan, no card required. Connect in minutes.