Bing Ads

io.github.mharnett由 GitHub 帳號 mharnett 發布v1.0.2更新於 Oct 24, 2026

MCP server for Microsoft Advertising (Bing Ads) — campaigns, keywords, and reports

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

針對 Microsoft Advertising(Bing Ads)的在地 MCP 伺服器,讓助理列出廣告活動、廣告群組與關鍵字、取得成效報表,並可選擇修改預算或暫停關鍵字。

可以做什麼
列出廣告活動與廣告群組,並透過工作目錄脈絡呼叫辨識帳戶。依日期範圍讀取廣告活動成效指標,例如 ROI、轉換、點擊率與單次點擊費用。分析關鍵字成效,包含品質分數、預期點擊率、廣告關聯性與到達網頁體驗。報告觸發廣告的搜尋詞,並列出共用排除關鍵字清單。啟用寫入模式後,可暫停關鍵字、更新廣告活動每日預算與新增共用排除關鍵字。
適用情境
適合付費搜尋從業人員讓助理檢視 Bing/Microsoft Ads 的廣告活動與關鍵字表現、診斷品質分數,並在對話中做小幅預算或關鍵字調整。
執行需求
以 npm 套件(mcp-bing-ads)在本機 Node.js 上執行,僅限桌面端。需要註冊 Azure AD 應用程式並授予 Microsoft Advertising API 權限,並設定環境變數 BING_ADS_CLIENT_ID、BING_ADS_DEVELOPER_TOKEN 與 BING_ADS_REFRESH_TOKEN;機密用戶端可選用 BING_ADS_CLIENT_SECRET。README 另提到需要含客戶與帳戶 ID 的 config.json。
安裝前請注意
需要 OAuth 憑證與開發人員權杖,README 提醒不要分享或提交含憑證的設定檔。除非將 BING_ADS_MCP_WRITE 設為 true,否則寫入工具會被隱藏並拒絕呼叫;這些工具會變更真實廣告帳戶(暫停關鍵字、修改預算、新增排除詞),可能影響花費。README 建議使用完後取消寫入模式。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Bing Ads,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Bing Ads MCP Server

[npm version] [npm downloads] [GitHub stars] [License: MIT]

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.

Features:

  • 10 tools -- production-tested
  • Campaign, ad group, and keyword management
  • Keyword performance analysis with quality scores
  • Search term reporting & bid automation
  • Budget & bid strategy optimization
  • Campaign-level budget updates
  • Negative keyword management (shared + campaign-level)

Note: ⚠️ First open-source Bing Ads MCP with comprehensive tooling

  • No serious alternatives exist in the ecosystem
  • Battle-tested across multiple accounts

Installation

bash
npm install mcp-bing-ads

Configuration

Security: Never share your .mcp.json file or commit it to git -- it may contain API credentials. Add .mcp.json to your .gitignore.

  1. Get OAuth credentials:

    • Go to Microsoft Azure Portal
    • Create an Azure AD app registration
    • Grant API permissions: Microsoft Advertising API
    • Scopes: https://ads.microsoft.com/msads.manage offline_access
  2. Create config.json:

    bash
    cp config.example.json config.json
  3. Fill in your credentials:

    json
    {
      "oauth": {
        "client_id": "YOUR_AZURE_CLIENT_ID",
        "client_secret": "YOUR_AZURE_CLIENT_SECRET"
      },
      "clients": {
        "default": {
          "customer_id": "YOUR_CUSTOMER_ID",
          "account_id": "YOUR_ACCOUNT_ID",
          "name": "My Account"
        }
      }
    }
  4. Set environment variables (recommended):

    bash
    export BING_ADS_DEVELOPER_TOKEN="your_developer_token"
    export BING_ADS_CLIENT_ID="your_client_id"
    export BING_ADS_REFRESH_TOKEN="your_refresh_token"
    # Optional:
    export BING_ADS_CLIENT_SECRET="your_client_secret"
    # Optional: opt into mutating tools (read-only by default)
    export BING_ADS_MCP_WRITE="true"

Environment Variables

VariableRequiredDefaultDescription
BING_ADS_DEVELOPER_TOKENyes--Microsoft Advertising developer token
BING_ADS_CLIENT_IDyes--Azure AD app client ID
BING_ADS_REFRESH_TOKENyes--OAuth refresh token
BING_ADS_CLIENT_SECRETno--Azure AD app client secret (if confidential client)
BING_ADS_MCP_WRITEnofalseSet to true, 1, or yes to expose mutating tools (pause/update/add). Any other value -- or unset -- keeps the server read-only.

Read-only by default

Mutating tools (bing_ads_pause_keywords, bing_ads_update_campaign_budget, bing_ads_add_shared_negatives) are hidden from the tool list and refused at call time unless BING_ADS_MCP_WRITE=true is set in the server environment. This is a safety gate against casual write actions -- for example, pausing a keyword or editing a budget based on a throwaway chat message. To make write changes, set the env var explicitly in your .mcp.json or shell profile for the session that needs it, then unset it afterwards. Read tools (list/report/performance) are always available.

