google_ads_get_campaign_details
Retrieve detailed information about a Google Ads campaign using customer ID and campaign ID.
Instructions
Get detailed information about a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID
Returns: Detailed campaign information
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- MCP tool handler that fetches campaign details and formats output. Calls CampaignManager.get_campaign_details() and formats the result into a Markdown string with campaign name, ID, type, status, bidding strategy, dates, network settings, and performance metrics.
@mcp.tool() def google_ads_get_campaign_details( customer_id: str, campaign_id: str ) -> str: """ Get detailed information about a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID Returns: Detailed campaign information """ with performance_logger.track_operation('get_campaign_details', customer_id=customer_id): try: client = get_auth_manager().get_client() campaign_manager = CampaignManager(client) details = campaign_manager.get_campaign_details(customer_id, campaign_id) if not details: return f"❌ Campaign {campaign_id} not found" output = f"# Campaign Details: {details['name']}\n\n" output += f"**ID**: {details['id']}\n" output += f"**Type**: {details['type']}\n" output += f"**Status**: {details['status']}\n" output += f"**Bidding Strategy**: {details['bidding_strategy']}\n\n" output += "## Dates\n" output += f"- **Start Date**: {details['start_date'] or 'Not set'}\n" output += f"- **End Date**: {details['end_date'] or 'No end date'}\n\n" output += "## Network Settings\n" output += f"- **Google Search**: {details['network_settings']['google_search']}\n" output += f"- **Search Network**: {details['network_settings']['search_network']}\n" output += f"- **Display Network**: {details['network_settings']['content_network']}\n\n" if details['metrics']: output += "## Performance Metrics\n" output += f"- **Cost**: ${details['metrics']['cost']:,.2f}\n" output += f"- **Clicks**: {details['metrics']['clicks']:,}\n" output += f"- **Impressions**: {details['metrics']['impressions']:,}\n" output += f"- **Conversions**: {details['metrics']['conversions']}\n" return output except Exception as e: error_msg = ErrorHandler.handle_error(e, context="get_campaign_details") return f"❌ Failed to get campaign details: {error_msg}" - managers/campaign_manager.py:581-645 (helper)Helper/manager method that executes the GAQL query to fetch campaign details from Google Ads API. Queries campaign fields (id, name, status, type, budget, dates, bidding strategy, network settings) and metrics (cost, clicks, impressions, conversions), then maps the response row to a dictionary.
def get_campaign_details( self, customer_id: str, campaign_id: str ) -> Dict[str, Any]: """ Get detailed campaign information. Args: customer_id: Customer ID campaign_id: Campaign ID Returns: Campaign details """ query = f""" SELECT campaign.id, campaign.name, campaign.status, campaign.advertising_channel_type, campaign.campaign_budget, campaign.start_date, campaign.end_date, campaign.bidding_strategy_type, campaign.network_settings.target_google_search, campaign.network_settings.target_search_network, campaign.network_settings.target_content_network, campaign.target_cpa.target_cpa_micros, campaign.target_roas.target_roas, metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions FROM campaign WHERE campaign.id = {campaign_id} """ ga_service = self.client.get_service("GoogleAdsService") response = ga_service.search(customer_id=customer_id, query=query) for row in response: return { "id": str(row.campaign.id), "name": row.campaign.name, "status": row.campaign.status.name, "type": row.campaign.advertising_channel_type.name, "budget": row.campaign.campaign_budget, "start_date": row.campaign.start_date, "end_date": row.campaign.end_date, "bidding_strategy": row.campaign.bidding_strategy_type.name, "network_settings": { "google_search": row.campaign.network_settings.target_google_search, "search_network": row.campaign.network_settings.target_search_network, "content_network": row.campaign.network_settings.target_content_network }, "metrics": { "cost": row.metrics.cost_micros / 1_000_000, "clicks": row.metrics.clicks, "impressions": row.metrics.impressions, "conversions": row.metrics.conversions } } return None - tools/campaigns/mcp_tools_campaigns.py:25-26 (registration)Registration function that registers all campaign MCP tools including google_ads_get_campaign_details via @mcp.tool() decorator.
def register_campaign_tools(mcp: FastMCP): """Register campaign management tools with MCP server."""