Skip to content

Microsoft Ads MCP

Verified

Create and manage Microsoft Advertising campaigns (Bing Ads / DuckDuckGo Ads) via MCP server - campaigns, ad groups, keywords, ads, and reporting

920 downloads
$ Add to .claude/skills/

About This Skill

# Microsoft Ads MCP Server

Create and manage Microsoft Advertising campaigns programmatically. This MCP server enables full campaign management for Bing and DuckDuckGo search ads.

Why Microsoft Advertising?

  • DuckDuckGo Integration - Microsoft Advertising powers DDG search ads, reaching privacy-conscious users
  • Lower CPCs - Often 30-50% cheaper than Google Ads
  • Bing + Yahoo + AOL - Access to the full Microsoft Search Network
  • Import from Google - Easy migration of existing campaigns

Setup

1. Install the MCP server

```bash git clone https://github.com/Duartemartins/microsoft-ads-mcp-server.git cd microsoft-ads-mcp-server pip install -r requirements.txt ```

2. Get credentials

  1. Microsoft Ads Account: Sign up at ads.microsoft.com
  2. Developer Token: Apply at developers.ads.microsoft.com
  3. Azure AD App: Create at portal.azure.com with redirect URI `https://login.microsoftonline.com/common/oauth2/nativeclient`

3. Configure mcporter

Add to `~/.mcporter/mcporter.json`:

```json { "mcpServers": { "microsoft-ads": { "command": "python3", "args": ["/path/to/microsoft-ads-mcp-server/server.py"], "type": "stdio", "env": { "MICROSOFT_ADS_DEVELOPER_TOKEN": "your_token", "MICROSOFT_ADS_CLIENT_ID": "your_azure_app_client_id" } } } } ```

4. Authenticate

```bash mcporter call microsoft-ads.get_auth_url # Open URL in browser, sign in, copy redirect URL mcporter call microsoft-ads.complete_auth '{"redirect_url": "https://login.microsoftonline.com/common/oauth2/nativeclient?code=..."}' ```

Available Tools

Account Management ```bash mcporter call microsoft-ads.search_accounts ```

Campaign Operations ```bash # List campaigns mcporter call microsoft-ads.get_campaigns

# Create campaign (starts paused for safety) mcporter call microsoft-ads.create_campaign '{"name": "My Campaign", "daily_budget": 20}'

# Activate or pause mcporter call microsoft-ads.update_campaign_status '{"campaign_id": 123456, "status": "Active"}' ```

Ad Groups ```bash # List ad groups mcporter call microsoft-ads.get_ad_groups '{"campaign_id": 123456}'

# Create ad group mcporter call microsoft-ads.create_ad_group '{"campaign_id": 123456, "name": "Product Keywords", "cpc_bid": 1.50}' ```

Keywords ```bash # List keywords mcporter call microsoft-ads.get_keywords '{"ad_group_id": 789012}'

# Add keywords (Broad, Phrase, or Exact match) mcporter call microsoft-ads.add_keywords '{"ad_group_id": 789012, "keywords": "buy widgets, widget store", "match_type": "Phrase", "default_bid": 1.25}' ```

Ads ```bash # List ads mcporter call microsoft-ads.get_ads '{"ad_group_id": 789012}'

# Create Responsive Search Ad mcporter call microsoft-ads.create_responsive_search_ad '{ "ad_group_id": 789012, "final_url": "https://example.com/widgets", "headlines": "Buy Widgets Online|Best Widget Store|Free Shipping", "descriptions": "Shop our selection. Free shipping over $50.|Quality widgets at great prices." }' ```

Reporting ```bash # Submit report request mcporter call microsoft-ads.submit_campaign_performance_report '{"date_range": "LastWeek"}' mcporter call microsoft-ads.submit_keyword_performance_report '{"date_range": "LastMonth"}' mcporter call microsoft-ads.submit_search_query_report '{"date_range": "LastWeek"}' mcporter call microsoft-ads.submit_geographic_report '{"date_range": "LastMonth"}'

# Check status and get download URL mcporter call microsoft-ads.poll_report_status ```

