Microsoft Ads MCP Server: Options When There's No Official One Yet
Microsoft hasn't shipped an official Bing Ads MCP server. Here's how to pick a community implementation, evaluate auth, and integrate Bing data with your agent.

Microsoft hasn’t shipped an official MCP server for Microsoft Advertising. Given how aggressive they’ve been on MCP elsewhere, Azure, Microsoft 365 Copilot, GitHub, this is conspicuous. Until they do, shopping feed and PPC teams running Microsoft Ads have to choose between community implementations, commercial wrappers, or skipping MCP entirely. Here’s how to pick.
Why this matters even without an official release
The same pattern that makes Google Ads MCP and Meta Ads MCP useful applies here: an agent that can read performance data while also writing to your feed catalog turns a multi-tool workflow into a single conversation. Microsoft Advertising has its own quirks (Microsoft Merchant Center, Audience network, LinkedIn integration on the LinkedIn ad accounts side) that benefit from agent-led automation as much as Google or Meta do.
The risk with community servers is the usual one: a dependency that might be abandoned. The mitigation is to choose carefully and to keep the integration narrow enough that you can swap servers later without rewriting your agent prompts.
The current community landscape (May 2026)
Five community servers worth knowing about:
1. duartemartins/microsoft-ads-mcp-server
The most actively maintained general-purpose community server. Covers Search, Audience, Performance Max for Microsoft Advertising, Shopping campaigns, plus the standard reporting objects.
- Stack: Python, MCP SSE transport
- Auth: full OAuth 2.0 with refresh token handling
- License: MIT
- Last commit (May 2026): less than 2 weeks ago
- Notable: handles Microsoft Ads’ refresh-token quirks (the token rotates on each use, which can break naive implementations)
This is the default recommendation for most teams.
2. Synter MCP
Commercial offering that wraps Microsoft Ads alongside 13 other ad platforms (Google Ads, Meta, TikTok, LinkedIn, Reddit, others). Single endpoint, single auth, multi-platform.
- Stack: hosted, no install
- Auth: OAuth-per-platform under Synter’s umbrella account
- License: commercial subscription
- Pros: one endpoint, support contract, consistent tool naming across platforms
- Cons: monthly fee, requires trusting a third party with platform credentials
Worth considering for agencies managing multiple platforms; harder to justify for single-platform sellers.
3. CDataSoftware/bing-ads-mcp-server-by-cdata
Read-only MCP server tied to CData’s JDBC driver for Bing Ads. Translates GAQL-style queries to SQL against the Microsoft Ads schema.
- Stack: Java (via CData’s runtime)
- Auth: through CData’s connection model
- License: requires CData JDBC license
- Pros: well-tested SQL layer, predictable schema
- Cons: read-only, licensing complexity
Good fit if your team already uses CData for warehousing; awkward otherwise.
4. Pipedream Microsoft Advertising MCP
Hosted, no-code-friendly. Pipedream’s MCP wrapper around their existing Microsoft Advertising integrations.
- Stack: hosted
- Auth: OAuth via Pipedream
- License: free tier, paid for higher volume
- Pros: zero install
- Cons: tool coverage is a subset of the full API, latency higher than self-hosted
Suitable for prototyping; revisit for production.
5. Lobehub openclaw-skills/microsoft-ads-mcp
OpenClaw skill packaging that wraps Microsoft Advertising as an agent-callable skill. Good fit if you’re already invested in the OpenClaw agent framework.
How to evaluate a community server
The pre-flight checklist that filters out the abandoned and broken ones:
1. Last commit in the last 90 days. Microsoft’s API ships changes monthly. A server that hasn’t updated in 6 months will fail on at least one endpoint.
2. OAuth 2.0 with refresh tokens, not raw API keys. If the config file asks for an API_KEY field, the server is probably wrapping an undocumented endpoint or storing a long-lived bearer. Both will break on the next Microsoft auth policy update.
3. Refresh token rotation handled. Microsoft rotates refresh tokens on each use. The server must persist the new refresh token after each call. Naive implementations break after the first refresh.
4. Account ID vs Customer ID handled correctly. Microsoft’s API distinguishes between Customer (the billing entity) and Account (the ad account under it). Servers that conflate these throw cryptic permission errors.
5. Rate limiting respected. Microsoft’s API enforces 5 requests/second per app by default. Servers that don’t throttle will trip the limiter mid-conversation.
6. Reporting endpoint coverage. This is where most community servers thin out. The Microsoft Reporting API uses a download model (submit report, poll for completion, download CSV), which is harder to implement than synchronous query APIs. Confirm the server supports the reports you need.
Setup walkthrough (duartemartins server)
Step 1: Microsoft developer token
In the Microsoft Advertising developer portal, apply for a developer token. Sandbox tokens are instant; production tokens require a brief review.
Step 2: Azure AD app registration
Register an app in Azure AD with these settings:
- Account types: Accounts in any organisational directory and personal Microsoft accounts
- Redirect URI: Native client URI (
https://login.microsoftonline.com/common/oauth2/nativeclient) - API permissions: Add Microsoft Advertising (
ads.managescope)
Copy the Application (client) ID and create a Client Secret.
Step 3: First OAuth flow
Run the included get-refresh-token helper:
python -m microsoft_ads_mcp.auth.bootstrap \
--client-id YOUR_CLIENT_ID \
--client-secret YOUR_CLIENT_SECRET \
--tenant common
Open the browser link, sign in with your Microsoft Advertising account, approve the scope. The helper writes the refresh token to a local file.
Step 4: Configure environment
export MICROSOFT_ADS_DEVELOPER_TOKEN="your-dev-token"
export MICROSOFT_ADS_CLIENT_ID="your-azure-app-client-id"
export MICROSOFT_ADS_CLIENT_SECRET="your-azure-app-secret"
export MICROSOFT_ADS_REFRESH_TOKEN="$(cat .refresh_token)"
export MICROSOFT_ADS_CUSTOMER_ID="your-customer-id" # optional, default-account scope
export MICROSOFT_ADS_ACCOUNT_ID="your-account-id" # optional
Step 5: Register with Claude Desktop
{
"mcpServers": {
"microsoft-ads": {
"command": "python",
"args": ["-m", "microsoft_ads_mcp.server"],
"env": {
"MICROSOFT_ADS_DEVELOPER_TOKEN": "your-token",
"MICROSOFT_ADS_CLIENT_ID": "...",
"MICROSOFT_ADS_CLIENT_SECRET": "...",
"MICROSOFT_ADS_REFRESH_TOKEN": "..."
}
}
}
}
Restart Claude. Verify with: “List my Microsoft Advertising accounts.”
Patterns once it’s running
Cross-platform performance review
With Google Ads MCP, Meta Ads MCP, and Microsoft Ads MCP all registered:
“Compare Shopping performance over the last 14 days across Google, Meta, and Microsoft. Highlight any platform where the same SKUs are top performers on one platform and bottom on another.”
Three independent reads, one synthesised answer. Hard to do manually; trivial to do with three MCPs.
Microsoft Merchant Center disapproval triage
“Pull disapproved products from Microsoft Merchant Center for the past 7 days. Group by error type. For each error, suggest a fix that’s compatible with the same SKU’s setup in Google Merchant Centre.”
Pair with a feed manager that handles both Microsoft and Google Merchant Center exports for the write side.
Budget reallocation
“Find Search campaigns in Microsoft Advertising where CPC has increased >20% week-over-week but conversion rate is flat. Suggest a budget pause for review.”
Read-side analysis the MCP handles cleanly; write-side budget changes need a server that supports campaign updates (duartemartins does; CData does not).
What to do until Microsoft ships an official server
Three reasonable strategies:
1. Run a community server in dev, plan for migration. Use duartemartins or Pipedream now. When Microsoft ships the official, swap the endpoint. Your agent prompts should be stable across the swap because both will expose similar tool names.
2. Skip the MCP and integrate via direct API. If your use case is narrow (just reporting, just feed pushes), a small script calling the Microsoft Advertising API directly may be simpler than maintaining an MCP dependency. The MCP value comes from agent-led workflows; if you don’t need that, the overhead isn’t worth it.
3. Use a multi-platform commercial MCP. Synter, OpenClaw, or one of the other unified MCP offerings get you Microsoft coverage as a side effect of multi-platform integration. Most useful for agencies.
For most shopping feed teams the duartemartins option plus an AI Shopping Feeds export feeding Microsoft Merchant Center directly is the cleanest setup until the official server arrives.
Sources
- Microsoft Advertising API, developer documentation
- Microsoft Advertising, OAuth 2.0 setup
- Model Context Protocol specification
- Related read: Google Ads MCP setup guide
Why wait? Try it free today.
Stop managing feeds manually. Start optimising with AI in 30 seconds.
- 100% free forever, no credit card required
- 1 brand, 1 feed, 100,000 products per feed
- Full AI Product Optimisation, Rule Engine, and 200+ channel exports
- Pay only for AI credits when you need them