@rotifer/mcp-server 0.8.1 → 0.8.5

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/dist/cloud.js CHANGED
@@ -1,8 +1,8 @@
1
- import { readFileSync, existsSync } from "node:fs";
1
+ import { readFileSync, existsSync, writeFileSync, mkdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { loadCredentials } from "./auth.js";
4
+ import { validateGeneName } from "./validate-gene-name.js";
4
5
  const ROTIFER_HOME = join(process.env.HOME || process.env.USERPROFILE || "/tmp", ".rotifer");
5
- const DEFAULT_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZpaGJtcHVxbGFtaHhibWFoY2plIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzE4MjUxMTQsImV4cCI6MjA4NzQwMTExNH0.t77n7TZ2jV04lya2sWuv4AYAcXnsc49jcfVIJr0heYQ";
6
6
  let _cachedConfig = null;
7
7
  export function loadCloudConfig() {
8
8
  if (_cachedConfig)
@@ -13,7 +13,7 @@ export function loadCloudConfig() {
13
13
  const file = JSON.parse(readFileSync(configPath, "utf-8"));
14
14
  _cachedConfig = {
15
15
  endpoint: file.endpoint || process.env.ROTIFER_CLOUD_ENDPOINT || "https://cloud.rotifer.dev",
16
- anonKey: file.anonKey || process.env.ROTIFER_CLOUD_ANON_KEY || DEFAULT_ANON_KEY,
16
+ anonKey: file.anonKey || process.env.ROTIFER_CLOUD_ANON_KEY || "",
17
17
  };
18
18
  return _cachedConfig;
19
19
  }
@@ -23,7 +23,7 @@ export function loadCloudConfig() {
23
23
  }
24
24
  _cachedConfig = {
25
25
  endpoint: process.env.ROTIFER_CLOUD_ENDPOINT || "https://cloud.rotifer.dev",
26
- anonKey: process.env.ROTIFER_CLOUD_ANON_KEY || DEFAULT_ANON_KEY,
26
+ anonKey: process.env.ROTIFER_CLOUD_ANON_KEY || "",
27
27
  };
28
28
  return _cachedConfig;
29
29
  }
@@ -78,16 +78,33 @@ async function handleResponse(res) {
78
78
  }
79
79
  return res.json();
80
80
  }
81
+ function compareSemver(a, b) {
82
+ const pa = a.replace(/^v/, "").split(".");
83
+ const pb = b.replace(/^v/, "").split(".");
84
+ for (let i = 0; i < 3; i++) {
85
+ const na = parseInt(pa[i] || "0", 10);
86
+ const nb = parseInt(pb[i] || "0", 10);
87
+ if (na !== nb)
88
+ return na - nb;
89
+ }
90
+ const preA = a.includes("-") ? a.split("-").slice(1).join("-") : "";
91
+ const preB = b.includes("-") ? b.split("-").slice(1).join("-") : "";
92
+ if (!preA && preB)
93
+ return 1;
94
+ if (preA && !preB)
95
+ return -1;
96
+ return preA.localeCompare(preB);
97
+ }
81
98
  function deduplicateLatestVersion(genes) {
82
99
  const map = new Map();
83
100
  for (const g of genes) {
84
101
  const key = `${g.owner}\0${g.name}`;
85
102
  const existing = map.get(key);
86
- if (!existing || new Date(g.created_at) > new Date(existing.created_at)) {
103
+ if (!existing || compareSemver(g.version, existing.version) > 0) {
87
104
  map.set(key, g);
88
105
  }
89
106
  }
90
- return [...map.values()].sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
107
+ return [...map.values()].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
91
108
  }
92
109
  export async function listGenes(options) {
93
110
  const limit = Math.max(1, Math.min(options.perPage || 20, 50));
@@ -115,27 +132,19 @@ export async function listGenes(options) {
115
132
  version: row.version,
116
133
  fidelity: row.fidelity,
117
134
  description: row.description,
118
- wasm_size: row.wasm_size || 0,
135
+ wasmSize: row.wasm_size || 0,
119
136
  downloads: row.downloads || 0,
120
- reputation_score: row.reputation_score ?? null,
121
- previous_version_id: row.previous_version_id ?? null,
137
+ reputationScore: row.reputation_score ?? null,
138
+ previousVersionId: row.previous_version_id ?? null,
122
139
  changelog: row.changelog ?? null,
123
- created_at: row.created_at,
124
- updated_at: row.updated_at,
140
+ createdAt: row.created_at,
141
+ updatedAt: row.updated_at,
125
142
  }));
