{"version":3,"sources":["jsdelivr-header.js","/npm/meta-ads-mcp@1.1.0/build/index.js"],"names":[],"mappings":"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","file":"/npm/meta-ads-mcp@1.1.0/build/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/meta-ads-mcp@1.1.0/build/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { MetaApiClient } from \"./meta-client.js\";\nimport { AuthManager } from \"./utils/auth.js\";\nimport { registerCampaignTools } from \"./tools/campaigns.js\";\nimport { registerAnalyticsTools } from \"./tools/analytics.js\";\nimport { registerAudienceTools } from \"./tools/audiences.js\";\nimport { registerCreativeTools } from \"./tools/creatives.js\";\nimport { registerOAuthTools } from \"./tools/oauth.js\";\nimport { registerCampaignResources } from \"./resources/campaigns.js\";\nimport { registerInsightsResources } from \"./resources/insights.js\";\nimport { registerAudienceResources } from \"./resources/audiences.js\";\nasync function main() {\n    try {\n        console.error(\"🚀 Starting Meta Marketing API MCP Server...\");\n        console.error(\"📋 Environment check:\");\n        console.error(`   NODE_VERSION: ${process.version}`);\n        console.error(`   META_ACCESS_TOKEN: ${process.env.META_ACCESS_TOKEN ? \"Present\" : \"Missing\"}`);\n        console.error(`   MCP_SERVER_NAME: ${process.env.MCP_SERVER_NAME || \"Not set\"}`);\n        // Initialize authentication\n        console.error(\"🔐 Initializing authentication...\");\n        const auth = AuthManager.fromEnvironment();\n        console.error(\"✅ Auth manager created successfully\");\n        // Validate and refresh token if needed\n        console.error(\"🔍 Validating Meta access token...\");\n        try {\n            const currentToken = await auth.refreshTokenIfNeeded();\n            console.error(\"✅ Token validation and refresh successful\");\n            console.error(`🔑 Token ready: ${currentToken.substring(0, 20)}...`);\n            // Log OAuth configuration status\n            const hasOAuthConfig = !!(process.env.META_APP_ID && process.env.META_APP_SECRET);\n            console.error(`🔧 OAuth configuration: ${hasOAuthConfig ? \"Available\" : \"Not configured\"}`);\n            console.error(`🔄 Auto-refresh: ${process.env.META_AUTO_REFRESH === \"true\" ? \"Enabled\" : \"Disabled\"}`);\n        }\n        catch (error) {\n            console.error(\"❌ Token validation failed:\", error);\n            console.error(\"💡 Use OAuth tools to obtain a new token or check configuration\");\n            process.exit(1);\n        }\n        // Initialize Meta API client\n        console.error(\"🌐 Initializing Meta API client...\");\n        const metaClient = new MetaApiClient(auth);\n        console.error(\"✅ Meta API client created successfully\");\n        // Initialize MCP Server\n        console.error(\"🔧 Initializing MCP Server...\");\n        const server = new McpServer({\n            name: process.env.MCP_SERVER_NAME || \"Meta Marketing API Server\",\n            version: process.env.MCP_SERVER_VERSION || \"1.0.0\",\n        });\n        console.error(\"✅ MCP Server instance created\");\n        // Register all tools\n        console.error(\"🛠️  Registering tools...\");\n        registerCampaignTools(server, metaClient);\n        console.error(\"   ✅ Campaign tools registered\");\n        registerAnalyticsTools(server, metaClient);\n        console.error(\"   ✅ Analytics tools registered\");\n        registerAudienceTools(server, metaClient);\n        console.error(\"   ✅ Audience tools registered\");\n        registerCreativeTools(server, metaClient);\n        console.error(\"   ✅ Creative tools registered\");\n        registerOAuthTools(server, auth);\n        console.error(\"   ✅ OAuth tools registered\");\n        // Register all resources\n        console.error(\"📚 Registering resources...\");\n        registerCampaignResources(server, metaClient);\n        console.error(\"   ✅ Campaign resources registered\");\n        registerInsightsResources(server, metaClient);\n        console.error(\"   ✅ Insights resources registered\");\n        registerAudienceResources(server, metaClient);\n        console.error(\"   ✅ Audience resources registered\");\n        // Add account discovery tool\n        server.tool(\"get_ad_accounts\", {}, async () => {\n            try {\n                const accounts = await metaClient.getAdAccounts();\n                const accountsData = accounts.map((account) => ({\n                    id: account.id,\n                    name: account.name,\n                    account_status: account.account_status,\n                    currency: account.currency,\n                    timezone_name: account.timezone_name,\n                    balance: account.balance,\n                    business: account.business\n                        ? {\n                            id: account.business.id,\n                            name: account.business.name,\n                        }\n                        : null,\n                }));\n                const response = {\n                    success: true,\n                    accounts: accountsData,\n                    total_accounts: accountsData.length,\n                    message: \"Ad accounts retrieved successfully\",\n                };\n                return {\n                    content: [\n                        {\n                            type: \"text\",\n                            text: JSON.stringify(response, null, 2),\n                        },\n                    ],\n                };\n            }\n            catch (error) {\n                const errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n                return {\n                    content: [\n                        {\n                            type: \"text\",\n                            text: `Error getting ad accounts: ${errorMessage}`,\n                        },\n                    ],\n                    isError: true,\n                };\n            }\n        });\n        // Add server health check tool\n        server.tool(\"health_check\", {}, async () => {\n            try {\n                const accounts = await metaClient.getAdAccounts();\n                const response = {\n                    status: \"healthy\",\n                    server_name: \"Meta Marketing API Server\",\n                    version: \"1.0.0\",\n                    timestamp: new Date().toISOString(),\n                    meta_api_connection: \"connected\",\n                    accessible_accounts: accounts.length,\n                    rate_limit_status: \"operational\",\n                    features: {\n                        campaign_management: true,\n                        analytics_reporting: true,\n                        audience_management: true,\n                        creative_management: true,\n                        real_time_insights: true,\n                    },\n                };\n                return {\n                    content: [\n                        {\n                            type: \"text\",\n                            text: JSON.stringify(response, null, 2),\n                        },\n                    ],\n                };\n            }\n            catch (error) {\n                const errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n                const response = {\n                    status: \"unhealthy\",\n                    server_name: \"Meta Marketing API Server\",\n                    version: \"1.0.0\",\n                    timestamp: new Date().toISOString(),\n                    error: errorMessage,\n                    meta_api_connection: \"failed\",\n                };\n                return {\n                    content: [\n                        {\n                            type: \"text\",\n                            text: JSON.stringify(response, null, 2),\n                        },\n                    ],\n                    isError: true,\n                };\n            }\n        });\n        // Add server capabilities info\n        server.tool(\"get_capabilities\", {}, async () => {\n            const capabilities = {\n                server_info: {\n                    name: \"Meta Marketing API Server\",\n                    version: \"1.0.0\",\n                    description: \"MCP server providing access to Meta Marketing API for campaign management, analytics, and audience targeting\",\n                },\n                api_coverage: {\n                    campaigns: {\n                        description: \"Full campaign lifecycle management\",\n                        operations: [\n                            \"create\",\n                            \"read\",\n                            \"update\",\n                            \"delete\",\n                            \"pause\",\n                            \"resume\",\n                        ],\n                        supported_objectives: [\n                            \"OUTCOME_APP_PROMOTION\",\n                            \"OUTCOME_AWARENESS\",\n                            \"OUTCOME_ENGAGEMENT\",\n                            \"OUTCOME_LEADS\",\n                            \"OUTCOME_SALES\",\n                            \"OUTCOME_TRAFFIC\",\n                        ],\n                    },\n                    ad_sets: {\n                        description: \"Ad set management and targeting\",\n                        operations: [\"create\", \"read\", \"update\", \"list\"],\n                        targeting_options: [\n                            \"demographics\",\n                            \"interests\",\n                            \"behaviors\",\n                            \"custom_audiences\",\n                            \"lookalike_audiences\",\n                            \"geographic\",\n                        ],\n                    },\n                    ads: {\n                        description: \"Individual ad management\",\n                        operations: [\"create\", \"read\", \"update\", \"list\"],\n                        supported_formats: [\n                            \"single_image\",\n                            \"carousel\",\n                            \"video\",\n                            \"collection\",\n                        ],\n                    },\n                    insights: {\n                        description: \"Performance analytics and reporting\",\n                        metrics: [\n                            \"impressions\",\n                            \"clicks\",\n                            \"spend\",\n                            \"reach\",\n                            \"frequency\",\n                            \"ctr\",\n                            \"cpc\",\n                            \"cpm\",\n                            \"conversions\",\n                        ],\n                        breakdowns: [\"age\", \"gender\", \"placement\", \"device\", \"country\"],\n                        date_ranges: [\n                            \"today\",\n                            \"yesterday\",\n                            \"last_7d\",\n                            \"last_30d\",\n                            \"last_90d\",\n                            \"custom\",\n                        ],\n                    },\n                    audiences: {\n                        description: \"Custom and lookalike audience management\",\n                        types: [\"custom\", \"lookalike\", \"website\", \"app\", \"offline\"],\n                        operations: [\"create\", \"read\", \"update\", \"delete\", \"estimate_size\"],\n                    },\n                    creatives: {\n                        description: \"Ad creative management and testing\",\n                        operations: [\"create\", \"read\", \"preview\", \"ab_test_setup\"],\n                        formats: [\"image\", \"video\", \"carousel\", \"collection\"],\n                    },\n                },\n                tools_available: [\n                    // Campaign tools\n                    \"list_campaigns\",\n                    \"create_campaign\",\n                    \"update_campaign\",\n                    \"delete_campaign\",\n                    \"pause_campaign\",\n                    \"resume_campaign\",\n                    \"get_campaign\",\n                    // Ad set tools\n                    \"list_ad_sets\",\n                    \"create_ad_set\",\n                    // Ad tools\n                    \"list_ads\",\n                    // Analytics tools\n                    \"get_insights\",\n                    \"compare_performance\",\n                    \"export_insights\",\n                    \"get_campaign_performance\",\n                    \"get_attribution_data\",\n                    // Audience tools\n                    \"list_audiences\",\n                    \"create_custom_audience\",\n                    \"create_lookalike_audience\",\n                    \"estimate_audience_size\",\n                    // Creative tools\n                    \"list_creatives\",\n                    \"create_ad_creative\",\n                    \"preview_ad\",\n                    \"setup_ab_test\",\n                    // OAuth tools\n                    \"generate_auth_url\",\n                    \"exchange_code_for_token\",\n                    \"refresh_to_long_lived_token\",\n                    \"generate_system_user_token\",\n                    \"get_token_info\",\n                    \"validate_token\",\n                    // Utility tools\n                    \"get_ad_accounts\",\n                    \"health_check\",\n                    \"get_capabilities\",\n                ],\n                resources_available: [\n                    \"meta://campaigns/{account_id}\",\n                    \"meta://campaign/{campaign_id}\",\n                    \"meta://campaign-status/{account_id}\",\n                    \"meta://adsets/{campaign_id}\",\n                    \"meta://insights/campaign/{campaign_id}\",\n                    \"meta://insights/account/{account_id}\",\n                    \"meta://insights/compare/{object_ids}\",\n                    \"meta://insights/trends/{object_id}/{days}\",\n                    \"meta://audiences/{account_id}\",\n                    \"meta://audience-performance/{account_id}\",\n                    \"meta://targeting-insights/{account_id}\",\n                    \"meta://audience-health/{account_id}\",\n                ],\n                rate_limits: {\n                    development_tier: {\n                        max_score: 60,\n                        decay_time: \"5 minutes\",\n                        block_time: \"5 minutes\",\n                    },\n                    standard_tier: {\n                        max_score: 9000,\n                        decay_time: \"5 minutes\",\n                        block_time: \"1 minute\",\n                    },\n                    scoring: {\n                        read_calls: 1,\n                        write_calls: 3,\n                    },\n                },\n                authentication: {\n                    required: [\"META_ACCESS_TOKEN\"],\n                    optional: [\"META_APP_ID\", \"META_APP_SECRET\", \"META_BUSINESS_ID\", \"META_REDIRECT_URI\", \"META_REFRESH_TOKEN\", \"META_AUTO_REFRESH\"],\n                    token_validation: \"automatic_on_startup\",\n                    oauth_support: {\n                        authorization_flow: \"supported\",\n                        token_refresh: \"automatic_with_configuration\",\n                        system_user_tokens: \"supported\",\n                        long_lived_tokens: \"supported\",\n                    },\n                },\n            };\n            return {\n                content: [\n                    {\n                        type: \"text\",\n                        text: JSON.stringify(capabilities, null, 2),\n                    },\n                ],\n            };\n        });\n        console.error(\"🔗 Connecting to MCP transport...\");\n        console.error(`📊 Server: ${process.env.MCP_SERVER_NAME || \"Meta Marketing API Server\"} v${process.env.MCP_SERVER_VERSION || \"1.0.0\"}`);\n        console.error(`🔧 Meta API Version: ${auth.getApiVersion()}`);\n        // Connect to transport\n        console.error(\"🚀 Attempting server connection...\");\n        const transport = new StdioServerTransport();\n        await server.connect(transport);\n        console.error(\"✅ Transport connection established\");\n        console.error(\"✅ Meta Marketing API MCP Server started successfully\");\n        console.error(\"🎯 Ready to receive requests from MCP clients\");\n        console.error(\"🔄 Server is now running and listening...\");\n    }\n    catch (error) {\n        console.error(\"❌ Failed to start Meta Marketing API MCP Server:\", error);\n        process.exit(1);\n    }\n}\n// Handle graceful shutdown\nprocess.on(\"SIGINT\", () => {\n    console.error(\"Received SIGINT, shutting down gracefully...\");\n    process.exit(0);\n});\nprocess.on(\"SIGTERM\", () => {\n    console.error(\"Received SIGTERM, shutting down gracefully...\");\n    process.exit(0);\n});\n// Handle uncaught errors\nprocess.on(\"uncaughtException\", (error) => {\n    console.error(\"Uncaught Exception:\", error);\n    process.exit(1);\n});\nprocess.on(\"unhandledRejection\", (reason, promise) => {\n    console.error(\"Unhandled Rejection at:\", promise, \"reason:\", reason);\n    process.exit(1);\n});\n// Start the server automatically (this is a CLI tool)\nmain().catch((error) => {\n    console.error(\"Failed to start server:\", error);\n    process.exit(1);\n});\n"]}