MCP server for Microsoft Advertising (Bing Ads) — campaigns, keywords, and reports
Bing MCP server exists for a simple reason — assistants are far more useful when they can act on Bing directly instead of describing what you should do. MCP server for Microsoft Advertising (Bing Ads) — campaigns, keywords, and reports.
Production-grade MCP server for Microsoft Advertising (Bing Ads) API. Enables Claude to manage Bing/Microsoft Ads accounts with full campaign, ad group, keyword, and performance analysis capabilities.
Installation goes through your MCP client rather than a global install: point it at mcp-bing-ads on npm and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.
Once Bing is connected, these are the calls the assistant has available:
Context — The Context tool exposed by this serverCampaigns — The Campaigns tool exposed by this serverKeywords — The Keywords tool exposed by this serverTesting — The Testing tool exposed by this serverYou will need 8 environment variables: BING_ADS_DEVELOPER_TOKEN, BING_ADS_CLIENT_ID, BING_ADS_REFRESH_TOKEN, BING_ADS_CLIENT_SECRET, BING_ADS_MCP_WRITE, YOUR_AZURE_CLIENT_ID, YOUR_AZURE_CLIENT_SECRET, YOUR_CUSTOMER_ID. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Bing's toolset — Context, Campaigns, Keywords and 1 more — is a fair guide to whether it matches your workflow. It is maintained by mharnett; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| Context | The Context tool exposed by this server. |
| Campaigns | The Campaigns tool exposed by this server. |
| Keywords | The Keywords tool exposed by this server. |
| Testing | The Testing tool exposed by this server. |
{
"mcpServers": {
"bing-ads": {
"command": "npx",
"args": ["-y", "mcp-bing-ads"],
"env": {
"BING_ADS_DEVELOPER_TOKEN": "your-value",
"BING_ADS_CLIENT_ID": "your-value",
"BING_ADS_REFRESH_TOKEN": "your-value",
"BING_ADS_CLIENT_SECRET": "your-value",
"BING_ADS_MCP_WRITE": "your-value",
"YOUR_AZURE_CLIENT_ID": "your-value",
"YOUR_AZURE_CLIENT_SECRET": "your-value",
"YOUR_CUSTOMER_ID": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| BING_ADS_DEVELOPER_TOKEN | Credential the server authenticates with. | Yes |
| BING_ADS_CLIENT_ID | Configuration value read at startup. | Optional |
| BING_ADS_REFRESH_TOKEN | Credential the server authenticates with. | Yes |
| BING_ADS_CLIENT_SECRET | Credential the server authenticates with. | Yes |
| BING_ADS_MCP_WRITE | Configuration value read at startup. | Optional |
| YOUR_AZURE_CLIENT_ID | Configuration value read at startup. | Optional |
| YOUR_AZURE_CLIENT_SECRET | Credential the server authenticates with. | Yes |
| YOUR_CUSTOMER_ID | Configuration value read at startup. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.