126
143
  const deduped = deduplicateLatestVersion(allGenes);
127
144
  const paged = deduped.slice(offset, offset + limit);
128
- return { genes: paged, total: deduped.length, page, per_page: limit };
145
+ return { genes: paged, total: deduped.length, page, per_page: limit, has_more: offset + limit < deduped.length };
129
146
  }
130
- export async function getGene(id) {
131
- const params = new URLSearchParams();
132
- params.set("id", `eq.${id}`);
133
- params.set("select", "*, profiles(username)");
134
- const res = await fetch(apiUrl(`/genes?${params}`), { headers: headers() });
135
- const data = await handleResponse(res);
136
- if (data.length === 0)
137
- throw new Error(`Gene '${id}' not found`);
138
- const row = data[0];
147
+ function mapGeneRow(row) {
139
148
  return {
140
149
  id: row.id,
141
150
  name: row.name,
@@ -145,15 +154,69 @@ export async function getGene(id) {
145
154
  fidelity: row.fidelity,
146
155
  description: row.description,
147
156
  phenotype: row.phenotype || {},
148
- wasm_size: row.wasm_size || 0,
157
+ wasmSize: row.wasm_size || 0,
149
158
  downloads: row.downloads || 0,
150
- reputation_score: row.reputation_score ?? null,
151
- previous_version_id: row.previous_version_id ?? null,
159
+ reputationScore: row.reputation_score ?? null,
160
+ previousVersionId: row.previous_version_id ?? null,
152
161
  changelog: row.changelog ?? null,
153
- created_at: row.created_at,
154
- updated_at: row.updated_at,
162
+ createdAt: row.created_at,
163
+ updatedAt: row.updated_at,
155
164
  };
156
165
  }
166
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
167
+ const CONTENT_HASH_RE = /^[0-9a-f]{64}$/i;
168
+ export async function getGene(idOrName) {
169
+ if (CONTENT_HASH_RE.test(idOrName)) {
170
+ return getGeneByContentHash(idOrName);
171
+ }
172
+ const params = new URLSearchParams();
173
+ if (UUID_RE.test(idOrName)) {
174
+ params.set("id", `eq.${idOrName}`);
175
+ }
176
+ else {
177
+ params.set("name", `eq.${idOrName}`);
178
+ params.set("order", "created_at.desc");
179
+ params.set("limit", "1");
180
+ }
181
+ params.set("select", "*, profiles(username)");
182
+ const creds = loadCredentials();
183
+ const h = creds ? authHeaders() : headers();
184
+ if (!creds) {
185
+ params.set("published", "eq.true");
186
+ }
187
+ const res = await fetch(apiUrl(`/genes?${params}`), { headers: h });
188
+ const data = await handleResponse(res);
189
+ if (data.length === 0)
190
+ throw new Error(`Gene '${idOrName}' not found. Verify the UUID/name or use search_genes to find genes.`);
191
+ const gene = mapGeneRow(data[0]);
192
+ if (!data[0].published && creds && data[0].owner_id !== creds.user?.id) {
193
+ throw new Error(`Gene '${idOrName}' not found. Verify the UUID/name or use search_genes to find genes.`);
194
+ }
195
+ return gene;
196
+ }
197
+ export async function getGeneByContentHash(hash) {
198
+ if (!/^[a-f0-9]{64}$/.test(hash)) {
199
+ throw new Error("content_hash must be a 64-character hex string (SHA-256)");
200
+ }
201
+ const params = new URLSearchParams();
202
+ params.set("content_hash", `eq.${hash}`);
203
+ params.set("select", "*, profiles(username)");
204
+ params.set("order", "created_at.desc");
205
+ params.set("limit", "1");
206
+ const creds = loadCredentials();
207
+ const h = creds ? authHeaders() : headers();
208
+ if (!creds) {
209
+ params.set("published", "eq.true");
210
+ }
211
+ const res = await fetch(apiUrl(`/genes?${params}`), { headers: h });
212
+ const data = await handleResponse(res);
213
+ if (data.length === 0)
214
+ throw new Error(`Gene with content_hash '${hash}' not found. Verify the hash or use search_genes.`);
215
+ if (!data[0].published && creds && data[0].owner_id !== creds.user?.id) {
216
+ throw new Error(`Gene with content_hash '${hash}' not found. Verify the hash or use search_genes.`);
217
+ }
218
+ return mapGeneRow(data[0]);
219
+ }
157
220
  export async function getArenaRankings(options) {
158
221
  const limit = Math.min(options.perPage || 20, 50);
159
222
  const offset = ((options.page || 1) - 1) * limit;
@@ -171,21 +234,22 @@ export async function getArenaRankings(options) {
171
234
  const data = await handleResponse(res);
172
235
  const rankings = data.map((row, i) => ({
173
236
  rank: offset + i + 1,
174
- gene_id: row.gene_id,
175
- gene_name: row.genes?.name || "unknown",
237
+ geneId: row.gene_id,
238
+ geneName: row.genes?.name || "unknown",
176
239
  owner: row.genes?.profiles?.username || "unknown",
177
240
  domain: row.domain,
178
241
  fidelity: row.genes?.fidelity || "Unknown",
179
242
  fitness: row.fitness_value,
180
243
  safety: row.safety_score,
181
- success_rate: row.success_rate,
182
- latency_score: row.latency_score,
183
- resource_efficiency: row.resource_efficiency,
184
- total_calls: Number(row.total_calls) || 0,
185
- reputation_score: null,
186
- last_evaluated: row.last_evaluated,
244
+ successRate: row.success_rate,
245
+ latencyScore: row.latency_score,
246
+ resourceEfficiency: row.resource_efficiency,
247
+ totalCalls: Number(row.total_calls) || 0,
248
+ reputationScore: null,
249
+ lastEvaluated: row.last_evaluated,
187
250
  }));
188
- return { rankings, total, domain: options.domain || null };
251
+ const page = options.page || 1;
252
+ return { rankings, total, page, per_page: limit, has_more: offset + limit < total, domain: options.domain || null };
189
253
  }
190
254
  export async function getGeneStatsRpc(geneId) {
191
255
  const res = await fetch(rpcUrl("get_gene_stats"), {
@@ -198,9 +262,9 @@ export async function getGeneStatsRpc(geneId) {
198
262
  throw new Error(data.error);
199
263
  return {
200
264
  total: data.total ?? 0,
201
- last_7d: data.last_7d ?? 0,
202
- last_30d: data.last_30d ?? 0,
203
- last_90d: data.last_90d ?? 0,
265
+ last7d: data.last_7d ?? 0,
266
+ last30d: data.last_30d ?? 0,
267
+ last90d: data.last_90d ?? 0,
204
268
  };
205
269
  }
206
270
  export async function getReputationLeaderboard(limit = 20) {
@@ -209,7 +273,16 @@ export async function getReputationLeaderboard(limit = 20) {
209
273
  headers: headers(),
210
274
  body: JSON.stringify({ p_limit: Math.min(limit, 100) }),
211
275
  });
212
- return handleResponse(res);
276
+ const data = await handleResponse(res);
277
+ return data.map((row) => ({
278
+ userId: row.user_id,
279
+ username: row.username,
280
+ avatarUrl: row.avatar_url ?? null,
281
+ score: row.score,
282
+ genesPublished: row.genes_published,
283
+ totalDownloads: Number(row.total_downloads),
284
+ arenaWins: row.arena_wins,
285
+ }));
213
286
  }
214
287
  export async function getDeveloperProfile(username) {
215
288
  const params = new URLSearchParams();
@@ -220,20 +293,22 @@ export async function getDeveloperProfile(username) {
220
293
  });
221
294
  const data = await handleResponse(res);
222
295
  if (data.length === 0)
223
- throw new Error(`Developer '${username}' not found`);
296
+ throw new Error(`Creator '${username}' not found. Use get_leaderboard to find creator usernames.`);
224
297
  const row = data[0];
225
- const rep = row.developer_reputation?.[0] || row.developer_reputation;
298
+ const rep = Array.isArray(row.developer_reputation)
299
+ ? row.developer_reputation[0]
300
+ : row.developer_reputation;
226
301
  return {
227
- user_id: row.id,
302
+ userId: row.id,
228
303
  username: row.username,
229
- avatar_url: row.avatar_url || null,
230
- created_at: row.created_at,
304
+ avatarUrl: row.avatar_url || null,
305
+ createdAt: row.created_at,
231
306
  reputation: rep
232
307
  ? {
233
308
  score: rep.score,
234
- genes_published: rep.genes_published,
235
- total_downloads: Number(rep.total_downloads),
236
- arena_wins: rep.arena_wins,
309
+ genesPublished: rep.genes_published,
310
+ totalDownloads: Number(rep.total_downloads),
311
+ arenaWins: rep.arena_wins,
237
312
  }
238
313
  : null,
239
314
  };
@@ -241,19 +316,25 @@ export async function getDeveloperProfile(username) {
241
316
  export async function listGeneVersions(ownerName, geneName) {
242
317
  const params = new URLSearchParams();
243
318
  params.set("name", `eq.${geneName}`);
244
- params.set("published", "eq.true");
245
- params.set("select", "id,version,changelog,previous_version_id,created_at,profiles(username)");
319
+ params.set("select", "id,version,changelog,previous_version_id,created_at,published,owner_id,profiles(username)");
246
320
  params.set("order", "created_at.asc");
247
- const res = await fetch(apiUrl(`/genes?${params}`), { headers: headers() });
321
+ const creds = loadCredentials();
322
+ const h = creds ? authHeaders() : headers();
323
+ if (!creds) {
324
+ params.set("published", "eq.true");
325
+ }
326
+ const res = await fetch(apiUrl(`/genes?${params}`), { headers: h });
248
327
  const data = await handleResponse(res);
328
+ const userId = creds?.user?.id;
249
329
  return data
250
330
  .filter((row) => (row.profiles?.username || "").toLowerCase() === ownerName.toLowerCase())
331
+ .filter((row) => row.published || (userId && row.owner_id === userId))
251
332
  .map((row) => ({
252
333
  id: row.id,
253
334
  version: row.version,
254
335
  changelog: row.changelog ?? null,
255
- previous_version_id: row.previous_version_id ?? null,
256
- created_at: row.created_at,
336
+ previousVersionId: row.previous_version_id ?? null,
337
+ createdAt: row.created_at,
257
338
  }));
258
339
  }
259
340
  export async function arenaSubmitCloud(geneId, fitness) {
@@ -266,7 +347,6 @@ export async function arenaSubmitCloud(geneId, fitness) {
266
347
  success_rate: fitness.success_rate,
267
348
  latency_score: fitness.latency_score,
268
349
  resource_efficiency: fitness.resource_efficiency,
269
- total_calls: 0,
270
350
  last_evaluated: new Date().toISOString(),
271
351
  };
272
352
  const res = await fetch(apiUrl("/arena_entries"), {
@@ -280,13 +360,13 @@ export async function arenaSubmitCloud(geneId, fitness) {
280
360
  const data = await handleResponse(res);
281
361
  const row = data[0];
282
362
  return {
283
- gene_id: row.gene_id,
363
+ geneId: row.gene_id,
284
364
  domain: row.domain,
285
- fitness_value: row.fitness_value,
286
- safety_score: row.safety_score,
287
- success_rate: row.success_rate,
288
- latency_score: row.latency_score,
289
- resource_efficiency: row.resource_efficiency,
365
+ fitnessValue: row.fitness_value,
366
+ safetyScore: row.safety_score,
367
+ successRate: row.success_rate,
368
+ latencyScore: row.latency_score,
369
+ resourceEfficiency: row.resource_efficiency,
290
370
  };
291
371
  }
292
372
  export async function getGeneReputation(geneId) {
@@ -305,26 +385,26 @@ export async function getGeneReputation(geneId) {
305
385
  });
306
386
  const score = await handleResponse(rpcRes);
307
387
  return {
308
- gene_id: geneId,
309
- gene_name: geneId,
388
+ geneId,
389
+ geneName: geneId,
310
390
  score,
311
- arena_score: 0,
312
- usage_score: 0,
313
- stability_score: 0,
391
+ arenaScore: 0,
392
+ usageScore: 0,
393
+ stabilityScore: 0,
314
394
  epoch: 1,
315
- computed_at: new Date().toISOString(),
395
+ computedAt: new Date().toISOString(),
316
396
  };
317
397
  }
318
398
  const row = data[0];
319
399
  return {
320
- gene_id: geneId,
321
- gene_name: row.genes?.name || geneId,
400
+ geneId,
401
+ geneName: row.genes?.name || geneId,
322
402
  score: row.score,
323
- arena_score: row.arena_score,
324
- usage_score: row.usage_score,
325
- stability_score: row.stability_score,
403
+ arenaScore: row.arena_score,
404
+ usageScore: row.usage_score,
405
+ stabilityScore: row.stability_score,
326
406
  epoch: row.epoch,
327
- computed_at: row.computed_at,
407
+ computedAt: row.computed_at,
328
408
  };
329
409
  }
330
410
  export async function getMyReputation() {
@@ -341,20 +421,20 @@ export async function getMyReputation() {
341
421
  return {
342
422
  username: creds.user.username,
343
423
  score: 0,
344
- genes_published: 0,
345
- total_downloads: 0,
346
- arena_wins: 0,
347
- community_bonus: 0,
424
+ genesPublished: 0,
425
+ totalDownloads: 0,
426
+ arenaWins: 0,
427
+ communityBonus: 0,
348
428
  };
349
429
  }
350
430
  const row = data[0];
351
431
  return {
352
432
  username: creds.user.username,
353
433
  score: row.score,
354
- genes_published: row.genes_published,
355
- total_downloads: Number(row.total_downloads),
356
- arena_wins: row.arena_wins,
357
- community_bonus: row.community_bonus ?? 0,
434
+ genesPublished: row.genes_published,
435
+ totalDownloads: Number(row.total_downloads),
436
+ arenaWins: row.arena_wins,
437
+ communityBonus: row.community_bonus ?? 0,
358
438
  };
359
439
  }
360
440
  export async function suggestDomain(description) {
@@ -363,7 +443,12 @@ export async function suggestDomain(description) {
363
443
  headers: headers(),
364
444
  body: JSON.stringify({ p_description: description }),
365
445
  });
366
- return handleResponse(res);
446
+ const data = await handleResponse(res);
447
+ return data.map((row) => ({
448
+ domain: row.domain,
449
+ description: row.description ?? null,
450
+ geneCount: row.gene_count,
451
+ }));
367
452
  }
368
453
  // ── MCP Call Logging (fire-and-forget) ──
369
454
  export function logMcpCall(entry) {
@@ -396,10 +481,10 @@ export async function getMcpStats(days = 7) {
396
481
  headers: requireAuthHeaders(),
397
482
  });
398
483
  const data = await handleResponse(res);
399
- const totalCalls = data.length;
484
+ const total = data.length;
400
485
  const successCount = data.filter((r) => r.success).length;
401
- const avgLatency = totalCalls > 0
402
- ? Math.round(data.reduce((s, r) => s + r.latency_ms, 0) / totalCalls)
486
+ const avgLatency = total > 0
487
+ ? Math.round(data.reduce((s, r) => s + r.latency_ms, 0) / total)
403
488
  : 0;
404
489
  const toolCounts = new Map();
405
490
  const geneCounts = new Map();
@@ -412,24 +497,23 @@ export async function getMcpStats(days = 7) {
412
497
  const topTools = [...toolCounts.entries()]
413
498
  .sort((a, b) => b[1] - a[1])
414
499
  .slice(0, 10)
415
- .map(([tool_name, count]) => ({ tool_name, count }));
500
+ .map(([toolName, count]) => ({ toolName, count }));
416
501
  const topGenes = [...geneCounts.entries()]
417
502
  .sort((a, b) => b[1] - a[1])
418
503
  .slice(0, 10)
419
- .map(([gene_id, count]) => ({ gene_id, count }));
504
+ .map(([geneId, count]) => ({ geneId, count }));
420
505
  return {
421
506
  period: `${days}d`,
422
- total_calls: totalCalls,
423
- success_rate: totalCalls > 0 ? +(successCount / totalCalls).toFixed(4) : 0,
424
- avg_latency_ms: avgLatency,
425
- top_tools: topTools,
426
- top_genes: topGenes,
507
+ totalCalls: total,
508
+ successRate: total > 0 ? +(successCount / total).toFixed(4) : 0,
509
+ avgLatencyMs: avgLatency,
510
+ topTools,
511
+ topGenes,
427
512
  };
428
513
  }
429
- export async function installGene(geneId, projectRoot) {
430
- const { writeFileSync, mkdirSync } = require("node:fs");
431
- const { join } = require("node:path");
514
+ export async function installGene(geneId, projectRoot, shouldForce) {
432
515
  const gene = await getGene(geneId);
516
+ validateGeneName(gene.name);
433
517
  const configPath = join(projectRoot, "rotifer.json");
434
518
  let genesDir = "genes";
435
519
  if (existsSync(configPath)) {
@@ -440,6 +524,9 @@ export async function installGene(geneId, projectRoot) {
440
524
  catch { /* use default */ }
441
525
  }
442
526
  const geneDir = join(projectRoot, genesDir, gene.name);
527
+ if (existsSync(geneDir) && !shouldForce) {
528
+ throw new Error(`Gene '${gene.name}' already exists at ${geneDir}. Use force=true to overwrite.`);
529
+ }
443
530
  mkdirSync(geneDir, { recursive: true });
444
531
  writeFileSync(join(geneDir, "phenotype.json"), JSON.stringify(gene.phenotype || {}, null, 2) + "\n");
445
532
  writeFileSync(join(geneDir, ".cloud-manifest.json"), JSON.stringify({
@@ -458,11 +545,11 @@ export async function installGene(geneId, projectRoot) {
458
545
  }
459
546
  catch { /* non-fatal */ }
460
547
  return {
461
- gene_id: gene.id,
548
+ geneId: gene.id,
462
549
  name: gene.name,
463
550
  domain: gene.domain,
464
551
  fidelity: gene.fidelity,
465
- installed_to: geneDir,
552
+ installedTo: geneDir,
466
553
  };
467
554
  }
468
555
  //# sourceMappingURL=cloud.js.map
package/dist/cloud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function startHttpServer(opts?: {
2
+ port?: number;
3
+ }): Promise<void>;
package/dist/http.js ADDED
@@ -0,0 +1,60 @@
1
+ import http from "node:http";
2
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
3
+ import { createServer } from "./server.js";
4
+ const DEFAULT_PORT = 3000;
5
+ export async function startHttpServer(opts) {
6
+ const port = opts?.port ?? parseInt(process.env.PORT || String(DEFAULT_PORT), 10);
7
+ const httpServer = http.createServer(async (req, res) => {
8
+ const origin = req.headers.origin || "";
9
+ const allowedOrigin = /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?$/.test(origin) ? origin : "";
10
+ res.setHeader("Access-Control-Allow-Origin", allowedOrigin);
11
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
12
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, mcp-session-id");
13
+ res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
14
+ if (req.method === "OPTIONS") {
15
+ res.writeHead(204);
16
+ res.end();
17
+ return;
18
+ }
19
+ const url = req.url?.split("?")[0];
20
+ if (url === "/health") {
21
+ res.writeHead(200, { "Content-Type": "application/json" });
22
+ res.end(JSON.stringify({ status: "ok", transport: "streamable-http" }));
23
+ return;
24
+ }
25
+ if (url === "/mcp" || url === "/") {
26
+ try {
27
+ const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
28
+ const server = createServer();
29
+ res.on("close", () => {
30
+ transport.close();
31
+ server.close();
32
+ });
33
+ await server.connect(transport);
34
+ await transport.handleRequest(req, res);
35
+ }
36
+ catch (err) {
37
+ console.error("Transport error:", err);
38
+ if (!res.headersSent) {
39
+ res.writeHead(500, { "Content-Type": "application/json" });
40
+ res.end(JSON.stringify({ error: "Internal server error" }));
41
+ }
42
+ }
43
+ }
44
+ else {
45
+ res.writeHead(404, { "Content-Type": "application/json" });
46
+ res.end(JSON.stringify({ error: "Not found. Use /mcp for MCP endpoint." }));
47
+ }
48
+ });
49
+ httpServer.listen(port, () => {
50
+ console.error(`Rotifer MCP Server (Streamable HTTP) listening on http://localhost:${port}/mcp`);
51
+ });
52
+ const shutdown = () => {
53
+ console.error("Shutting down...");
54
+ httpServer.close();
55
+ process.exit(0);
56
+ };
57
+ process.on("SIGINT", shutdown);
58
+ process.on("SIGTERM", shutdown);
59
+ }
60
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}