Releases: shinypebble/microsoft-ads-mcp
Release list
v0.4.0
Website exclusions (campaign-level)
New tools to manage a campaign's website control list exclusions (negative sites) — block referrer domains / mobile-app IDs where ads serve, without leaving the MCP server.
get_website_exclusions(campaign_id)— list a campaign's blocked sites (surfaces API partial errors for invalid/inaccessible campaign ids instead of reporting an empty list).add_website_exclusions(campaign_id, urls)— block sites. Additive read-modify-write over Microsoft's replace-allSetNegativeSitesToCampaigns, so it never clobbers existing exclusions. Bare domains/paths or app IDs; a leadinghttp(s)://is stripped.remove_website_exclusions(campaign_id, urls)— unblock sites by URL, retaining the rest.
Microsoft sites (e.g. MSN.com) can't be excluded and there's a ~2500-site/campaign cap; both surface in partial_errors. Write tools remain gated by READ_ONLY.
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's new
- feat(extensions): structured snippet extension support + update functionality
- feat(extensions): sitelink description support + update functionality
Full changelog: v0.2.1...v0.3.0
v0.2.1
Simplified install via uvx
config.py now reads a cwd-independent ~/.config/microsoft-ads/.env (alongside the persisted tokens.json), so the published package runs from any directory with no secrets in any project file:
"microsoft-ads": {
"command": "uvx",
"args": ["microsoft-ads-mcp"],
"env": { "READ_ONLY": "false", "TOOL_SEARCH": "true" }
}Precedence, highest first: real env vars > project-local .env > ~/.config/microsoft-ads/.env. This resolves the DEVELOPER_TOKEN and CLIENT_ID must be set startup error when credentials aren't passed inline. See the README Install section.
v0.2.0
Full Changelog: https://github.com/shinypebble/microsoft-ads-mcp/commits/v0.2.0