@cesteral/dbm-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/README.md +197 -0
- package/dist/config/index.d.ts +112 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +55 -0
- package/dist/config/index.js.map +1 -0
- package/dist/generated/compatibility-rules.d.ts +26 -0
- package/dist/generated/compatibility-rules.d.ts.map +1 -0
- package/dist/generated/compatibility-rules.js +142 -0
- package/dist/generated/compatibility-rules.js.map +1 -0
- package/dist/generated/filters.d.ts +19 -0
- package/dist/generated/filters.d.ts.map +1 -0
- package/dist/generated/filters.js +2541 -0
- package/dist/generated/filters.js.map +1 -0
- package/dist/generated/index.d.ts +5 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +5 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/metrics.d.ts +28 -0
- package/dist/generated/metrics.d.ts.map +1 -0
- package/dist/generated/metrics.js +961 -0
- package/dist/generated/metrics.js.map +1 -0
- package/dist/generated/report-types.d.ts +14 -0
- package/dist/generated/report-types.d.ts.map +1 -0
- package/dist/generated/report-types.js +94 -0
- package/dist/generated/report-types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js +164 -0
- package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js +204 -0
- package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +66 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js +179 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/types.d.ts +15 -0
- package/dist/mcp-server/prompts/definitions/types.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/types.js +2 -0
- package/dist/mcp-server/prompts/definitions/types.js.map +1 -0
- package/dist/mcp-server/prompts/index.d.ts +6 -0
- package/dist/mcp-server/prompts/index.d.ts.map +1 -0
- package/dist/mcp-server/prompts/index.js +57 -0
- package/dist/mcp-server/prompts/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js +130 -0
- package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/filter-types.resource.js +198 -0
- package/dist/mcp-server/resources/definitions/filter-types.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/index.js +49 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/metric-types.resource.js +221 -0
- package/dist/mcp-server/resources/definitions/metric-types.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts +169 -0
- package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/query-examples.resource.js +261 -0
- package/dist/mcp-server/resources/definitions/query-examples.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/report-types.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/report-types.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/report-types.resource.js +198 -0
- package/dist/mcp-server/resources/definitions/report-types.resource.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +3 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +2 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/types.d.ts +16 -0
- package/dist/mcp-server/resources/types.d.ts.map +1 -0
- package/dist/mcp-server/resources/types.js +2 -0
- package/dist/mcp-server/resources/types.js.map +1 -0
- package/dist/mcp-server/server.d.ts +5 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +115 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts +89 -0
- package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js +128 -0
- package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts +155 -0
- package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js +160 -0
- package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +138 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +171 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts +122 -0
- package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js +143 -0
- package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +8 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +23 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js +46 -0
- package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts +186 -0
- package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/run-custom-query.tool.js +202 -0
- package/dist/mcp-server/tools/definitions/run-custom-query.tool.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +2 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +2 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/query-validation.d.ts +44 -0
- package/dist/mcp-server/tools/utils/query-validation.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/query-validation.js +107 -0
- package/dist/mcp-server/tools/utils/query-validation.js.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
- package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts +55 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.js +55 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/bid-manager/BidManagerService.d.ts +68 -0
- package/dist/services/bid-manager/BidManagerService.d.ts.map +1 -0
- package/dist/services/bid-manager/BidManagerService.js +464 -0
- package/dist/services/bid-manager/BidManagerService.js.map +1 -0
- package/dist/services/bid-manager/auth-bridge.d.ts +6 -0
- package/dist/services/bid-manager/auth-bridge.d.ts.map +1 -0
- package/dist/services/bid-manager/auth-bridge.js +13 -0
- package/dist/services/bid-manager/auth-bridge.js.map +1 -0
- package/dist/services/bid-manager/client.d.ts +4 -0
- package/dist/services/bid-manager/client.d.ts.map +1 -0
- package/dist/services/bid-manager/client.js +2 -0
- package/dist/services/bid-manager/client.js.map +1 -0
- package/dist/services/bid-manager/index.d.ts +6 -0
- package/dist/services/bid-manager/index.d.ts.map +1 -0
- package/dist/services/bid-manager/index.js +4 -0
- package/dist/services/bid-manager/index.js.map +1 -0
- package/dist/services/bid-manager/report-parser.d.ts +26 -0
- package/dist/services/bid-manager/report-parser.d.ts.map +1 -0
- package/dist/services/bid-manager/report-parser.js +141 -0
- package/dist/services/bid-manager/report-parser.js.map +1 -0
- package/dist/services/bid-manager/types.d.ts +668 -0
- package/dist/services/bid-manager/types.d.ts.map +1 -0
- package/dist/services/bid-manager/types.js +256 -0
- package/dist/services/bid-manager/types.js.map +1 -0
- package/dist/services/session-services.d.ts +12 -0
- package/dist/services/session-services.d.ts.map +1 -0
- package/dist/services/session-services.js +18 -0
- package/dist/services/session-services.js.map +1 -0
- package/dist/types-global/bid-manager.d.ts +76 -0
- package/dist/types-global/bid-manager.d.ts.map +1 -0
- package/dist/types-global/bid-manager.js +2 -0
- package/dist/types-global/bid-manager.js.map +1 -0
- package/dist/types-global/index.d.ts +2 -0
- package/dist/types-global/index.d.ts.map +1 -0
- package/dist/types-global/index.js +2 -0
- package/dist/types-global/index.js.map +1 -0
- package/dist/types-global/mcp.d.ts +2 -0
- package/dist/types-global/mcp.d.ts.map +1 -0
- package/dist/types-global/mcp.js +2 -0
- package/dist/types-global/mcp.js.map +1 -0
- package/dist/utils/date.d.ts +2 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +7 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/errors/bid-manager-errors.d.ts +57 -0
- package/dist/utils/errors/bid-manager-errors.d.ts.map +1 -0
- package/dist/utils/errors/bid-manager-errors.js +119 -0
- package/dist/utils/errors/bid-manager-errors.js.map +1 -0
- package/dist/utils/errors/index.d.ts +3 -0
- package/dist/utils/errors/index.d.ts.map +1 -0
- package/dist/utils/errors/index.js +3 -0
- package/dist/utils/errors/index.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/math.d.ts +9 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +38 -0
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/metrics.d.ts +21 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +92 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/platform.d.ts +3 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +5 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/security/index.d.ts +2 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +2 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rate-limiter.d.ts +3 -0
- package/dist/utils/security/rate-limiter.d.ts.map +1 -0
- package/dist/utils/security/rate-limiter.js +5 -0
- package/dist/utils/security/rate-limiter.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +2 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +2 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/tracing.d.ts +3 -0
- package/dist/utils/telemetry/tracing.d.ts.map +1 -0
- package/dist/utils/telemetry/tracing.js +4 -0
- package/dist/utils/telemetry/tracing.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
export const QUERY_EXAMPLES = {
|
|
2
|
+
delivery: {
|
|
3
|
+
name: "Campaign Delivery Report",
|
|
4
|
+
description: "Basic delivery metrics (impressions, clicks, spend) for a campaign",
|
|
5
|
+
querySpec: {
|
|
6
|
+
metadata: {
|
|
7
|
+
title: "Campaign Delivery Report",
|
|
8
|
+
dataRange: {
|
|
9
|
+
range: "LAST_7_DAYS",
|
|
10
|
+
},
|
|
11
|
+
format: "CSV",
|
|
12
|
+
},
|
|
13
|
+
params: {
|
|
14
|
+
type: "STANDARD",
|
|
15
|
+
groupBys: ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
|
|
16
|
+
metrics: [
|
|
17
|
+
"METRIC_IMPRESSIONS",
|
|
18
|
+
"METRIC_CLICKS",
|
|
19
|
+
"METRIC_CTR",
|
|
20
|
+
"METRIC_TOTAL_MEDIA_COST_ADVERTISER",
|
|
21
|
+
],
|
|
22
|
+
filters: [
|
|
23
|
+
{ type: "FILTER_ADVERTISER", value: "{advertiserId}" },
|
|
24
|
+
{ type: "FILTER_MEDIA_PLAN", value: "{campaignId}" },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
performance: {
|
|
30
|
+
name: "Performance Analysis Report",
|
|
31
|
+
description: "Full performance metrics including conversions and revenue",
|
|
32
|
+
querySpec: {
|
|
33
|
+
metadata: {
|
|
34
|
+
title: "Performance Analysis Report",
|
|
35
|
+
dataRange: {
|
|
36
|
+
range: "CUSTOM_DATES",
|
|
37
|
+
customStartDate: { year: 2025, month: 1, day: 1 },
|
|
38
|
+
customEndDate: { year: 2025, month: 1, day: 31 },
|
|
39
|
+
},
|
|
40
|
+
format: "CSV",
|
|
41
|
+
},
|
|
42
|
+
params: {
|
|
43
|
+
type: "STANDARD",
|
|
44
|
+
groupBys: ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
|
|
45
|
+
metrics: [
|
|
46
|
+
"METRIC_IMPRESSIONS",
|
|
47
|
+
"METRIC_CLICKS",
|
|
48
|
+
"METRIC_CTR",
|
|
49
|
+
"METRIC_TOTAL_MEDIA_COST_ADVERTISER",
|
|
50
|
+
"METRIC_TOTAL_CONVERSIONS",
|
|
51
|
+
"METRIC_POST_CLICK_CONVERSIONS",
|
|
52
|
+
"METRIC_POST_VIEW_CONVERSIONS",
|
|
53
|
+
"METRIC_REVENUE_ADVERTISER",
|
|
54
|
+
"METRIC_CPA_ADVERTISER",
|
|
55
|
+
],
|
|
56
|
+
filters: [{ type: "FILTER_ADVERTISER", value: "{advertiserId}" }],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
lineItemBreakdown: {
|
|
61
|
+
name: "Line Item Breakdown Report",
|
|
62
|
+
description: "Performance breakdown by line item within a campaign",
|
|
63
|
+
querySpec: {
|
|
64
|
+
metadata: {
|
|
65
|
+
title: "Line Item Breakdown",
|
|
66
|
+
dataRange: {
|
|
67
|
+
range: "LAST_30_DAYS",
|
|
68
|
+
},
|
|
69
|
+
format: "CSV",
|
|
70
|
+
},
|
|
71
|
+
params: {
|
|
72
|
+
type: "STANDARD",
|
|
73
|
+
groupBys: ["FILTER_LINE_ITEM"],
|
|
74
|
+
metrics: [
|
|
75
|
+
"METRIC_IMPRESSIONS",
|
|
76
|
+
"METRIC_CLICKS",
|
|
77
|
+
"METRIC_CTR",
|
|
78
|
+
"METRIC_TOTAL_MEDIA_COST_ADVERTISER",
|
|
79
|
+
"METRIC_CPM_ADVERTISER",
|
|
80
|
+
],
|
|
81
|
+
filters: [
|
|
82
|
+
{ type: "FILTER_ADVERTISER", value: "{advertiserId}" },
|
|
83
|
+
{ type: "FILTER_MEDIA_PLAN", value: "{campaignId}" },
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
deviceType: {
|
|
89
|
+
name: "Device Type Report",
|
|
90
|
+
description: "Performance breakdown by device type",
|
|
91
|
+
querySpec: {
|
|
92
|
+
metadata: {
|
|
93
|
+
title: "Device Type Performance",
|
|
94
|
+
dataRange: {
|
|
95
|
+
range: "LAST_7_DAYS",
|
|
96
|
+
},
|
|
97
|
+
format: "CSV",
|
|
98
|
+
},
|
|
99
|
+
params: {
|
|
100
|
+
type: "STANDARD",
|
|
101
|
+
groupBys: ["FILTER_DEVICE_TYPE"],
|
|
102
|
+
metrics: [
|
|
103
|
+
"METRIC_IMPRESSIONS",
|
|
104
|
+
"METRIC_CLICKS",
|
|
105
|
+
"METRIC_CTR",
|
|
106
|
+
"METRIC_TOTAL_MEDIA_COST_ADVERTISER",
|
|
107
|
+
"METRIC_TOTAL_CONVERSIONS",
|
|
108
|
+
],
|
|
109
|
+
filters: [
|
|
110
|
+
{ type: "FILTER_ADVERTISER", value: "{advertiserId}" },
|
|
111
|
+
{ type: "FILTER_MEDIA_PLAN", value: "{campaignId}" },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
geographic: {
|
|
117
|
+
name: "Geographic Report",
|
|
118
|
+
description: "Performance breakdown by country and region",
|
|
119
|
+
querySpec: {
|
|
120
|
+
metadata: {
|
|
121
|
+
title: "Geographic Performance",
|
|
122
|
+
dataRange: {
|
|
123
|
+
range: "LAST_30_DAYS",
|
|
124
|
+
},
|
|
125
|
+
format: "CSV",
|
|
126
|
+
},
|
|
127
|
+
params: {
|
|
128
|
+
type: "STANDARD",
|
|
129
|
+
groupBys: ["FILTER_COUNTRY"],
|
|
130
|
+
metrics: [
|
|
131
|
+
"METRIC_IMPRESSIONS",
|
|
132
|
+
"METRIC_CLICKS",
|
|
133
|
+
"METRIC_CTR",
|
|
134
|
+
"METRIC_TOTAL_MEDIA_COST_ADVERTISER",
|
|
135
|
+
],
|
|
136
|
+
filters: [{ type: "FILTER_ADVERTISER", value: "{advertiserId}" }],
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
viewability: {
|
|
141
|
+
name: "Viewability Report",
|
|
142
|
+
description: "Active View viewability metrics",
|
|
143
|
+
querySpec: {
|
|
144
|
+
metadata: {
|
|
145
|
+
title: "Viewability Analysis",
|
|
146
|
+
dataRange: {
|
|
147
|
+
range: "LAST_7_DAYS",
|
|
148
|
+
},
|
|
149
|
+
format: "CSV",
|
|
150
|
+
},
|
|
151
|
+
params: {
|
|
152
|
+
type: "STANDARD",
|
|
153
|
+
groupBys: ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
|
|
154
|
+
metrics: [
|
|
155
|
+
"METRIC_IMPRESSIONS",
|
|
156
|
+
"METRIC_ACTIVE_VIEW_MEASURABLE_IMPRESSIONS",
|
|
157
|
+
"METRIC_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS",
|
|
158
|
+
"METRIC_ACTIVE_VIEW_PCT_MEASURABLE_IMPRESSIONS",
|
|
159
|
+
"METRIC_ACTIVE_VIEW_PCT_VIEWABLE_IMPRESSIONS",
|
|
160
|
+
],
|
|
161
|
+
filters: [
|
|
162
|
+
{ type: "FILTER_ADVERTISER", value: "{advertiserId}" },
|
|
163
|
+
{ type: "FILTER_MEDIA_PLAN", value: "{campaignId}" },
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
video: {
|
|
169
|
+
name: "Video Performance Report",
|
|
170
|
+
description: "Video engagement metrics",
|
|
171
|
+
querySpec: {
|
|
172
|
+
metadata: {
|
|
173
|
+
title: "Video Performance",
|
|
174
|
+
dataRange: {
|
|
175
|
+
range: "LAST_7_DAYS",
|
|
176
|
+
},
|
|
177
|
+
format: "CSV",
|
|
178
|
+
},
|
|
179
|
+
params: {
|
|
180
|
+
type: "STANDARD",
|
|
181
|
+
groupBys: ["FILTER_DATE", "FILTER_CREATIVE"],
|
|
182
|
+
metrics: [
|
|
183
|
+
"METRIC_IMPRESSIONS",
|
|
184
|
+
"METRIC_VIDEO_PLAYS",
|
|
185
|
+
"METRIC_VIDEO_FIRST_QUARTILE_COMPLETIONS",
|
|
186
|
+
"METRIC_VIDEO_MIDPOINTS",
|
|
187
|
+
"METRIC_VIDEO_THIRD_QUARTILE_COMPLETIONS",
|
|
188
|
+
"METRIC_VIDEO_COMPLETIONS",
|
|
189
|
+
"METRIC_VIDEO_COMPLETION_RATE",
|
|
190
|
+
"METRIC_VIDEO_SKIPS",
|
|
191
|
+
],
|
|
192
|
+
filters: [
|
|
193
|
+
{ type: "FILTER_ADVERTISER", value: "{advertiserId}" },
|
|
194
|
+
{ type: "FILTER_MEDIA_PLAN", value: "{campaignId}" },
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
function formatQueryExamplesMarkdown() {
|
|
201
|
+
let markdown = `# Bid Manager Query Examples
|
|
202
|
+
|
|
203
|
+
This resource provides curated example queries for common Bid Manager API use cases.
|
|
204
|
+
|
|
205
|
+
## How to Use These Examples
|
|
206
|
+
|
|
207
|
+
1. Replace placeholder values (e.g., \`{advertiserId}\`, \`{campaignId}\`) with actual IDs
|
|
208
|
+
2. Adjust the \`dataRange\` to your desired time period
|
|
209
|
+
3. Modify \`metrics\` and \`groupBys\` as needed
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
`;
|
|
214
|
+
for (const [, example] of Object.entries(QUERY_EXAMPLES)) {
|
|
215
|
+
markdown += `## ${example.name}\n\n`;
|
|
216
|
+
markdown += `**Description:** ${example.description}\n\n`;
|
|
217
|
+
markdown += "```json\n";
|
|
218
|
+
markdown += JSON.stringify(example.querySpec, null, 2);
|
|
219
|
+
markdown += "\n```\n\n";
|
|
220
|
+
markdown += "---\n\n";
|
|
221
|
+
}
|
|
222
|
+
markdown += `## Tips for Building Queries
|
|
223
|
+
|
|
224
|
+
### Date Ranges
|
|
225
|
+
|
|
226
|
+
Available preset ranges:
|
|
227
|
+
- \`CURRENT_DAY\`, \`PREVIOUS_DAY\`
|
|
228
|
+
- \`WEEK_TO_DATE\`, \`MONTH_TO_DATE\`, \`QUARTER_TO_DATE\`, \`YEAR_TO_DATE\`
|
|
229
|
+
- \`PREVIOUS_WEEK\`, \`PREVIOUS_MONTH\`, \`PREVIOUS_QUARTER\`, \`PREVIOUS_YEAR\`
|
|
230
|
+
- \`LAST_7_DAYS\`, \`LAST_14_DAYS\`, \`LAST_30_DAYS\`, \`LAST_60_DAYS\`, \`LAST_90_DAYS\`, \`LAST_365_DAYS\`
|
|
231
|
+
- \`ALL_TIME\`
|
|
232
|
+
- \`CUSTOM_DATES\` (requires \`customStartDate\` and \`customEndDate\`)
|
|
233
|
+
|
|
234
|
+
### Report Types
|
|
235
|
+
|
|
236
|
+
- \`STANDARD\`: Standard delivery metrics (most common)
|
|
237
|
+
- \`AUDIENCE_COMPOSITION\`: Audience demographic breakdowns (deprecated but functional)
|
|
238
|
+
- \`FLOODLIGHT\`: Conversion tracking reports
|
|
239
|
+
- \`YOUTUBE\`: YouTube-specific metrics
|
|
240
|
+
- \`GRP\`: Gross Rating Point reports
|
|
241
|
+
- \`YOUTUBE_PROGRAMMATIC_GUARANTEED\`: YouTube PG reports
|
|
242
|
+
- \`REACH\`: Reach reports
|
|
243
|
+
- \`UNIQUE_REACH_AUDIENCE\`: Unique reach by audience
|
|
244
|
+
|
|
245
|
+
### Best Practices
|
|
246
|
+
|
|
247
|
+
1. **Minimize groupBys**: More dimensions = larger reports and longer processing
|
|
248
|
+
2. **Filter early**: Use filters to reduce data volume
|
|
249
|
+
3. **Choose relevant metrics**: Only request metrics you need
|
|
250
|
+
4. **Use preset date ranges**: Faster than custom dates when possible
|
|
251
|
+
`;
|
|
252
|
+
return markdown;
|
|
253
|
+
}
|
|
254
|
+
export const queryExamplesResource = {
|
|
255
|
+
uri: "query-examples://all",
|
|
256
|
+
name: "Bid Manager Query Examples",
|
|
257
|
+
description: "Curated example queries for common Bid Manager API use cases",
|
|
258
|
+
mimeType: "text/markdown",
|
|
259
|
+
getContent: () => formatQueryExamplesMarkdown(),
|
|
260
|
+
};
|
|
261
|
+
//# sourceMappingURL=query-examples.resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-examples.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/query-examples.resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-types.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/report-types.resource.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuO5C,eAAO,MAAM,mBAAmB,EAAE,QAOjC,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { REPORT_TYPE_METADATA, DATA_RANGE_DESCRIPTIONS, METRIC_METADATA, FILTER_METADATA, } from "../../../generated/index.js";
|
|
2
|
+
function getMetricsForReportType(reportType) {
|
|
3
|
+
const metrics = [];
|
|
4
|
+
for (const [metric, meta] of Object.entries(METRIC_METADATA)) {
|
|
5
|
+
if (meta.reportTypes?.includes(reportType)) {
|
|
6
|
+
metrics.push(metric);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return metrics.sort();
|
|
10
|
+
}
|
|
11
|
+
function getFiltersForReportType(reportType) {
|
|
12
|
+
const filters = [];
|
|
13
|
+
for (const [filter, meta] of Object.entries(FILTER_METADATA)) {
|
|
14
|
+
if (meta.reportTypes?.includes(reportType)) {
|
|
15
|
+
filters.push(filter);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return filters.sort();
|
|
19
|
+
}
|
|
20
|
+
function formatReportTypesMarkdown() {
|
|
21
|
+
let markdown = `# Bid Manager API Report Types Reference
|
|
22
|
+
|
|
23
|
+
This resource provides a complete reference of all available report types and date range presets for Bid Manager API queries.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Report Types
|
|
28
|
+
|
|
29
|
+
| Report Type | Display Name | Description |
|
|
30
|
+
|-------------|--------------|-------------|
|
|
31
|
+
`;
|
|
32
|
+
for (const [type, meta] of Object.entries(REPORT_TYPE_METADATA)) {
|
|
33
|
+
markdown += `| \`${type}\` | ${meta.displayName} | ${meta.description} |\n`;
|
|
34
|
+
}
|
|
35
|
+
markdown += `
|
|
36
|
+
|
|
37
|
+
### When to Use Each Report Type
|
|
38
|
+
|
|
39
|
+
#### STANDARD (Most Common)
|
|
40
|
+
Use for general delivery metrics, campaign performance, and cost analysis.
|
|
41
|
+
\`\`\`json
|
|
42
|
+
{
|
|
43
|
+
"reportType": "STANDARD",
|
|
44
|
+
"groupBys": ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
|
|
45
|
+
"metrics": ["METRIC_IMPRESSIONS", "METRIC_CLICKS", "METRIC_TOTAL_MEDIA_COST_ADVERTISER"]
|
|
46
|
+
}
|
|
47
|
+
\`\`\`
|
|
48
|
+
|
|
49
|
+
#### FLOODLIGHT
|
|
50
|
+
Use when analyzing conversion data from Floodlight tags.
|
|
51
|
+
\`\`\`json
|
|
52
|
+
{
|
|
53
|
+
"reportType": "FLOODLIGHT",
|
|
54
|
+
"groupBys": ["FILTER_DATE", "FILTER_FLOODLIGHT_ACTIVITY"],
|
|
55
|
+
"metrics": ["METRIC_TOTAL_CONVERSIONS", "METRIC_POST_CLICK_CONVERSIONS", "METRIC_POST_VIEW_CONVERSIONS"]
|
|
56
|
+
}
|
|
57
|
+
\`\`\`
|
|
58
|
+
|
|
59
|
+
#### YOUTUBE
|
|
60
|
+
Use for YouTube-specific campaign analysis.
|
|
61
|
+
\`\`\`json
|
|
62
|
+
{
|
|
63
|
+
"reportType": "YOUTUBE",
|
|
64
|
+
"groupBys": ["FILTER_DATE", "FILTER_LINE_ITEM"],
|
|
65
|
+
"metrics": ["METRIC_TRUEVIEW_VIEWS", "METRIC_TRUEVIEW_VIEW_RATE", "METRIC_TRUEVIEW_CPV_ADVERTISER"]
|
|
66
|
+
}
|
|
67
|
+
\`\`\`
|
|
68
|
+
|
|
69
|
+
#### REACH / UNIQUE_REACH_AUDIENCE
|
|
70
|
+
Use for reach and frequency analysis.
|
|
71
|
+
\`\`\`json
|
|
72
|
+
{
|
|
73
|
+
"reportType": "REACH",
|
|
74
|
+
"groupBys": ["FILTER_DATE"],
|
|
75
|
+
"metrics": ["METRIC_UNIQUE_REACH_IMPRESSION_REACH", "METRIC_UNIQUE_REACH_AVERAGE_IMPRESSION_FREQUENCY"]
|
|
76
|
+
}
|
|
77
|
+
\`\`\`
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Date Range Presets
|
|
82
|
+
|
|
83
|
+
Date ranges can be specified either as a preset or with custom dates.
|
|
84
|
+
|
|
85
|
+
### Available Presets
|
|
86
|
+
|
|
87
|
+
| Preset | Description |
|
|
88
|
+
|--------|-------------|
|
|
89
|
+
`;
|
|
90
|
+
for (const [preset, description] of Object.entries(DATA_RANGE_DESCRIPTIONS)) {
|
|
91
|
+
markdown += `| \`${preset}\` | ${description} |\n`;
|
|
92
|
+
}
|
|
93
|
+
markdown += `
|
|
94
|
+
|
|
95
|
+
### Using Presets
|
|
96
|
+
|
|
97
|
+
\`\`\`json
|
|
98
|
+
{
|
|
99
|
+
"dateRange": {
|
|
100
|
+
"preset": "LAST_7_DAYS"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
\`\`\`
|
|
104
|
+
|
|
105
|
+
### Using Custom Dates
|
|
106
|
+
|
|
107
|
+
\`\`\`json
|
|
108
|
+
{
|
|
109
|
+
"dateRange": {
|
|
110
|
+
"startDate": "2025-01-01",
|
|
111
|
+
"endDate": "2025-01-31"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Best Practices
|
|
119
|
+
|
|
120
|
+
1. **Use STANDARD for most queries** - It supports the widest range of filters and metrics
|
|
121
|
+
2. **Match metrics to report type** - Some metrics are only available in specific report types
|
|
122
|
+
3. **Use preset date ranges when possible** - Faster processing than custom dates
|
|
123
|
+
4. **Consider data freshness** - CURRENT_DAY data may be incomplete; PREVIOUS_DAY is safer for accurate reporting
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Compatible Metrics by Report Type
|
|
128
|
+
|
|
129
|
+
Each report type supports a specific set of metrics. Using incompatible metrics will result in an API error.
|
|
130
|
+
|
|
131
|
+
### STANDARD Report Metrics (${getMetricsForReportType("STANDARD").length} metrics)
|
|
132
|
+
Most general metrics are available. See \`metric-types://all\` for the full list.
|
|
133
|
+
|
|
134
|
+
### YOUTUBE Report Metrics (${getMetricsForReportType("YOUTUBE").length} metrics)
|
|
135
|
+
Includes TrueView-specific metrics:
|
|
136
|
+
\`\`\`
|
|
137
|
+
${getMetricsForReportType("YOUTUBE")
|
|
138
|
+
.filter((m) => m.includes("TRUEVIEW"))
|
|
139
|
+
.slice(0, 10)
|
|
140
|
+
.join("\n")}
|
|
141
|
+
${getMetricsForReportType("YOUTUBE").filter((m) => m.includes("TRUEVIEW")).length > 10 ? "... and more" : ""}
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
### REACH/UNIQUE_REACH_AUDIENCE Report Metrics (${getMetricsForReportType("REACH").length} metrics)
|
|
145
|
+
\`\`\`
|
|
146
|
+
${getMetricsForReportType("REACH").join("\n")}
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
### GRP Report Metrics (${getMetricsForReportType("GRP").length} metrics)
|
|
150
|
+
Includes GRP-specific metrics. See \`metric-types://all\` for details.
|
|
151
|
+
|
|
152
|
+
### FLOODLIGHT Report Metrics (${getMetricsForReportType("FLOODLIGHT").length} metrics)
|
|
153
|
+
Includes Floodlight conversion metrics. See \`metric-types://all\` for details.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Compatible Filters by Report Type
|
|
158
|
+
|
|
159
|
+
### STANDARD Report Filters (${getFiltersForReportType("STANDARD").length} filters)
|
|
160
|
+
Most general filters are available. See \`filter-types://all\` for the full list.
|
|
161
|
+
|
|
162
|
+
### YOUTUBE Report Filters (${getFiltersForReportType("YOUTUBE").length} filters)
|
|
163
|
+
Includes TrueView-specific filters:
|
|
164
|
+
\`\`\`
|
|
165
|
+
${getFiltersForReportType("YOUTUBE")
|
|
166
|
+
.filter((f) => f.includes("TRUEVIEW"))
|
|
167
|
+
.slice(0, 10)
|
|
168
|
+
.join("\n")}
|
|
169
|
+
${getFiltersForReportType("YOUTUBE").filter((f) => f.includes("TRUEVIEW")).length > 10 ? "... and more" : ""}
|
|
170
|
+
\`\`\`
|
|
171
|
+
|
|
172
|
+
### GRP Report Filters (${getFiltersForReportType("GRP").length} filters)
|
|
173
|
+
Includes Nielsen-specific filters:
|
|
174
|
+
\`\`\`
|
|
175
|
+
${getFiltersForReportType("GRP")
|
|
176
|
+
.filter((f) => f.includes("NIELSEN"))
|
|
177
|
+
.join("\n") || "See filter-types://all for details"}
|
|
178
|
+
\`\`\`
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Additional Resources
|
|
183
|
+
|
|
184
|
+
For complete lists, fetch these MCP Resources:
|
|
185
|
+
- \`metric-types://all\` - All metrics with report type compatibility
|
|
186
|
+
- \`filter-types://all\` - All filters with report type compatibility
|
|
187
|
+
- \`compatibility-rules://all\` - Detailed compatibility rules and warnings
|
|
188
|
+
`;
|
|
189
|
+
return markdown;
|
|
190
|
+
}
|
|
191
|
+
export const reportTypesResource = {
|
|
192
|
+
uri: "report-types://all",
|
|
193
|
+
name: "Bid Manager Report Types",
|
|
194
|
+
description: "Complete reference of all available Bid Manager API report types and date range presets",
|
|
195
|
+
mimeType: "text/markdown",
|
|
196
|
+
getContent: () => formatReportTypesMarkdown(),
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=report-types.resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-types.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/report-types.resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/index.ts"],"names":[],"mappings":"AAOA,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/index.ts"],"names":[],"mappings":"AAOA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface Resource {
|
|
2
|
+
uri: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
getContent: () => string;
|
|
7
|
+
}
|
|
8
|
+
export interface ResourceTemplate {
|
|
9
|
+
uriTemplate: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
mimeType: string;
|
|
13
|
+
getContent: (params: Record<string, string>) => string;
|
|
14
|
+
parseUri: (uri: string) => Record<string, string> | null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/types.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,QAAQ;IAEvB,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAKD,MAAM,WAAW,gBAAgB;IAE/B,WAAW,EAAE,MAAM,CAAC;IAEpB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IAEvD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { Logger } from "pino";
|
|
3
|
+
export declare function createMcpServer(logger: Logger, sessionId?: string, gcsBucket?: string): Promise<McpServer>;
|
|
4
|
+
export declare function runStdioServer(server: McpServer, logger: Logger): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAiBnC,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAyHpB;AAKD,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { allTools } from "./tools/index.js";
|
|
4
|
+
import { allResources } from "./resources/index.js";
|
|
5
|
+
import { promptRegistry } from "./prompts/index.js";
|
|
6
|
+
import { createOperationContext } from "@cesteral/shared";
|
|
7
|
+
import { sessionServiceStore } from "../services/session-services.js";
|
|
8
|
+
import { registerRunCustomQueryAsyncTool } from "./tools/definitions/run-custom-query-async.tool.js";
|
|
9
|
+
import { extractZodShape, registerToolsFromDefinitions, registerPromptsFromDefinitions, registerStaticResourcesFromDefinitions, InteractionLogger, isConformanceFixturesEnabled, } from "@cesteral/shared";
|
|
10
|
+
import packageJson from "../../package.json" with { type: "json" };
|
|
11
|
+
const DBM_PACKAGE_NAME = "dbm-mcp";
|
|
12
|
+
const DBM_PLATFORM = "dv360-reporting";
|
|
13
|
+
const dbmWorkflowIdByToolName = {
|
|
14
|
+
dbm_get_campaign_delivery: "mcp.troubleshoot.delivery",
|
|
15
|
+
dbm_get_performance_metrics: "mcp.troubleshoot.delivery",
|
|
16
|
+
dbm_get_historical_metrics: "mcp.troubleshoot.delivery",
|
|
17
|
+
dbm_get_pacing_status: "mcp.troubleshoot.delivery",
|
|
18
|
+
dbm_run_custom_query: "mcp.execute.dbm_custom_query",
|
|
19
|
+
};
|
|
20
|
+
export async function createMcpServer(logger, sessionId, gcsBucket) {
|
|
21
|
+
const server = new McpServer({
|
|
22
|
+
name: "dbm-mcp",
|
|
23
|
+
version: packageJson.version,
|
|
24
|
+
description: "DV360 reporting and metrics via Bid Manager API v2. Provides read-only access to campaign delivery, performance, pacing, and historical data.",
|
|
25
|
+
}, {
|
|
26
|
+
capabilities: {
|
|
27
|
+
logging: {},
|
|
28
|
+
},
|
|
29
|
+
instructions: "DV360 reporting server. Provides read-only access to campaign delivery metrics, performance data, pacing, and historical trends via Bid Manager API v2. " +
|
|
30
|
+
"Start with dbm_get_campaign_delivery or dbm_get_pacing_status. Use dbm_run_custom_query for advanced Bid Manager reports. " +
|
|
31
|
+
"See MCP Resources for metric/filter references and query examples.",
|
|
32
|
+
});
|
|
33
|
+
const interactionLogger = new InteractionLogger({
|
|
34
|
+
serverName: DBM_PACKAGE_NAME,
|
|
35
|
+
logger,
|
|
36
|
+
gcsBucket,
|
|
37
|
+
});
|
|
38
|
+
registerToolsFromDefinitions({
|
|
39
|
+
server,
|
|
40
|
+
tools: allTools,
|
|
41
|
+
logger,
|
|
42
|
+
sessionId,
|
|
43
|
+
transformSchema: (schema) => extractZodShape(schema),
|
|
44
|
+
createRequestContext: (params) => createOperationContext({
|
|
45
|
+
operation: params.operation,
|
|
46
|
+
additionalContext: params.additionalContext,
|
|
47
|
+
}),
|
|
48
|
+
defaultTextFormat: "compact",
|
|
49
|
+
packageName: DBM_PACKAGE_NAME,
|
|
50
|
+
platform: DBM_PLATFORM,
|
|
51
|
+
workflowIdByToolName: dbmWorkflowIdByToolName,
|
|
52
|
+
interactionLogger,
|
|
53
|
+
authContextResolver: sessionId
|
|
54
|
+
? () => sessionServiceStore.getAuthContext(sessionId)
|
|
55
|
+
: undefined,
|
|
56
|
+
});
|
|
57
|
+
registerStaticResourcesFromDefinitions({
|
|
58
|
+
server,
|
|
59
|
+
resources: allResources,
|
|
60
|
+
logger,
|
|
61
|
+
});
|
|
62
|
+
if (isConformanceFixturesEnabled()) {
|
|
63
|
+
const { conformanceResources, conformanceResourceTemplate, conformancePrompts } = await import("@cesteral/shared");
|
|
64
|
+
const { ResourceTemplate: McpResourceTemplate } = await import("@modelcontextprotocol/sdk/server/mcp.js");
|
|
65
|
+
registerStaticResourcesFromDefinitions({
|
|
66
|
+
server,
|
|
67
|
+
resources: conformanceResources,
|
|
68
|
+
logger,
|
|
69
|
+
});
|
|
70
|
+
const template = new McpResourceTemplate(conformanceResourceTemplate.uriTemplate, {
|
|
71
|
+
list: undefined,
|
|
72
|
+
});
|
|
73
|
+
server.registerResource("conformance_template", template, {
|
|
74
|
+
description: conformanceResourceTemplate.description,
|
|
75
|
+
mimeType: conformanceResourceTemplate.mimeType,
|
|
76
|
+
}, async (uri, variables) => {
|
|
77
|
+
const id = variables.id || "unknown";
|
|
78
|
+
const content = conformanceResourceTemplate.getContent(id);
|
|
79
|
+
return {
|
|
80
|
+
contents: [
|
|
81
|
+
{
|
|
82
|
+
uri: uri.href,
|
|
83
|
+
mimeType: conformanceResourceTemplate.mimeType,
|
|
84
|
+
text: content,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
registerPromptsFromDefinitions({
|
|
90
|
+
server: server,
|
|
91
|
+
prompts: conformancePrompts,
|
|
92
|
+
logger,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const allPrompts = Array.from(promptRegistry.values()).map((def) => ({
|
|
96
|
+
name: def.prompt.name,
|
|
97
|
+
description: def.prompt.description ?? "",
|
|
98
|
+
arguments: def.prompt.arguments,
|
|
99
|
+
generateMessage: def.generateMessage,
|
|
100
|
+
}));
|
|
101
|
+
registerPromptsFromDefinitions({
|
|
102
|
+
server: server,
|
|
103
|
+
prompts: allPrompts,
|
|
104
|
+
logger,
|
|
105
|
+
});
|
|
106
|
+
registerRunCustomQueryAsyncTool(server, logger, sessionId);
|
|
107
|
+
return server;
|
|
108
|
+
}
|
|
109
|
+
export async function runStdioServer(server, logger) {
|
|
110
|
+
logger.info("Starting MCP server with stdio transport");
|
|
111
|
+
const transport = new StdioServerTransport();
|
|
112
|
+
await server.connect(transport);
|
|
113
|
+
logger.info("MCP server connected via stdio");
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"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"}
|