mcp-http-webhook 1.0.17 → 1.0.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAiD,MAAM,SAAS,CAAC;AAkKpG;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAwzBlE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAiD,MAAM,SAAS,CAAC;AAkKpG;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAkqBlE"}
package/dist/server.js CHANGED
@@ -9,7 +9,6 @@ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
9
9
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
10
10
  const zod_1 = require("zod");
11
11
  const completable_js_1 = require("@modelcontextprotocol/sdk/server/completable.js");
12
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
13
12
  const SubscriptionManager_1 = require("./subscriptions/SubscriptionManager");
14
13
  const WebhookManager_1 = require("./webhooks/WebhookManager");
15
14
  const errors_1 = require("./errors");
@@ -208,7 +207,19 @@ function createMCPServer(config) {
208
207
  });
209
208
  });
210
209
  // Register resources with MCP SDK
211
- config.resources.forEach((resourceDef) => {
210
+ // Sort resources by specificity (most specific first) to ensure proper template matching
211
+ // More specific = more fixed path segments (non-template parts)
212
+ const sortedResources = [...config.resources].sort((a, b) => {
213
+ const aSegments = a.uri.split('/').filter(s => !s.includes('{')).length;
214
+ const bSegments = b.uri.split('/').filter(s => !s.includes('{')).length;
215
+ return bSegments - aSegments; // Descending order (most specific first)
216
+ });
217
+ logger.info('📋 Registering resources in specificity order:');
218
+ sortedResources.forEach((r, i) => {
219
+ const fixedSegments = r.uri.split('/').filter(s => !s.includes('{')).length;
220
+ logger.info(` ${i + 1}. ${r.uri} (specificity: ${fixedSegments})`);
221
+ });
222
+ sortedResources.forEach((resourceDef) => {
212
223
  // Check if URI is a template (contains {})
213
224
  const isTemplate = resourceDef.uri.includes('{') && resourceDef.uri.includes('}');
214
225
  if (isTemplate && resourceDef.list) {
@@ -423,142 +434,9 @@ function createMCPServer(config) {
423
434
  });
424
435
  });
425
436
  }
426
- // Override resources/list handler to properly support pagination with nextCursor
427
- // The MCP SDK's default ResourceTemplate handler doesn't forward nextCursor properly
428
- sdkServer.server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async (request, _extra) => {
429
- const cursor = request.params?.cursor;
430
- const uri = request.params?.uri;
431
- logger.info(`📋 Custom resources/list handler called with cursor=${cursor} uri=${uri}`);
432
- logger.debug(`📋 Full request.params:`, JSON.stringify(request.params, null, 2));
433
- const context = sdkServer._currentContext || { userId: 'anonymous' };
434
- // Find the ResourceTemplate with a list callback that matches the URI pattern
435
- let resourceDef = config.resources.find((r) => r.list);
436
- // If uri is provided, try to find the best matching template
437
- if (uri) {
438
- // Find resource template that matches this URI pattern
439
- const matchingResource = config.resources.find((r) => {
440
- if (!r.uri || !r.list)
441
- return false;
442
- // Convert template pattern to regex (simple version)
443
- const pattern = r.uri.replace(/\{[^}]+\}/g, '[^/]+');
444
- const regex = new RegExp(`^${pattern}$`);
445
- return regex.test(uri);
446
- });
447
- if (matchingResource) {
448
- resourceDef = matchingResource;
449
- }
450
- }
451
- if (!resourceDef || !resourceDef.list) {
452
- return { resources: [] };
453
- }
454
- // Build options with cursor/page info and uri
455
- const options = {};
456
- if (uri) {
457
- options.uri = uri;
458
- }
459
- if (cursor) {
460
- const page = parseInt(cursor, 10);
461
- options.page = !isNaN(page) ? page : 1;
462
- options.cursor = cursor;
463
- }
464
- logger.debug(`📋 Calling resource template list handler with options:`, options);
465
- // Call the list function
466
- const result = await resourceDef.list(context, options);
467
- const resources = Array.isArray(result) ? result : result.resources;
468
- const nextCursor = Array.isArray(result) ? undefined : result.nextCursor;
469
- logger.info(`📋 Custom handler returning ${resources.length} resources, nextCursor=${nextCursor}`);
470
- // Build response matching MCP protocol ListResourcesResult
471
- const response = {
472
- resources: resources.map((r) => ({
473
- uri: r.uri,
474
- name: r.name,
475
- description: r.description,
476
- mimeType: r.mimeType,
477
- metadata: r.metadata,
478
- })),
479
- };
480
- // Add nextCursor if present
481
- if (nextCursor) {
482
- response.nextCursor = nextCursor;
483
- }
484
- return response;
485
- });
486
- // Override resources/read handler to properly match resource templates by specificity
487
- // The MCP SDK's ResourceTemplate matching can be ambiguous with overlapping patterns
488
- sdkServer.server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request, _extra) => {
489
- const uri = request.params?.uri;
490
- if (!uri) {
491
- throw new Error('URI is required for resource read');
492
- }
493
- logger.info(`📄 Custom resources/read handler called for URI: ${uri}`);
494
- const context = sdkServer._currentContext || { userId: 'anonymous' };
495
- // Find the best matching resource template by specificity (most specific first)
496
- // Sort by number of fixed path segments (more specific = more fixed segments)
497
- const matchingResources = config.resources
498
- .map((r) => {
499
- if (!r.uri || !r.read)
500
- return null;
501
- // Convert template pattern to regex
502
- // Count fixed segments vs template variables for specificity scoring
503
- const segments = r.uri.split('/');
504
- const fixedSegments = segments.filter(s => !s.includes('{')).length;
505
- const pattern = r.uri.replace(/\{[^}]+\}/g, '([^/]+)');
506
- const regex = new RegExp(`^${pattern}$`);
507
- if (regex.test(uri)) {
508
- return { resource: r, specificity: fixedSegments, pattern: r.uri };
509
- }
510
- return null;
511
- })
512
- .filter(Boolean)
513
- .sort((a, b) => b.specificity - a.specificity); // Most specific first
514
- if (matchingResources.length === 0) {
515
- throw new Error(`No resource template matches URI: ${uri}`);
516
- }
517
- const bestMatch = matchingResources[0];
518
- logger.info(`📄 Matched URI to resource template: ${bestMatch.pattern} (specificity: ${bestMatch.specificity})`);
519
- // Extract template variables from URI
520
- const pattern = bestMatch.resource.uri.replace(/\{([^}]+)\}/g, '(?<$1>[^/]+)');
521
- const regex = new RegExp(`^${pattern}$`);
522
- const match = uri.match(regex);
523
- const variables = match?.groups || {};
524
- logger.debug(`📄 Extracted variables:`, variables);
525
- // Call the resource read handler
526
- const result = await bestMatch.resource.read(uri, { ...context, ...variables }, {});
527
- const metadata = result.metadata || bestMatch.resource.metadata;
528
- const defaultMimeType = bestMatch.resource.mimeType || 'text/plain';
529
- const normalizeContent = (content) => ({
530
- ...(typeof content === 'string' ? {} : { ...content }),
531
- uri: uri,
532
- text: typeof content === 'string' ? content : content.text,
533
- mimeType: (typeof content === 'string' ? bestMatch.resource.mimeType : content.mimeType) || defaultMimeType,
534
- blob: typeof content === 'string' ? undefined : content.blob,
535
- });
536
- const contents = Array.isArray(result.contents)
537
- ? result.contents.map((content) => normalizeContent(content))
538
- : [normalizeContent(result.contents)];
539
- const response = {
540
- contents,
541
- structuredContent: result.contents,
542
- };
543
- if (metadata) {
544
- response.metadata = metadata;
545
- }
546
- // Forward nextCursorUrl for pagination
547
- if (result.nextCursorUrl) {
548
- response.nextCursorUrl = result.nextCursorUrl;
549
- logger.info(`📄 Custom read handler returning nextCursorUrl=${result.nextCursorUrl}`);
550
- }
551
- // Forward nextCursor for legacy pagination
552
- if (result.nextCursor) {
553
- response.nextCursor = result.nextCursor;
554
- logger.info(`📄 Custom read handler returning nextCursor=${result.nextCursor}`);
555
- }
556
- // Forward pagination metadata
557
- if (result.pagination) {
558
- response._meta = { pagination: result.pagination };
559
- }
560
- return response;
561
- });
437
+ // Note: We register resources in specificity order (most specific first) above
438
+ // The MCP SDK's ResourceTemplate will match against them in registration order
439
+ // This ensures mongodb://.../page/2 matches the page template before the document template
562
440
  // Health check endpoints
