Microsoft Advertising (Bing Ads)

com.getmcpadsPublished by getmcpads.comv1.0.1Updated Nov 2, 2026

Microsoft Advertising (Bing Ads) MCP server: 20 read tools, 23 opt-in preview-first writes.

The publisher's own server: Microsoft Learn MCP

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Local stdio MCP server for Microsoft Advertising (Bing Ads): 20 read tools plus 23 opt-in, preview-first write tools for selected accounts.

What you can do
  • List and check the configured accounts, environment, owning customer and currency
  • Read campaigns, ad groups, ads, keywords, targeting, audiences, UET tags, conversion goals, media, videos and Performance Max asset groups
  • Read report schemas and write schemas, plus the server's own coverage and safety guide
  • Submit asynchronous reports and poll them for up to 2,000 rows
  • Create and update campaigns, ad groups, ads, keywords, audiences, targeting, media and conversion goals when writes are enabled, with preview and confirmation
When to use it
Useful when you want an assistant to inspect or report on Microsoft Advertising accounts from a local MCP client, or to prepare and apply campaign changes with a review step. It suits teams that already have their own Microsoft Advertising developer token and OAuth app registration.
Requirements
Runs locally over stdio via the npm package, requiring Node.js 22.23.4, 24.22.1, 26.12.1 or newer on those lines. Needs a Microsoft Advertising developer token, an app client ID, a refresh token with the msads.manage and offline_access scopes, and a required allowlist of account IDs; a customer ID and client secret may also be needed. No OAuth browser flow is included, so tokens must be obtained separately.
Before you install
Holds a developer token, client secret and refresh token in environment variables; the refresh token is kept in memory only and must be re-obtained when Microsoft invalidates it. Enabling writes exposes 23 tools that change live account data; calls preview until confirmed, and setting status to Active can start ad spending. Do not retry uncertain writes automatically, and reconcile the account first. Only allowlisted accounts are reachable.

Installation

In SourceWeft

  1. Open Microsoft Advertising (Bing Ads) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Microsoft Advertising MCP server

Bring your Microsoft Advertising accounts into your MCP client.

Read campaigns, targeting and reports through the Bing Ads API, and prepare changes for explicitly selected accounts.

[Release] [CI] [License: Apache 2.0] [Node]

Watch the film · What's new · Install · Tool reference · Try hosted getmcpads

[Watch the getmcpads film: every ad account in one conversation with your AI assistant]

Play the 45-second film

The film shows hosted getmcpads with sample data. Its MCP Apps, from creative galleries and alerts to Google Sheets exports and bulk launches, belong to the hosted product. This repository provides the standalone native API tools.

20 read tools · 23 write tools, disabled by default.

Run locally with your own Microsoft Advertising credentials and a client that supports stdio MCP, such as Claude Desktop, Claude Code or Cursor. Your requests go directly to the Bing Ads API. For managed connections, including supported ChatGPT setups, use the hosted option.

What's new

v1.0.1: Zod 4 security update · October 26, 2026

  • Update zod to 4.6.7. Every Zod release before 4.6.6 is covered by the high-severity advisory GHSA-mrhx-c7xc-m3w5: validating an oversized constrained collection can exhaust memory, and no Zod 3 release carries the fix. npm audit --omit=dev reports no vulnerability again.
  • Keep the Zod 3 validation behaviour. A parameter default is still validated and completed before use, so an omitted object must still supply its required fields.
  • Keep each parameter's own description when the parameter is optional or has a default. Zod 4 stores a description on the wrapped schema only, so the shared fallback description could otherwise replace it.
  • Tool names, parameters and descriptions published over MCP are unchanged. server-card.json is regenerated with Zod 4's JSON Schema output, which spells some constraints differently.

Earlier releases

VersionDateHighlights
1.0.0October 23, 2026First standalone release

Full changelog · All releases

Source synchronization: SOURCE_SYNC.md.

Upgrade notes

Requires Node.js 22.23.4, 24.22.1, 26.12.1 or a newer release of those lines. These releases carry the October 2026 security fixes; the server prints a warning on stderr when started on an older one. CI covers Node 22, 24 and 26. Writes remain optional and require explicit confirmation. Hosted creative integrations and MCP Apps UI are outside this release.

Install this release

This is a GitHub source release. npm and MCP Registry versions are published separately. The commands below select this exact version; unpinned npx examples later in this document select the version currently available on npm.

bash
git clone --branch v1.0.1 --depth 1 https://github.com/get-mcp-ads/bing-ads-mcp-server.gitcd bing-ads-mcp-servernpm cinpm run build

Configure your MCP client to run node with the absolute path to dist/cli.js and the credentials documented below. Once the package is on npm, the client can run it with npx:

