@sebastienrousseau/cloudcdn-mcp 0.1.1

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/server.js ADDED
@@ -0,0 +1,87 @@
1
+ /**
2
+ * CloudCDN MCP server definition.
3
+ *
4
+ * Wires every tool and resource registration into an `McpServer` instance.
5
+ * The result is a fully configured server that the entry point (or any
6
+ * embedder) just needs to `.connect(transport)`.
7
+ *
8
+ * Registers 42 tools across 9 API planes + 6 read-only resources:
9
+ *
10
+ * Storage (4) storage_list / upload / delete / batch_upload
11
+ * Core (8) statistics_summary, zone_(list|get|create|delete),
12
+ * domain_add, rules_(get|update)
13
+ * Assets (3) assets_list, asset_metadata_get, assets_search
14
+ * Insights (6) insights_summary / top_assets / geography / errors /
15
+ * asset, audit_logs
16
+ * Delivery (5) transform_image, cache_purge, signed_url_generate,
17
+ * stream_playlist, pipeline_ingest
18
+ * AI (9) semantic_search, health_check, generate_alt_text,
19
+ * smart_crop, moderate_image, placeholder_lqip,
20
+ * placeholder_blurhash, chat_ask, remove_background
21
+ * Webhooks (3) webhook_(list|create|delete)
22
+ * Tokens (3) token_(list|create|revoke)
23
+ * Logs (1) logs_query
24
+ *
25
+ * Resources (6) manifest, zones, rules, health, openapi, insights-today
26
+ *
27
+ * Each tool maps to a CloudCDN HTTP endpoint via the shared API client.
28
+ *
29
+ * @module @sebastienrousseau/cloudcdn-mcp/server
30
+ */
31
+
32
+ import { createRequire } from 'node:module';
33
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
34
+ import { z } from 'zod';
35
+
36
+ import { registerStorageTools } from './lib/tools/storage.js';
37
+ import { registerCoreTools } from './lib/tools/core.js';
38
+ import { registerAssetsTools } from './lib/tools/assets.js';
39
+ import { registerInsightsTools } from './lib/tools/insights.js';
40
+ import { registerDeliveryTools } from './lib/tools/delivery.js';
41
+ import { registerAiTools } from './lib/tools/ai.js';
42
+ import { registerWebhookTools } from './lib/tools/webhooks.js';
43
+ import { registerTokenTools } from './lib/tools/tokens.js';
44
+ import { registerLogTools } from './lib/tools/logs.js';
45
+ import { registerAccountTools } from './lib/tools/account.js';
46
+ import { registerResources } from './lib/resources/index.js';
47
+
48
+ // Report the published package version to MCP clients, so it cannot
49
+ // drift from package.json.
50
+ const { version } = createRequire(import.meta.url)('./package.json');
51
+
52
+ /**
53
+ * Build a fully-wired MCP server with every CloudCDN tool and resource
54
+ * registered. The caller is responsible for attaching a transport
55
+ * (`stdio`, Streamable HTTP, SSE, …) and calling `.connect()`.
56
+ *
57
+ * @returns {InstanceType<typeof McpServer>} A configured MCP server.
58
+ *
59
+ * @example
60
+ * import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
61
+ * import { createServer } from '@sebastienrousseau/cloudcdn-mcp/server';
62
+ *
63
+ * const server = createServer();
64
+ * await server.connect(new StdioServerTransport());
65
+ */
66
+ export function createServer() {
67
+ const server = new McpServer({
68
+ name: 'cloudcdn',
69
+ version,
70
+ });
71
+
72
+ registerStorageTools(server);
73
+ registerCoreTools(server);
74
+ registerAssetsTools(server);
75
+ registerInsightsTools(server);
76
+ registerDeliveryTools(server);
77
+ registerAiTools(server);
78
+ registerWebhookTools(server);
79
+ registerTokenTools(server);
80
+ registerLogTools(server);
81
+ registerAccountTools(server);
82
+ registerResources(server);
83
+
84
+ return server;
85
+ }
86
+
87
+ export { z };