---
name: microsoft-ads-mcp-83a47db83fc2
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.

## 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)


---
Source attribution: modbender
Original project: https://github.com/modbender/skill-library-mcp/blob/d9c8fe903b5b4e82237dbe8d0df8567783022e18/data/microsoft-ads-mcp/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Mega AI Hub.

## Upstream license notice

MIT License

Copyright (c) 2025 skill-library-mcp contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Mega AI Hub resource metadata

Creator / publisher: modbender
Original project: https://github.com/modbender/skill-library-mcp/blob/d9c8fe903b5b4e82237dbe8d0df8567783022e18/data/microsoft-ads-mcp/SKILL.md
Attribution basis: Source repository record

Fields of work: Marketing
Roles: Advertising Specialist, Growth Marketer, SEO Specialist
Specialties: API
Tools: Mcporter, Microsoft Ads
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 9437f7435eefab3242fa7d6bd0954ea7d93327345ff2cf66ef4531f24d64a4cd