json
{  "mcpServers": {    "microsoft-advertising": {      "command": "npx",      "args": ["-y", "@getmcpads/bing-ads-mcp-server"],      "env": {        "BING_ADS_DEVELOPER_TOKEN": "your-developer-token",        "BING_ADS_CLIENT_ID": "your-app-client-id",        "BING_ADS_REFRESH_TOKEN": "your-refresh-token",        "BING_ADS_CUSTOMER_ID": "1234567",        "BING_ADS_ACCOUNT_IDS": "7654321"      }    }  }}

npm run doctor reports which variables are set, without printing their values, and checks the Node.js release.

Managed connection: use Microsoft Advertising with hosted getmcpads. Connect your account, select the data your assistant may access and use the hosted MCP connection. See the site for current features and plans.

Configuration

Provide these environment variables through the client's secret configuration:

VariablePurpose
BING_ADS_DEVELOPER_TOKENYour developer token. Required in production. The sandbox always uses Microsoft's universal sandbox token.
BING_ADS_CLIENT_IDApplication (client) ID of your Microsoft Entra app registration, or of your Google OAuth client.
BING_ADS_CLIENT_SECRETClient secret. Only for a web app registration, or for Google identity. Leave it unset for a public app.
BING_ADS_REFRESH_TOKENRefresh token granted with the https://ads.microsoft.com/msads.manage and offline_access scopes.
BING_ADS_CUSTOMER_IDCustomer ID that owns the accounts (cid in the web app URL). Required unless every account entry carries its own.
BING_ADS_ACCOUNT_IDSRequired 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.
BING_ADS_ENVIRONMENTproduction (default) or sandbox. Each environment needs its own credentials.
BING_ADS_IDENTITY_PROVIDERMicrosoft (default) or Google, for users who sign in to Microsoft Advertising with a Google account.
BING_ADS_OAUTH_TENANTMicrosoft Entra tenant of the token endpoint. Defaults to common.
BING_ADS_ENABLE_WRITESDefaults to false. Only the exact value true exposes write tools.

Microsoft documents each step: get a developer token, register an application, request user consent and get access and refresh tokens, including the Google identity variant. Use the numeric account ID, not the eight-character account number shown in the web app.

This package accepts a refresh token; it does not run an OAuth browser flow. It renews access tokens a minute before they expire and keeps them, and any rotated refresh token, in memory only. Microsoft can invalidate a refresh token at any time, for example after a password change. A refresh token issued to a public app is only guaranteed to refresh on the device that obtained it. When a refresh fails, obtain a new token and restart the server.

Safety and coverage

Writes preview by default. Review the exact account, target and parameters before repeating the call with confirm: true. Campaigns, ad groups, ads, keywords and asset groups are created Paused. Conversion goals are created Paused and excluded from bidding. Setting Status to Active can start spending, and previews flag it with activationMaySpend. Do not retry a write automatically when its result is uncertain. Read the account and reconcile it first. A confirmed call that returns applied: "partial" applied some items and refused others. Only accounts in BING_ADS_ACCOUNT_IDS are reachable. Account discovery returns only those accounts. Before data is returned or changed, the server reads the account and stops unless Microsoft reports the configured customer as its owner. Unknown arguments are rejected. Native REST fields, report columns and units are preserved. Report values stay strings as Microsoft wrote them, in account currency units. 64-bit IDs stay exact. Reports are asynchronous: bing_get_insights returns a receipt that bing_get_report polls. A receipt is valid for one hour in the server process that issued it. A report returns at most 2,000 rows. Microsoft applies per-user and per-account call limits. Error 117 means the call rate was exceeded; wait for the window to reset.

This server exposes a reviewed subset of the Campaign Management, Customer Management and Reporting services. It does not include billing, bulk upload or Ad Insight operations, account sharing across customers, or change history. Native media reads and writes are included. Hosted creative galleries, visual editors and MCP Apps UI are excluded. Use tools/list or server-card.json for exact schemas and the Microsoft Advertising API reference for provider details.

Microsoft's own MCP server

Microsoft publishes a Microsoft Advertising MCP server, documented on Microsoft Learn: setup guide, tools and use cases. In June 2026, Microsoft announced that the server was expanding to an open pilot with read-only access.

The differences below come from those pages, as of October 23, 2026.