Other ```bash mcporter call microsoft-ads.get_budgets mcporter call microsoft-ads.get_labels ```

Complete Workflow Example

```bash # 1. Check account mcporter call microsoft-ads.search_accounts

# 2. Create campaign mcporter call microsoft-ads.create_campaign '{"name": "PopaDex - DDG Search", "daily_budget": 15}' # Returns: Campaign ID 123456

# 3. Create ad group mcporter call microsoft-ads.create_ad_group '{"campaign_id": 123456, "name": "Privacy Keywords", "cpc_bid": 0.75}' # Returns: Ad Group ID 789012

# 4. Add keywords mcporter call microsoft-ads.add_keywords '{ "ad_group_id": 789012, "keywords": "privacy search engine, private browsing, anonymous search", "match_type": "Phrase", "default_bid": 0.60 }'

# 5. Create ad mcporter call microsoft-ads.create_responsive_search_ad '{ "ad_group_id": 789012, "final_url": "https://popadex.com", "headlines": "PopaDex Private Search|Search Without Tracking|Privacy-First Search Engine", "descriptions": "Search the web without being tracked. No ads, no profiling.|Your searches stay private. Try PopaDex today." }'

# 6. Activate campaign mcporter call microsoft-ads.update_campaign_status '{"campaign_id": 123456, "status": "Active"}'

# 7. Check performance after a few days mcporter call microsoft-ads.submit_campaign_performance_report '{"date_range": "LastWeek"}' mcporter call microsoft-ads.poll_report_status ```

Match Types

| Type | Syntax | Triggers | |------|--------|----------| | Broad | `keyword` | Related searches, synonyms | | Phrase | `"keyword"` | Contains phrase in order | | Exact | `[keyword]` | Exact match only |

Report Columns

Campaign Reports: CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, Revenue

Keyword Reports: Keyword, AdGroupName, CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, QualityScore

Search Query Reports: SearchQuery, Keyword, CampaignName, Impressions, Clicks, Spend, Conversions

Geographic Reports: Country, State, City, CampaignName, Impressions, Clicks, Spend, Conversions

Tips

  1. Start paused - Campaigns are created paused by default. Review before activating.
  2. Use Phrase match - Good balance between reach and relevance for most keywords.
  3. Multiple headlines - RSAs need 3-15 headlines (30 chars each) and 2-4 descriptions (90 chars each).
  4. Check search queries - Review actual search terms to find negative keywords.
  5. Geographic targeting - Use geo reports to optimize by location.

Credits

MCP Server: github.com/Duartemartins/microsoft-ads-mcp-server

Built with FastMCP and the Bing Ads Python SDK

Use Cases

  • Create and manage Microsoft Advertising campaigns via MCP server
  • Configure ad groups, keywords, and ad copy for Bing and DuckDuckGo Ads
  • Pull campaign performance reports from Microsoft Advertising
  • Automate ad management workflows through MCP-compatible AI agents
  • Manage Microsoft Ads budgets and bidding strategies programmatically

Pros & Cons

Pros

  • +Compatible with multiple platforms including claude-code, openclaw
  • +Well-documented with detailed usage instructions and examples
  • +Strong community adoption with a large number of downloads
  • +Open source with permissive licensing

Cons

  • -Requires API tokens or authentication setup before first use
  • -No built-in analytics or usage metrics dashboard

FAQ

What does Microsoft Ads MCP do?
Create and manage Microsoft Advertising campaigns (Bing Ads / DuckDuckGo Ads) via MCP server - campaigns, ad groups, keywords, ads, and reporting
What platforms support Microsoft Ads MCP?
Microsoft Ads MCP is available on Claude Code, OpenClaw.
What are the use cases for Microsoft Ads MCP?
Create and manage Microsoft Advertising campaigns via MCP server. Configure ad groups, keywords, and ad copy for Bing and DuckDuckGo Ads. Pull campaign performance reports from Microsoft Advertising.

100+ free AI tools

Writing, PDF, image, and developer tools — all in your browser.

Next Step

Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.