Usage

Start the server

bash
npm start

Use with Claude Code

Add to ~/.claude.json:

json
{
  "mcpServers": {
    "bing-ads": {
      "type": "http",
      "url": "http://localhost:3002"
    }
  }
}

Claude Desktop: Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Example API Calls

typescript
// Get client context
bing_ads_get_client_context({ working_directory: "/path/to/project" })

// List campaigns
bing_ads_list_campaigns()

// Get campaign performance
bing_ads_get_campaign_performance({
  start_date: "2026-01-01",
  end_date: "2026-03-01"
})

// Get keyword performance
bing_ads_keyword_performance({
  start_date: "2026-02-01",
  end_date: "2026-03-01"
})

// Create negative keywords
bing_ads_add_shared_negatives({
  shared_list_id: "list_123",
  keywords: [
    { text: "cheap", match_type: "Phrase" },
    { text: "discount", match_type: "Exact" }
  ]
})

API Reference

Context

  • bing_ads_get_client_context(working_directory) -- Detect account from working directory

Campaigns

  • bing_ads_list_campaigns() -- List all campaigns
  • bing_ads_get_campaign_performance(start_date, end_date) -- Campaign metrics
  • bing_ads_update_campaign_budget(campaign_id, daily_budget) -- Update daily spend

Ad Groups

  • bing_ads_list_ad_groups(campaign_id) -- List ad groups in campaign

Keywords

  • bing_ads_keyword_performance(start_date, end_date, [campaign_ids]) -- Keyword metrics & QS
  • bing_ads_search_term_report(start_date, end_date) -- Search terms that triggered ads
  • bing_ads_pause_keywords(ad_group_id, keyword_ids) -- Pause keywords

Negative Keywords

  • bing_ads_list_shared_entities([type]) -- List shared negative lists
  • bing_ads_add_shared_negatives(list_id, keywords) -- Add to shared list

Performance Reports

  • Campaign performance (ROI, conversions, CTR, CPC)
  • Keyword performance (QS, expected CTR, ad relevance, landing page experience)
  • Search term insights (which queries are converting)

Key Metrics & Definitions

Quality Score (QS): 1-10 rating of keyword quality

  • 1-3: Poor
  • 4-6: Average
  • 7-10: Excellent

Expected CTR: 1-9 rating of expected click-through rate Ad Relevance: 1-9 rating of relevance to search query Landing Page Experience: 1-9 rating of landing page quality

CLI Tools

bash
npm run dev                 # Run in dev mode (tsx)
npm run build             # Compile TypeScript
npm test                  # Run contract tests

Architecture

Files:

  • src/index.ts — MCP server, OAuth flow, tool handlers
  • src/tools.ts — Tool schema definitions
  • src/errors.ts — Error handling & classification
  • config.json — Credentials & client mapping

Error Classification:

  • Authentication errors (token expired)
  • Rate limit errors (retry with backoff)
  • Service errors (API temporarily unavailable)
  • Validation errors (bad input)

Development

Adding a New Tool

  1. Define schema in src/tools.ts
  2. Add handler in src/index.ts tool dispatch
  3. Add contract test in .contract.test.ts
  4. Test with npm test

Testing

bash
npm test -- --run        # Single run
npm test -- --watch      # Watch mode

Troubleshooting

Config file not found

bash
cp config.example.json config.json
# Fill in your Azure credentials and Bing Ads IDs

Missing required credentials

Check that:

  • BING_ADS_DEVELOPER_TOKEN, BING_ADS_CLIENT_ID, and BING_ADS_REFRESH_TOKEN are set
  • BING_ADS_CLIENT_SECRET is set (if using a confidential app)
  • OAuth token is valid (expires, may need refresh)

Rate limit exceeded

Bing Ads applies rate limits. The server handles common retries automatically. If you hit limits frequently:

  • Batch operations when possible
  • Reduce query frequency
  • Wait before retrying

Quality Score is 0

QS = 0 means keyword hasn't been shown enough times yet. Increase impressions or wait for more data.

License

MIT

Contributing

Contributions welcome! Please:

  1. Add tests for new features
  2. Update README
  3. Follow existing code style
  4. Tag releases

Support

  • Issues: GitHub issues for bugs/feature requests
  • Docs: See docs/ folder for detailed API reference
  • Community: GitHub Discussions

Built By

Mark Harnett — Demand generation leader and paid media practitioner building AI-powered ad management tools. This is the first comprehensive open-source Bing Ads MCP server — born from managing real campaigns across multiple accounts and wanting Claude to do the heavy lifting.

Built with production workloads in mind: resilient API calls (circuit breakers, retry with backoff, response truncation), full Quality Score diagnostics, and negative keyword management at scale.

Also by Mark: mcp-linkedin-ads -- LinkedIn Ads MCP server with 7 tools.

Last Updated: 2026-03-13

來源:README.md,提交 9b9be61

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分