563
441
  app.get('/health', (_req, res) => {
564
442
  res.json({ status: 'ok' });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-http-webhook",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "Production-ready MCP server framework with HTTP + webhook-based subscriptions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/server.ts CHANGED
@@ -3,7 +3,6 @@ import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mc
3
3
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
4
4
  import { z } from 'zod';
5
5
  import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
6
- import { ListResourcesRequestSchema, ReadResourceRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
6
  import { MCPServerConfig, MCPServer, Logger, JSONSchema, CredentialFieldDefinition } from './types';
8
7
  import { SubscriptionManager } from './subscriptions/SubscriptionManager';
9
8
  import { WebhookManager } from './webhooks/WebhookManager';
@@ -253,7 +252,21 @@ export function createMCPServer(config: MCPServerConfig): MCPServer {
253
252
  });
254
253
 
255
254
  // Register resources with MCP SDK
256
- config.resources.forEach((resourceDef) => {
255
+ // Sort resources by specificity (most specific first) to ensure proper template matching
256
+ // More specific = more fixed path segments (non-template parts)
257
+ const sortedResources = [...config.resources].sort((a, b) => {
258
+ const aSegments = a.uri.split('/').filter(s => !s.includes('{')).length;
259
+ const bSegments = b.uri.split('/').filter(s => !s.includes('{')).length;
260
+ return bSegments - aSegments; // Descending order (most specific first)
261
+ });
262
+
263
+ logger.info('📋 Registering resources in specificity order:');
264
+ sortedResources.forEach((r, i) => {
265
+ const fixedSegments = r.uri.split('/').filter(s => !s.includes('{')).length;
266
+ logger.info(` ${i + 1}. ${r.uri} (specificity: ${fixedSegments})`);
267
+ });
268
+
269
+ sortedResources.forEach((resourceDef) => {
257
270
  // Check if URI is a template (contains {})
258
271
  const isTemplate = resourceDef.uri.includes('{') && resourceDef.uri.includes('}');
259
272
 
@@ -523,173 +536,9 @@ export function createMCPServer(config: MCPServerConfig): MCPServer {
523
536
  });
524
537
  }
525
538
 
526
- // Override resources/list handler to properly support pagination with nextCursor
527
- // The MCP SDK's default ResourceTemplate handler doesn't forward nextCursor properly
528
- (sdkServer as any).server.setRequestHandler(ListResourcesRequestSchema, async (request: any, _extra: any) => {
529
- const cursor = request.params?.cursor;
530
- const uri = request.params?.uri;
531
-
532
- logger.info(`📋 Custom resources/list handler called with cursor=${cursor} uri=${uri}`);
533
- logger.debug(`📋 Full request.params:`, JSON.stringify(request.params, null, 2));
534
-
535
- const context = (sdkServer as any)._currentContext || { userId: 'anonymous' };
536
-
537
- // Find the ResourceTemplate with a list callback that matches the URI pattern
538
- let resourceDef = config.resources.find((r) => r.list);
539
-
540
- // If uri is provided, try to find the best matching template
541
- if (uri) {
542
- // Find resource template that matches this URI pattern
543
- const matchingResource = config.resources.find((r) => {
544
- if (!r.uri || !r.list) return false;
545
- // Convert template pattern to regex (simple version)
546
- const pattern = r.uri.replace(/\{[^}]+\}/g, '[^/]+');
547
- const regex = new RegExp(`^${pattern}$`);
548
- return regex.test(uri);
549
- });
550
- if (matchingResource) {
551
- resourceDef = matchingResource;
552
- }
553
- }
554
-
555
- if (!resourceDef || !resourceDef.list) {
556
- return { resources: [] };
557
- }
558
-
559
- // Build options with cursor/page info and uri
560
- const options: any = {};
561
- if (uri) {
562
- options.uri = uri;
563
- }
564
- if (cursor) {
565
- const page = parseInt(cursor, 10);
566
- options.page = !isNaN(page) ? page : 1;
567
- options.cursor = cursor;
568
- }
569
-
570
- logger.debug(`📋 Calling resource template list handler with options:`, options);
571
-
572
- // Call the list function
573
- const result = await resourceDef.list(context, options);
574
- const resources = Array.isArray(result) ? result : result.resources;
575
- const nextCursor = Array.isArray(result) ? undefined : result.nextCursor;
576
-
577
- logger.info(`📋 Custom handler returning ${resources.length} resources, nextCursor=${nextCursor}`);
578
-
579
- // Build response matching MCP protocol ListResourcesResult
580
- const response: any = {
581
- resources: resources.map((r: any) => ({
582
- uri: r.uri,
583
- name: r.name,
584
- description: r.description,
585
- mimeType: r.mimeType,
586
- metadata: r.metadata,
587
- })),
588
- };
589
-
590
- // Add nextCursor if present
591
- if (nextCursor) {
592
- response.nextCursor = nextCursor;
593
- }
594
-
595
- return response;
596
- });
597
-
598
- // Override resources/read handler to properly match resource templates by specificity
599
- // The MCP SDK's ResourceTemplate matching can be ambiguous with overlapping patterns
600
- (sdkServer as any).server.setRequestHandler(ReadResourceRequestSchema, async (request: any, _extra: any) => {
601
- const uri = request.params?.uri;
602
-
603
- if (!uri) {
604
- throw new Error('URI is required for resource read');
605
- }
606
-
607
- logger.info(`📄 Custom resources/read handler called for URI: ${uri}`);
608
-
609
- const context = (sdkServer as any)._currentContext || { userId: 'anonymous' };
610
-
611
- // Find the best matching resource template by specificity (most specific first)
612
- // Sort by number of fixed path segments (more specific = more fixed segments)
613
- const matchingResources = config.resources
614
- .map((r) => {
615
- if (!r.uri || !r.read) return null;
616
-
617
- // Convert template pattern to regex
618
- // Count fixed segments vs template variables for specificity scoring
619
- const segments = r.uri.split('/');
620
- const fixedSegments = segments.filter(s => !s.includes('{')).length;
621
- const pattern = r.uri.replace(/\{[^}]+\}/g, '([^/]+)');
622
- const regex = new RegExp(`^${pattern}$`);
623
-
624
- if (regex.test(uri)) {
625
- return { resource: r, specificity: fixedSegments, pattern: r.uri };
626
- }
627
- return null;
628
- })
629
- .filter(Boolean)
630
- .sort((a: any, b: any) => b.specificity - a.specificity); // Most specific first
631
-
632
- if (matchingResources.length === 0) {
633
- throw new Error(`No resource template matches URI: ${uri}`);
634
- }
635
-
636
- const bestMatch = matchingResources[0] as any;
637
- logger.info(`📄 Matched URI to resource template: ${bestMatch.pattern} (specificity: ${bestMatch.specificity})`);
638
-
639
- // Extract template variables from URI
640
- const pattern = bestMatch.resource.uri.replace(/\{([^}]+)\}/g, '(?<$1>[^/]+)');
641
- const regex = new RegExp(`^${pattern}$`);
642
- const match = uri.match(regex);
643
- const variables = match?.groups || {};
644
-
645
- logger.debug(`📄 Extracted variables:`, variables);
646
-
647
- // Call the resource read handler
648
- const result = await bestMatch.resource.read(uri, { ...context, ...variables }, {});
649
-
650
- const metadata = result.metadata || bestMatch.resource.metadata;
651
- const defaultMimeType = bestMatch.resource.mimeType || 'text/plain';
652
-
653
- const normalizeContent = (content: any) => ({
654
- ...(typeof content === 'string' ? {} : { ...content }),
655
- uri: uri,
656
- text: typeof content === 'string' ? content : content.text,
657
- mimeType: (typeof content === 'string' ? bestMatch.resource.mimeType : content.mimeType) || defaultMimeType,
658
- blob: typeof content === 'string' ? undefined : content.blob,
659
- });
660
-
661
- const contents = Array.isArray(result.contents)
662
- ? result.contents.map((content: any) => normalizeContent(content))
663
- : [normalizeContent(result.contents)];
664
-
665
- const response: any = {
666
- contents,
667
- structuredContent: result.contents,
668
- };
669
-
670
- if (metadata) {
671
- response.metadata = metadata;
672
- }
673
-
674
- // Forward nextCursorUrl for pagination
675
- if (result.nextCursorUrl) {
676
- response.nextCursorUrl = result.nextCursorUrl;
677
- logger.info(`📄 Custom read handler returning nextCursorUrl=${result.nextCursorUrl}`);
678
- }
679
-
680
- // Forward nextCursor for legacy pagination
681
- if (result.nextCursor) {
682
- response.nextCursor = result.nextCursor;
683
- logger.info(`📄 Custom read handler returning nextCursor=${result.nextCursor}`);
684
- }
685
-
686
- // Forward pagination metadata
687
- if (result.pagination) {
688
- response._meta = { pagination: result.pagination };
689
- }
690
-
691
- return response;
692
- });
539
+ // Note: We register resources in specificity order (most specific first) above
540
+ // The MCP SDK's ResourceTemplate will match against them in registration order
541
+ // This ensures mongodb://.../page/2 matches the page template before the document template
693
542
 
694
543
  // Health check endpoints
695
544
  app.get('/health', (_req: any, res: any) => {