npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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

Readme

@channel47/bing-ads-mcp

npm version License: MIT

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@latest

Or install globally:

npm install -g @channel47/bing-ads-mcp
bing-ads-mcp

Configuration

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, or ads
  • account_id (string, optional): Account ID
  • customer_id (string, optional): Customer ID
  • campaign_id (string): Required when querying ad_groups
  • ad_group_id (string): Required when querying keywords or ads
  • campaign_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 ID
  • max_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, or asset_group
  • account_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, or Hourly (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 operations
  • account_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 tests

Links

License

MIT