Duarte

Microsoft Ads MCP

Business Opsv1.0.0
By DuarteUpdated 2026-05-17microsoft-ads-mcp@clawhub_duartemartins/microsoft-ads-mcp
SalesE-commerce

According to AlphaMoat, as of 2026-09, Microsoft Ads MCP has 3,385 downloads and 3 stars — ranked #3,317 of 5,078 AI skills overall, and #183 of 297 in Business Ops.

Installs
105
Downloads
3.4K
Stars
3
Overall Rank
#3,317
Top 66% overall · Top 62% in Business Ops
PlatformInstallsDownloadsStarsComments
ClawHub ↗1053.2K3-
SkillHub ↗1053.4K3—

Platforms count differently and update at different times.

What this skill does

The primary says new campaigns start paused. Activation, budget changes, ad publishing, and report exports can affect live spend or expose business data. Review third-party server code, use least privilege, and require human review before spend-bearing or export actions.

Profile published 2026-10-29

What you can do with it

  • Outline needs for managing campaigns, ad groups, keywords, and ads.
  • Plan an operations flow from account lookup to report submission.
  • Check budget, status, and permission reviews before activation.

When to use it

  • When inspecting or managing a Microsoft Advertising account through MCP.
  • When planning Bing or DuckDuckGo search-ad setup and reporting.
  • Before activating campaigns, changing budgets, publishing ads, or exporting reports, when human confirmation is needed.

Example prompts

Generated from the skill’s documentation as examples; not results of actual runs.

Summarize this MCP server’s advertising-account and campaign-management capabilities.
List the budget, status, and permission checks needed before activating an ad campaign.

Monthly Trend

Downloads3.4K
2.0K2.8K3.5K2026-03 · Downloads 2.1K2026-05 · Downloads 2.7K2026-06 · Downloads 2.8K2026-07 · Downloads 3.0K2026-08 · Downloads 3.1K2026-09 · Downloads 3.4K26-0326-09
Stars3
2342026-03 · Stars 32026-05 · Stars 32026-06 · Stars 32026-07 · Stars 32026-08 · Stars 32026-09 · Stars 326-0326-09

The counting method changed in 2026-09: skills with the same name are now counted separately by author, and the full catalog is covered. Dashed lines show months before the change; they are not compared with later months, and no growth is computed across the change.

MonthDownloadsMoMStars
2026-093.4K—3
2026-083.1K+3.8%3
2026-073.0K+8.1%3
2026-062.8K+5.4%3
2026-052.7K—3
2026-032.1K—3

SKILL.md (original)

The author’s original file, shown as plain text without edits or review by AlphaMoat. Links are not clickable; check commands before running them. Fetched 2026-10-23.

6.6 KB · ClawHub v1.0.0
---
name: microsoft-ads-mcp
description: Create and manage Microsoft Advertising campaigns (Bing Ads / DuckDuckGo Ads) via MCP server - campaigns, ad groups, keywords, ads, and reporting
metadata: {"clawdbot":{"emoji":"📢","requires":{"commands":["mcporter"]},"homepage":"https://github.com/Duartemartins/microsoft-ads-mcp-server"}}
---

# Microsoft Ads MCP Server

Create and manage Microsoft Advertising campaigns programmatically. This MCP server enables full campaign management for Bing and DuckDuckGo search ads.
Show all (200 lines)
## 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](https://ads.microsoft.com)
2. **Developer Token**: Apply at [developers.ads.microsoft.com](https://developers.ads.microsoft.com)
3. **Azure AD App**: Create at [portal.azure.com](https://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](https://github.com/Duartemartins/microsoft-ads-mcp-server)

Built with [FastMCP](https://github.com/jlowin/fastmcp) and the [Bing Ads Python SDK](https://github.com/BingAds/BingAds-Python-SDK)

Popular in Business Ops

Data month: 2026-09 · Downloads, stars and installs are aggregated monthly from public skill registries (ClawHub, SkillHub). See methodology.