@channel47/bing-ads-mcp
v1.3.2
Published
Microsoft Advertising (Bing Ads) MCP Server - Query campaigns, reports, and mutate entities via REST API
Downloads
241
Maintainers
Readme
@channel47/bing-ads-mcp
MCP server for Microsoft Advertising (Bing Ads) via REST APIs. Query campaigns, pull performance reports, read Merchant Center product feeds, and mutate entities with dry-run safety built in.
Part of channel47, the open-source ecosystem of profession plugins for Claude Code. Get the newsletter for weekly skill breakdowns from production use.
What It Does
- List accounts under a customer ID with status and pause reason
- List Merchant Center products with feed URLs, pricing, and availability
- Query entities — campaigns, ad groups, keywords, ads with normalized output
- Pull reports — campaign, ad group, keyword, ad, search query, account, asset group performance with configurable date ranges and aggregation
- Mutate entities — campaigns, ad groups, keywords, ads with dry-run preview and explicit approval
Installation
For Claude Code Plugin Users
Bundled with the media-buyer plugin. No manual install required.
Standalone Use
npx @channel47/bing-ads-mcp@latestOr install globally:
npm install -g @channel47/bing-ads-mcp
bing-ads-mcpConfiguration
Required
| Variable | Description |
|----------|-------------|
| BING_ADS_DEVELOPER_TOKEN | Microsoft Advertising API Developer Token |
| BING_ADS_CLIENT_ID | OAuth 2.0 Client ID from Azure AD |
| BING_ADS_REFRESH_TOKEN | OAuth 2.0 Refresh Token |
Optional
| Variable | Description |
|----------|-------------|
| BING_ADS_CLIENT_SECRET | OAuth 2.0 Client Secret (required for confidential client apps, omit for public client apps) |
| BING_ADS_CUSTOMER_ID | Default Customer ID |
| BING_ADS_ACCOUNT_ID | Default Account ID |
Tools
list_accounts
List all accessible Microsoft Advertising accounts.
Parameters:
customer_id(string, optional): Uses default if set
Returns: Array of account objects with ID, name, number, status, and pause reason.
query
Query entity data from Campaign Management API.
Parameters:
entity(string, required):campaigns,ad_groups,keywords, oradsaccount_id(string, optional): Account IDcustomer_id(string, optional): Customer IDcampaign_id(string): Required when queryingad_groupsad_group_id(string): Required when queryingkeywordsoradscampaign_type(string, optional): Filter campaigns by type. When omitted, queries all supported types (Search,Shopping,DynamicSearchAds,Audience,Hotel,PerformanceMax,App)
Example:
{
"entity": "campaigns",
"account_id": "123456789"
}list_products
List products from a Microsoft Merchant Center store via Content API.
Parameters:
store_id(string, required): Merchant Center store IDmax_results(integer, optional): Page size (1-250, default: 250)start_token(string, optional): Pagination token from previous response
Returns: Array of products with link, title, price, availability, offer_id, and related feed attributes.
Example:
{
"store_id": "12345",
"max_results": 100
}report
Generate performance reports with configurable date ranges, aggregation, and column selection. Handles the full async lifecycle: submit, poll, download, ZIP extract, CSV parse.
Parameters:
report_type(string, required):campaign,ad_group,keyword,ad,search_query,account, orasset_groupaccount_id(string, optional)customer_id(string, optional)date_range(string): Predefined range —Today,Yesterday,LastSevenDays,ThisWeek,LastWeek,Last14Days,Last30Days,LastFourWeeks,ThisMonth,LastMonth,LastThreeMonths,LastSixMonths,ThisYear,LastYear(default:LastSevenDays)aggregation(string, optional):Summary,Daily,Weekly,Monthly, orHourly(default: Daily)columns(array, optional): Custom column list (sensible defaults per report type)limit(integer, optional): Max rows to return (default: 100)
Example:
{
"report_type": "search_query",
"account_id": "123456789",
"date_range": "Last30Days",
"aggregation": "Summary"
}mutate
Execute write operations on Microsoft Advertising entities. Dry-run enabled by default.
Parameters:
operations(array, required): Mutation operationsaccount_id(string, optional)customer_id(string, optional)partial_failure(boolean, optional): Enable partial failure mode (default: true)dry_run(boolean, optional): Validate without executing (default: true)
Supported entities: campaigns, ad_groups, keywords, ads, negative_keywords
Supported operations: create, update, remove
Each operation object has entity plus one action key (create, update, or remove) whose value is the payload object.
Example:
{
"operations": [
{
"entity": "campaigns",
"update": {
"Id": "123456789",
"Status": "Paused"
}
}
],
"dry_run": false
}Development
git clone https://github.com/channel47/mcps.git
cd mcps
npm install # workspaces — installs all servers
npm test # runs all server testsLinks
- channel47 — open-source profession plugins for Claude Code
- Build Notes — weekly skill breakdowns from production use
- Media Buyer Plugin — the paid-search toolkit this MCP powers
- NPM Package
- Microsoft Advertising API
- X / LinkedIn / GitHub
License
MIT