Microsoft's MCP serverThis server
Where it runsRemote endpoint at https://partner.api.bingads.microsoft.com/ext/mcp/vnextLocally, over stdio
AuthenticationMicrosoft Entra ID OAuth in the client, with your own app registration for ChatGPT, Claude and Copilot StudioYour developer token and refresh token in environment variables
Documented tools9 tools, which Microsoft states never modify account data20 read tools and 23 opt-in write tools
Entity readsAccounts, campaigns, ad groups, ads, keywords, asset groups, assets and audience associations, with filtering, sorting, pagination and optional performance metricsAccounts, campaigns, ad groups, ads, keywords, targeting criteria, audiences, UET tags, conversion goals, media, videos and asset groups, as native REST objects
ReportingPerformance metrics on entity tools, asset performance and account change historyThe asynchronous Reporting API with 8 report types and their native columns
WritesNoneCreate and update with preview and confirmation, created Paused

Hosted option

getmcpads for Microsoft Advertising manages the hosted connection and account selection. Hosted and source releases can differ. Contact: [email protected].

Development

bash
npm run typechecknpm run lintnpm run buildnpm testnpm run catalog

All tests run offline with synthetic responses. No live account is changed.

Tools

Every tool is listed below. See server-card.json for complete parameter and output schemas. The bing-ads://guide resource returns the same coverage, safety and limitation notes as bing_get_setup_guide.

20 read tools
ToolPurpose
bing_list_accountsList the configured accounts this user can reach, with name, number, currency, status and owning customer.
bing_health_checkRead the selected account and confirm the environment, owning customer and currency.
bing_get_campaignsRead native campaign configuration, budget, settings and status for one campaign type.
bing_get_ad_groupsRead ad groups and their native configuration in an owned campaign.
bing_get_adsRead ads with their native creative assets, URLs and status, for the ad formats you list.
bing_get_keywordsRead keywords, match types, bids and status from an owned ad group.
bing_get_targetingRead configured campaign or ad group targeting for one criterion type.
bing_get_audiencesRead audience configuration for one audience type.
bing_get_uet_tagsRead UET tracking tag configuration.
bing_get_conversion_goalsRead conversion goal configuration.
bing_get_mediaRead metadata of uploaded media by ID, including image representations.
bing_get_videosRead account video assets and their processing status.
bing_get_asset_groupsRead Performance Max asset groups with their creative configuration and status.
bing_get_geo_fileGet Microsoft's current geographic targeting file link.
bing_list_ad_creativesList image assets linked to account-owned ads and Performance Max asset groups, in a bounded scan.
bing_get_reporting_schemaRead the pinned report types and the native columns each one supports.
bing_get_write_schemaRead the pinned native fields of an entity before a create or update.
bing_get_setup_guideRead this server's coverage, safety rules and known limitations.
bing_get_insightsSubmit an asynchronous report for the selected account and return a receipt.
bing_get_reportPoll and download a submitted report, up to 2,000 rows.
23 write tools

Disabled by default. Calls preview unless explicitly confirmed. Check the configuration and exact schema before use.

ToolPurpose
bing_create_campaignCreate a campaign with native fields, Paused.
bing_update_campaignUpdate a campaign with native fields.
bing_create_ad_groupCreate an ad group in an owned campaign, Paused.
bing_update_ad_groupUpdate an ad group with native fields.
bing_create_adCreate an ad in an owned ad group, Paused.
bing_update_adUpdate an ad with native fields.
bing_create_keywordCreate a keyword in an owned ad group, Paused.
bing_update_keywordUpdate a keyword with native fields.
bing_create_audienceCreate an account-scoped audience.
bing_update_audienceUpdate an account-owned audience.
bing_rename_campaignRename a campaign. The name is the only field that changes.
bing_rename_ad_groupRename an ad group. The name is the only field that changes.
bing_rename_accountRename the selected account through a full account update that keeps every other field.
bing_import_videoImport a video from a public HTTPS file that Microsoft fetches.
bing_update_videoUpdate the description of an account-owned video.
bing_upload_imageUpload image bytes to the account's media library.
bing_create_asset_groupCreate a Performance Max asset group, Paused.
bing_create_uet_tagCreate a UET tag configuration.
bing_create_conversion_goalCreate a conversion goal, Paused and excluded from bidding.
bing_add_campaign_targetingAdd one campaign targeting criterion.
bing_update_campaign_targetingUpdate one campaign targeting criterion.
bing_add_ad_group_targetingAdd one ad group targeting criterion.
bing_update_ad_group_targetingUpdate one ad group targeting criterion.
1 resource
ResourcePurpose
bing-ads://guideCoverage, account rules, safety rules, reporting behaviour and known limitations, as JSON.

License

Apache License 2.0. See NOTICE.

More from getmcpads

Meta Ads · Google Ads · Google Analytics 4 · Google Search Console · TikTok Ads · Pinterest Ads · X Ads

Maintained by Emmanuel at getmcpads. Questions: [email protected].

Source: README.md at commit 0b1f9d6

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the server did not start.

Version history

2
  1. v1.0.1LatestOct 26, 2026
  2. v1.0.0Oct 23, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Microsoft integrations