All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Multi-network support: Manage multiple GAM networks with a single server instance
- New
GAM_NETWORK_CODESenvironment variable: comma-separated list of network codes (first is default) - All tools accept an optional
network_codeparameter to target a specific network - Same service account credentials shared across all networks
- Clients are lazily created and cached per network code
- Backward compatible:
GAM_NETWORK_CODEstill works for single-network setups
- New
- Upgrade Google Ad Manager API version from
v202411tov202502(v202411 was sunset)
0.1.11 - 2025-01-16
get_line_itemnow returnstargeted_ad_unit_ids- List of ad unit IDs targeted by the line itemupdate_line_item- Comprehensive line item update tool with support for:name- Update line item nameline_item_type- Change type (STANDARD, SPONSORSHIP, NETWORK, BULK, PRICE_PRIORITY, HOUSE)delivery_rate_type- Change delivery pacing (EVENLY, FRONTLOADED, AS_FAST_AS_POSSIBLE)priority- Set priority value (1-16)cost_per_unit_micro- Update CPM/CPC costcurrency_code- Change currencygoal_impressions- Update impression goalend_year,end_month,end_day- Update end date- Returns a list of all changes made
update_line_item_name- Superseded by the more comprehensiveupdate_line_itemtool
0.1.10 - 2024-12-24
- Creative Preview URL - Generate preview URLs to see how creatives will appear on your site:
get_creative_preview_url- Get a preview URL for a creative associated with a line item- Takes
line_item_id,creative_id, andsite_urlas parameters - Returns a URL that loads the site with the creative displayed in ad slots
- Uses the official GAM SOAP API
LineItemCreativeAssociationService.getPreviewUrlmethod
0.1.9 - 2024-12-24
- Third-Party Creative Support - Create HTML/JavaScript ad creatives programmatically:
create_third_party_creative- Create DCM/Campaign Manager tags, custom HTML ads, or any third-party ad server tags- Supports SafeFrame compatibility setting
- Supports expanded snippets for expandable creatives
- Use with existing
associate_creative_with_line_itemto link to line items
0.1.8 - 2024-12-24
update_creative- Update an existing creative's properties:destination_url- Change the click-through URLname- Rename the creative
list_creatives_by_line_item- List all creatives associated with a specific line item:- Returns creative details including name, size, type, destination URL
- Includes association status (ACTIVE, INACTIVE, etc.)
0.1.7 - 2025-12-23
- Delivery metrics in
list_delivering_orders- Now includes full delivery tracking for each line item:goal_type- Goal type (LIFETIME, DAILY, etc.)goal_unit_type- Unit type (IMPRESSIONS, CLICKS, etc.)goal_units- Target goal unitsprogress_percent- Actual delivery vs goal percentageexpected_delivery- Expected impressions based on time elapsedpacing_percent- Actual vs expected delivery (100% = on track)days_elapsed/total_days- Campaign time progress
- Fixed
safe_getutility to properly handle zeep objects that incorrectly passisinstance(obj, dict)but lack.get()method - Changed from
isinstance(obj, dict)totype(obj) is dictcheck to avoid zeep object issues
0.1.6 - 2025-12-23
- Line Item Status Control - New tools to manage line item lifecycle:
pause_line_item- Pause a delivering line item to stop ad deliveryresume_line_item- Resume a paused line item to restart deliveryarchive_line_item- Archive a line item (hides from UI, cannot be undone via API)approve_line_item- Approve a line item in approval workflow (NEEDS_APPROVAL status)
- Reporting Tools - New tools to generate and retrieve performance reports:
run_delivery_report- Generate delivery report with impressions, clicks, CTR, and revenue by order/line itemrun_inventory_report- Generate inventory report with ad requests, impressions, and fill rate by ad unitrun_custom_report- Generate custom report with user-specified dimensions and metrics- Supports multiple date ranges: TODAY, YESTERDAY, LAST_WEEK, LAST_MONTH, LAST_3_MONTHS, CUSTOM_DATE
- Filtering by order ID, line item ID, or ad unit ID
- Optional daily/weekly/monthly breakdown
- Pacing Calculation - Enhanced
check_line_item_delivery_statuswith pacing metrics:pacing_percent- Actual vs expected delivery based on time elapsed (100% = on track)expected_delivery- Impressions that should be delivered by nowdays_elapsed/total_days- Time progress through the campaign
- Fixed
check_line_item_delivery_statususing.get()on zeep objects instead ofsafe_get()
0.1.5 - 2025-12-22
- Added
creative_sizesparameter tocreate_line_itemtool - allows specifying multiple creative sizes as JSON - Added
cost_per_unit_microandcurrency_codeparameters tocreate_line_itemtool - Added
line_item_typeandcreative_sizesparameters tocreate_campaignworkflow tool - Documented all supported line item types: SPONSORSHIP, STANDARD, NETWORK, BULK, PRICE_PRIORITY, HOUSE, CLICK_TRACKING, ADSENSE, AD_EXCHANGE, BUMPER, PREFERRED_DEAL
- Enhanced
create_line_itemdocumentation with detailed descriptions of all line item types
0.1.4 - 2025-12-22
- Fixed RuntimeError when calling tools:
init_client()was incorrectly usingget_gam_client()which throws an error when client is not initialized - Added
is_gam_client_initialized()helper function to properly check initialization state
0.1.3 - 2025-12-19
- Fixed lazy initialization to allow server to start and list tools without credentials
- Credentials are now only validated when a tool is actually called
- Fixed duplicate
init_client()calls inget_orderfunction - Added missing
init_client()call tocreate_campaignfunction
- Default transport mode changed from
httptostdiofor better CLI/uvx compatibility - Updated tests to support lazy initialization behavior
0.1.2 - 2025-12-19
- Changed default transport from
httptostdioto fix uvx compatibility
0.1.1 - 2025-12-19
- Added
google-ad-manager-mcpas alternate executable name for uvx compatibility
0.1.0 - 2025-12-19
- Initial release of GAM MCP Server
- Order Management
list_delivering_orders- List all orders with delivering line itemsget_order- Get order details by ID or namecreate_order- Create a new orderfind_or_create_order- Find existing or create new order (idempotent)
- Line Item Management
get_line_item- Get line item detailscreate_line_item- Create a new line item with customizable sizes, dates, impressionsduplicate_line_item- Duplicate an existing line item with optional source renameupdate_line_item_name- Rename a line itemlist_line_items_by_order- List all line items for an order
- Creative Management
upload_creative- Upload an image creative (auto-extracts size from filename)associate_creative_with_line_item- Associate creative with line itemupload_and_associate_creative- Upload and associate in one operationbulk_upload_creatives- Batch upload all creatives from a folderget_creative- Get creative detailslist_creatives_by_advertiser- List creatives for an advertiser with pagination
- Advertiser Management
find_advertiser- Find advertiser by partial name matchget_advertiser- Get advertiser details by IDlist_advertisers- List all advertisers with paginationcreate_advertiser- Create a new advertiserfind_or_create_advertiser- Find or create advertiser (idempotent)
- Verification Tools
verify_line_item_setup- Validate creative placeholders, associations, size mismatchescheck_line_item_delivery_status- Track impressions/clicks vs goalsverify_order_setup- Comprehensive order validation
- Workflow Tools
create_campaign- End-to-end campaign creation (advertiser → order → line item → creatives)
- Security Features
- Bearer token authentication with FastMCP middleware
- Cryptographically secure token generation
- Timing attack prevention with constant-time comparison
- Infrastructure
- Docker support with non-root user
- Environment-based configuration
- Comprehensive logging