Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Microsoft Ads MCP

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

MIT-0 · Free to use, modify, and redistribute. No attribution required.
2 · 1.8k · 1 current installs · 1 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The SKILL.md describes a Microsoft Advertising MCP server and shows mcporter-based commands for campaign management — that aligns with the skill name/description. However, the skill registry metadata claims no required binaries, env vars, or config paths, while the SKILL.md clearly requires the 'mcporter' command and a ~/.mcporter/mcporter.json config entry. This mismatch suggests the declared requirements are incomplete.
!
Instruction Scope
The instructions tell the user to git clone https://github.com/Duartemartins/microsoft-ads-mcp-server, pip install requirements, configure ~/.mcporter/mcporter.json with credentials, and run mcporter calls (including an OAuth flow). Those steps are coherent with the advertised functionality, but they require writing and executing third‑party code, creating/storing credentials in a local config file, and running a long‑running server process — none of which are declared in the skill metadata. The instructions also rely on the user pasting redirect URLs (OAuth codes), and they do not specify where long‑term tokens are persisted, which is a scope/capability detail left unspecified.
Install Mechanism
This is an instruction-only skill (no bundled install). The instructions instruct cloning a GitHub repo and pip installing requirements.txt. GitHub and pip are common sources, but installing and running arbitrary code from a third‑party repo introduces moderate risk — review the repository and requirements.txt before installing. No unusual or obfuscated URLs are used, but the skill does rely on external code execution.
!
Credentials
Functionally the skill needs Microsoft Ads developer token and Azure AD app client ID (and an OAuth flow) which are appropriate for this integration. However, the registry lists no required env vars or primary credential while the instructions explicitly instruct the user to place credentials into ~/.mcporter/mcporter.json env fields. Storing tokens/keys in a plaintext config under the user's home directory may expose sensitive data if not handled carefully. The skill doesn't document where OAuth tokens/refresh tokens are stored or how they are protected.
Persistence & Privilege
The skill itself is not marked 'always' and is user-invocable, which is appropriate. But the runtime instructions create persistent artifacts (a cloned repo, installed Python packages, and a mcporter-configured stdio server process) that will live on disk and may run locally. The skill package metadata does not declare that it will create these artifacts, so users should be aware that installing/running the server has persistence implications on their machine.
What to consider before installing
This skill appears to do what it claims (manage Microsoft Ads via an MCP server) but several operational details are missing or inconsistent in the registry metadata. Before installing or running it: 1) Inspect the GitHub repo (https://github.com/Duartemartins/microsoft-ads-mcp-server) and review server.py and requirements.txt for any unexpected behavior or risky dependencies. 2) Confirm you want to install and run third‑party Python code on your machine and understand where credentials and OAuth tokens will be stored (the instructions suggest ~/.mcporter/mcporter.json). 3) If possible, use least‑privilege credentials or a dedicated test Microsoft Ads account while evaluating. 4) Consider running the server in a sandbox or isolated environment (container/VM). 5) Ask the publisher to update the skill metadata to declare required binaries (mcporter), config paths (~/.mcporter/mcporter.json), and environment/credential needs explicitly — that would remove the main coherence concerns. If you cannot validate the repository and token storage practices, avoid installing or supplying production credentials.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk972rqezb59w3vm3j6hz25exch7zzxtb

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

📢 Clawdis

SKILL.md

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

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:

{
  "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

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

mcporter call microsoft-ads.search_accounts

Campaign Operations

# 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

# 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

# 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

# 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

# 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

mcporter call microsoft-ads.get_budgets
mcporter call microsoft-ads.get_labels

Complete Workflow Example

# 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

TypeSyntaxTriggers
BroadkeywordRelated 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

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…