devbcn-mcp-server 0.0.0-202511150613 → 0.0.0-202511150627

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.
Files changed (3) hide show
  1. package/bun.lock +2 -2
  2. package/dist/index.js +333 -176
  3. package/package.json +2 -2
package/bun.lock CHANGED
@@ -5,13 +5,13 @@
5
5
  "": {
6
6
  "name": "devbcn-mcp-server",
7
7
  "dependencies": {
8
- "@modelcontextprotocol/sdk": "1.21.1",
8
+ "@modelcontextprotocol/sdk": "1.22.0",
9
9
  "express": "5.1.0",
10
10
  },
11
11
  },
12
12
  },
13
13
  "packages": {
14
- "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.21.1", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-UyLFcJLDvUuZbGnaQqXFT32CpPpGj7VS19roLut6gkQVhb439xUzYWbsUvdI3ZPL+2hnFosuugtYWE0Mcs1rmQ=="],
14
+ "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.22.0", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g=="],
15
15
 
16
16
  "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
17
17
 
package/dist/index.js CHANGED
@@ -37372,27 +37372,28 @@ var LATEST_PROTOCOL_VERSION = "2025-06-18";
37372
37372
  var DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26";
37373
37373
  var SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-03-26", "2024-11-05", "2024-10-07"];
37374
37374
  var JSONRPC_VERSION = "2.0";
37375
+ var AssertObjectSchema = exports_external.custom((v) => v !== null && (typeof v === "object" || typeof v === "function"));
37375
37376
  var ProgressTokenSchema = exports_external.union([exports_external.string(), exports_external.number().int()]);
37376
37377
  var CursorSchema = exports_external.string();
37377
37378
  var RequestMetaSchema = exports_external.object({
37378
- progressToken: exports_external.optional(ProgressTokenSchema)
37379
+ progressToken: ProgressTokenSchema.optional()
37379
37380
  }).passthrough();
37380
37381
  var BaseRequestParamsSchema = exports_external.object({
37381
- _meta: exports_external.optional(RequestMetaSchema)
37382
- }).passthrough();
37382
+ _meta: RequestMetaSchema.optional()
37383
+ });
37383
37384
  var RequestSchema = exports_external.object({
37384
37385
  method: exports_external.string(),
37385
- params: exports_external.optional(BaseRequestParamsSchema)
37386
+ params: BaseRequestParamsSchema.passthrough().optional()
37387
+ });
37388
+ var NotificationsParamsSchema = exports_external.object({
37389
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37386
37390
  });
37387
- var BaseNotificationParamsSchema = exports_external.object({
37388
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37389
- }).passthrough();
37390
37391
  var NotificationSchema = exports_external.object({
37391
37392
  method: exports_external.string(),
37392
- params: exports_external.optional(BaseNotificationParamsSchema)
37393
+ params: NotificationsParamsSchema.passthrough().optional()
37393
37394
  });
37394
37395
  var ResultSchema = exports_external.object({
37395
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37396
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37396
37397
  }).passthrough();
37397
37398
  var RequestIdSchema = exports_external.union([exports_external.string(), exports_external.number().int()]);
37398
37399
  var JSONRPCRequestSchema = exports_external.object({
@@ -37432,66 +37433,70 @@ var JSONRPCErrorSchema = exports_external.object({
37432
37433
  var isJSONRPCError = (value) => JSONRPCErrorSchema.safeParse(value).success;
37433
37434
  var JSONRPCMessageSchema = exports_external.union([JSONRPCRequestSchema, JSONRPCNotificationSchema, JSONRPCResponseSchema, JSONRPCErrorSchema]);
37434
37435
  var EmptyResultSchema = ResultSchema.strict();
37436
+ var CancelledNotificationParamsSchema = NotificationsParamsSchema.extend({
37437
+ requestId: RequestIdSchema,
37438
+ reason: exports_external.string().optional()
37439
+ });
37435
37440
  var CancelledNotificationSchema = NotificationSchema.extend({
37436
37441
  method: exports_external.literal("notifications/cancelled"),
37437
- params: BaseNotificationParamsSchema.extend({
37438
- requestId: RequestIdSchema,
37439
- reason: exports_external.string().optional()
37440
- })
37442
+ params: CancelledNotificationParamsSchema
37441
37443
  });
37442
37444
  var IconSchema = exports_external.object({
37443
37445
  src: exports_external.string(),
37444
- mimeType: exports_external.optional(exports_external.string()),
37445
- sizes: exports_external.optional(exports_external.array(exports_external.string()))
37446
- }).passthrough();
37446
+ mimeType: exports_external.string().optional(),
37447
+ sizes: exports_external.array(exports_external.string()).optional()
37448
+ });
37447
37449
  var IconsSchema = exports_external.object({
37448
37450
  icons: exports_external.array(IconSchema).optional()
37449
- }).passthrough();
37451
+ });
37450
37452
  var BaseMetadataSchema = exports_external.object({
37451
37453
  name: exports_external.string(),
37452
- title: exports_external.optional(exports_external.string())
37453
- }).passthrough();
37454
+ title: exports_external.string().optional()
37455
+ });
37454
37456
  var ImplementationSchema = BaseMetadataSchema.extend({
37455
37457
  version: exports_external.string(),
37456
- websiteUrl: exports_external.optional(exports_external.string())
37458
+ websiteUrl: exports_external.string().optional()
37457
37459
  }).merge(IconsSchema);
37458
37460
  var ClientCapabilitiesSchema = exports_external.object({
37459
- experimental: exports_external.optional(exports_external.object({}).passthrough()),
37460
- sampling: exports_external.optional(exports_external.object({}).passthrough()),
37461
- elicitation: exports_external.optional(exports_external.object({}).passthrough()),
37462
- roots: exports_external.optional(exports_external.object({
37463
- listChanged: exports_external.optional(exports_external.boolean())
37464
- }).passthrough())
37465
- }).passthrough();
37461
+ experimental: exports_external.record(exports_external.string(), AssertObjectSchema).optional(),
37462
+ sampling: AssertObjectSchema.optional(),
37463
+ elicitation: exports_external.intersection(exports_external.object({
37464
+ applyDefaults: exports_external.boolean().optional()
37465
+ }).optional(), exports_external.record(exports_external.string(), exports_external.unknown()).optional()),
37466
+ roots: exports_external.object({
37467
+ listChanged: exports_external.boolean().optional()
37468
+ }).optional()
37469
+ });
37470
+ var InitializeRequestParamsSchema = BaseRequestParamsSchema.extend({
37471
+ protocolVersion: exports_external.string(),
37472
+ capabilities: ClientCapabilitiesSchema,
37473
+ clientInfo: ImplementationSchema
37474
+ });
37466
37475
  var InitializeRequestSchema = RequestSchema.extend({
37467
37476
  method: exports_external.literal("initialize"),
37468
- params: BaseRequestParamsSchema.extend({
37469
- protocolVersion: exports_external.string(),
37470
- capabilities: ClientCapabilitiesSchema,
37471
- clientInfo: ImplementationSchema
37472
- })
37477
+ params: InitializeRequestParamsSchema
37473
37478
  });
37474
37479
  var isInitializeRequest = (value) => InitializeRequestSchema.safeParse(value).success;
37475
37480
  var ServerCapabilitiesSchema = exports_external.object({
37476
- experimental: exports_external.optional(exports_external.object({}).passthrough()),
37477
- logging: exports_external.optional(exports_external.object({}).passthrough()),
37478
- completions: exports_external.optional(exports_external.object({}).passthrough()),
37481
+ experimental: exports_external.record(exports_external.string(), AssertObjectSchema).optional(),
37482
+ logging: AssertObjectSchema.optional(),
37483
+ completions: AssertObjectSchema.optional(),
37479
37484
  prompts: exports_external.optional(exports_external.object({
37480
37485
  listChanged: exports_external.optional(exports_external.boolean())
37481
- }).passthrough()),
37482
- resources: exports_external.optional(exports_external.object({
37483
- subscribe: exports_external.optional(exports_external.boolean()),
37484
- listChanged: exports_external.optional(exports_external.boolean())
37485
- }).passthrough()),
37486
- tools: exports_external.optional(exports_external.object({
37487
- listChanged: exports_external.optional(exports_external.boolean())
37488
- }).passthrough())
37489
- }).passthrough();
37486
+ })),
37487
+ resources: exports_external.object({
37488
+ subscribe: exports_external.boolean().optional(),
37489
+ listChanged: exports_external.boolean().optional()
37490
+ }).optional(),
37491
+ tools: exports_external.object({
37492
+ listChanged: exports_external.boolean().optional()
37493
+ }).optional()
37494
+ });
37490
37495
  var InitializeResultSchema = ResultSchema.extend({
37491
37496
  protocolVersion: exports_external.string(),
37492
37497
  capabilities: ServerCapabilitiesSchema,
37493
37498
  serverInfo: ImplementationSchema,
37494
- instructions: exports_external.optional(exports_external.string())
37499
+ instructions: exports_external.string().optional()
37495
37500
  });
37496
37501
  var InitializedNotificationSchema = NotificationSchema.extend({
37497
37502
  method: exports_external.literal("notifications/initialized")
@@ -37503,17 +37508,19 @@ var ProgressSchema = exports_external.object({
37503
37508
  progress: exports_external.number(),
37504
37509
  total: exports_external.optional(exports_external.number()),
37505
37510
  message: exports_external.optional(exports_external.string())
37506
- }).passthrough();
37511
+ });
37512
+ var ProgressNotificationParamsSchema = NotificationsParamsSchema.merge(ProgressSchema).extend({
37513
+ progressToken: ProgressTokenSchema
37514
+ });
37507
37515
  var ProgressNotificationSchema = NotificationSchema.extend({
37508
37516
  method: exports_external.literal("notifications/progress"),
37509
- params: BaseNotificationParamsSchema.merge(ProgressSchema).extend({
37510
- progressToken: ProgressTokenSchema
37511
- })
37517
+ params: ProgressNotificationParamsSchema
37518
+ });
37519
+ var PaginatedRequestParamsSchema = BaseRequestParamsSchema.extend({
37520
+ cursor: CursorSchema.optional()
37512
37521
  });
37513
37522
  var PaginatedRequestSchema = RequestSchema.extend({
37514
- params: BaseRequestParamsSchema.extend({
37515
- cursor: exports_external.optional(CursorSchema)
37516
- }).optional()
37523
+ params: PaginatedRequestParamsSchema.optional()
37517
37524
  });
37518
37525
  var PaginatedResultSchema = ResultSchema.extend({
37519
37526
  nextCursor: exports_external.optional(CursorSchema)
@@ -37521,8 +37528,8 @@ var PaginatedResultSchema = ResultSchema.extend({
37521
37528
  var ResourceContentsSchema = exports_external.object({
37522
37529
  uri: exports_external.string(),
37523
37530
  mimeType: exports_external.optional(exports_external.string()),
37524
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37525
- }).passthrough();
37531
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37532
+ });
37526
37533
  var TextResourceContentsSchema = ResourceContentsSchema.extend({
37527
37534
  text: exports_external.string()
37528
37535
  });
@@ -37561,11 +37568,13 @@ var ListResourceTemplatesRequestSchema = PaginatedRequestSchema.extend({
37561
37568
  var ListResourceTemplatesResultSchema = PaginatedResultSchema.extend({
37562
37569
  resourceTemplates: exports_external.array(ResourceTemplateSchema)
37563
37570
  });
37571
+ var ResourceRequestParamsSchema = BaseRequestParamsSchema.extend({
37572
+ uri: exports_external.string()
37573
+ });
37574
+ var ReadResourceRequestParamsSchema = ResourceRequestParamsSchema;
37564
37575
  var ReadResourceRequestSchema = RequestSchema.extend({
37565
37576
  method: exports_external.literal("resources/read"),
37566
- params: BaseRequestParamsSchema.extend({
37567
- uri: exports_external.string()
37568
- })
37577
+ params: ReadResourceRequestParamsSchema
37569
37578
  });
37570
37579
  var ReadResourceResultSchema = ResultSchema.extend({
37571
37580
  contents: exports_external.array(exports_external.union([TextResourceContentsSchema, BlobResourceContentsSchema]))
@@ -37573,29 +37582,28 @@ var ReadResourceResultSchema = ResultSchema.extend({
37573
37582
  var ResourceListChangedNotificationSchema = NotificationSchema.extend({
37574
37583
  method: exports_external.literal("notifications/resources/list_changed")
37575
37584
  });
37585
+ var SubscribeRequestParamsSchema = ResourceRequestParamsSchema;
37576
37586
  var SubscribeRequestSchema = RequestSchema.extend({
37577
37587
  method: exports_external.literal("resources/subscribe"),
37578
- params: BaseRequestParamsSchema.extend({
37579
- uri: exports_external.string()
37580
- })
37588
+ params: SubscribeRequestParamsSchema
37581
37589
  });
37590
+ var UnsubscribeRequestParamsSchema = ResourceRequestParamsSchema;
37582
37591
  var UnsubscribeRequestSchema = RequestSchema.extend({
37583
37592
  method: exports_external.literal("resources/unsubscribe"),
37584
- params: BaseRequestParamsSchema.extend({
37585
- uri: exports_external.string()
37586
- })
37593
+ params: UnsubscribeRequestParamsSchema
37594
+ });
37595
+ var ResourceUpdatedNotificationParamsSchema = NotificationsParamsSchema.extend({
37596
+ uri: exports_external.string()
37587
37597
  });
37588
37598
  var ResourceUpdatedNotificationSchema = NotificationSchema.extend({
37589
37599
  method: exports_external.literal("notifications/resources/updated"),
37590
- params: BaseNotificationParamsSchema.extend({
37591
- uri: exports_external.string()
37592
- })
37600
+ params: ResourceUpdatedNotificationParamsSchema
37593
37601
  });
37594
37602
  var PromptArgumentSchema = exports_external.object({
37595
37603
  name: exports_external.string(),
37596
37604
  description: exports_external.optional(exports_external.string()),
37597
37605
  required: exports_external.optional(exports_external.boolean())
37598
- }).passthrough();
37606
+ });
37599
37607
  var PromptSchema = BaseMetadataSchema.extend({
37600
37608
  description: exports_external.optional(exports_external.string()),
37601
37609
  arguments: exports_external.optional(exports_external.array(PromptArgumentSchema)),
@@ -37607,35 +37615,36 @@ var ListPromptsRequestSchema = PaginatedRequestSchema.extend({
37607
37615
  var ListPromptsResultSchema = PaginatedResultSchema.extend({
37608
37616
  prompts: exports_external.array(PromptSchema)
37609
37617
  });
37618
+ var GetPromptRequestParamsSchema = BaseRequestParamsSchema.extend({
37619
+ name: exports_external.string(),
37620
+ arguments: exports_external.record(exports_external.string(), exports_external.string()).optional()
37621
+ });
37610
37622
  var GetPromptRequestSchema = RequestSchema.extend({
37611
37623
  method: exports_external.literal("prompts/get"),
37612
- params: BaseRequestParamsSchema.extend({
37613
- name: exports_external.string(),
37614
- arguments: exports_external.optional(exports_external.record(exports_external.string()))
37615
- })
37624
+ params: GetPromptRequestParamsSchema
37616
37625
  });
37617
37626
  var TextContentSchema = exports_external.object({
37618
37627
  type: exports_external.literal("text"),
37619
37628
  text: exports_external.string(),
37620
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37621
- }).passthrough();
37629
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37630
+ });
37622
37631
  var ImageContentSchema = exports_external.object({
37623
37632
  type: exports_external.literal("image"),
37624
37633
  data: Base64Schema,
37625
37634
  mimeType: exports_external.string(),
37626
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37627
- }).passthrough();
37635
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37636
+ });
37628
37637
  var AudioContentSchema = exports_external.object({
37629
37638
  type: exports_external.literal("audio"),
37630
37639
  data: Base64Schema,
37631
37640
  mimeType: exports_external.string(),
37632
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37633
- }).passthrough();
37641
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37642
+ });
37634
37643
  var EmbeddedResourceSchema = exports_external.object({
37635
37644
  type: exports_external.literal("resource"),
37636
37645
  resource: exports_external.union([TextResourceContentsSchema, BlobResourceContentsSchema]),
37637
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37638
- }).passthrough();
37646
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37647
+ });
37639
37648
  var ResourceLinkSchema = ResourceSchema.extend({
37640
37649
  type: exports_external.literal("resource_link")
37641
37650
  });
@@ -37649,7 +37658,7 @@ var ContentBlockSchema = exports_external.union([
37649
37658
  var PromptMessageSchema = exports_external.object({
37650
37659
  role: exports_external.enum(["user", "assistant"]),
37651
37660
  content: ContentBlockSchema
37652
- }).passthrough();
37661
+ });
37653
37662
  var GetPromptResultSchema = ResultSchema.extend({
37654
37663
  description: exports_external.optional(exports_external.string()),
37655
37664
  messages: exports_external.array(PromptMessageSchema)
@@ -37658,26 +37667,27 @@ var PromptListChangedNotificationSchema = NotificationSchema.extend({
37658
37667
  method: exports_external.literal("notifications/prompts/list_changed")
37659
37668
  });
37660
37669
  var ToolAnnotationsSchema = exports_external.object({
37661
- title: exports_external.optional(exports_external.string()),
37662
- readOnlyHint: exports_external.optional(exports_external.boolean()),
37663
- destructiveHint: exports_external.optional(exports_external.boolean()),
37664
- idempotentHint: exports_external.optional(exports_external.boolean()),
37665
- openWorldHint: exports_external.optional(exports_external.boolean())
37666
- }).passthrough();
37670
+ title: exports_external.string().optional(),
37671
+ readOnlyHint: exports_external.boolean().optional(),
37672
+ destructiveHint: exports_external.boolean().optional(),
37673
+ idempotentHint: exports_external.boolean().optional(),
37674
+ openWorldHint: exports_external.boolean().optional()
37675
+ });
37667
37676
  var ToolSchema = BaseMetadataSchema.extend({
37668
- description: exports_external.optional(exports_external.string()),
37677
+ description: exports_external.string().optional(),
37669
37678
  inputSchema: exports_external.object({
37670
37679
  type: exports_external.literal("object"),
37671
- properties: exports_external.optional(exports_external.object({}).passthrough()),
37680
+ properties: exports_external.record(exports_external.string(), AssertObjectSchema).optional(),
37672
37681
  required: exports_external.optional(exports_external.array(exports_external.string()))
37673
- }).passthrough(),
37674
- outputSchema: exports_external.optional(exports_external.object({
37682
+ }),
37683
+ outputSchema: exports_external.object({
37675
37684
  type: exports_external.literal("object"),
37676
- properties: exports_external.optional(exports_external.object({}).passthrough()),
37677
- required: exports_external.optional(exports_external.array(exports_external.string()))
37678
- }).passthrough()),
37685
+ properties: exports_external.record(exports_external.string(), AssertObjectSchema).optional(),
37686
+ required: exports_external.optional(exports_external.array(exports_external.string())),
37687
+ additionalProperties: exports_external.optional(exports_external.boolean())
37688
+ }).optional(),
37679
37689
  annotations: exports_external.optional(ToolAnnotationsSchema),
37680
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37690
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37681
37691
  }).merge(IconsSchema);
37682
37692
  var ListToolsRequestSchema = PaginatedRequestSchema.extend({
37683
37693
  method: exports_external.literal("tools/list")
@@ -37687,62 +37697,66 @@ var ListToolsResultSchema = PaginatedResultSchema.extend({
37687
37697
  });
37688
37698
  var CallToolResultSchema = ResultSchema.extend({
37689
37699
  content: exports_external.array(ContentBlockSchema).default([]),
37690
- structuredContent: exports_external.object({}).passthrough().optional(),
37700
+ structuredContent: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
37691
37701
  isError: exports_external.optional(exports_external.boolean())
37692
37702
  });
37693
37703
  var CompatibilityCallToolResultSchema = CallToolResultSchema.or(ResultSchema.extend({
37694
37704
  toolResult: exports_external.unknown()
37695
37705
  }));
37706
+ var CallToolRequestParamsSchema = BaseRequestParamsSchema.extend({
37707
+ name: exports_external.string(),
37708
+ arguments: exports_external.optional(exports_external.record(exports_external.string(), exports_external.unknown()))
37709
+ });
37696
37710
  var CallToolRequestSchema = RequestSchema.extend({
37697
37711
  method: exports_external.literal("tools/call"),
37698
- params: BaseRequestParamsSchema.extend({
37699
- name: exports_external.string(),
37700
- arguments: exports_external.optional(exports_external.record(exports_external.unknown()))
37701
- })
37712
+ params: CallToolRequestParamsSchema
37702
37713
  });
37703
37714
  var ToolListChangedNotificationSchema = NotificationSchema.extend({
37704
37715
  method: exports_external.literal("notifications/tools/list_changed")
37705
37716
  });
37706
37717
  var LoggingLevelSchema = exports_external.enum(["debug", "info", "notice", "warning", "error", "critical", "alert", "emergency"]);
37718
+ var SetLevelRequestParamsSchema = BaseRequestParamsSchema.extend({
37719
+ level: LoggingLevelSchema
37720
+ });
37707
37721
  var SetLevelRequestSchema = RequestSchema.extend({
37708
37722
  method: exports_external.literal("logging/setLevel"),
37709
- params: BaseRequestParamsSchema.extend({
37710
- level: LoggingLevelSchema
37711
- })
37723
+ params: SetLevelRequestParamsSchema
37724
+ });
37725
+ var LoggingMessageNotificationParamsSchema = NotificationsParamsSchema.extend({
37726
+ level: LoggingLevelSchema,
37727
+ logger: exports_external.string().optional(),
37728
+ data: exports_external.unknown()
37712
37729
  });
37713
37730
  var LoggingMessageNotificationSchema = NotificationSchema.extend({
37714
37731
  method: exports_external.literal("notifications/message"),
37715
- params: BaseNotificationParamsSchema.extend({
37716
- level: LoggingLevelSchema,
37717
- logger: exports_external.optional(exports_external.string()),
37718
- data: exports_external.unknown()
37719
- })
37732
+ params: LoggingMessageNotificationParamsSchema
37720
37733
  });
37721
37734
  var ModelHintSchema = exports_external.object({
37722
37735
  name: exports_external.string().optional()
37723
- }).passthrough();
37736
+ });
37724
37737
  var ModelPreferencesSchema = exports_external.object({
37725
37738
  hints: exports_external.optional(exports_external.array(ModelHintSchema)),
37726
37739
  costPriority: exports_external.optional(exports_external.number().min(0).max(1)),
37727
37740
  speedPriority: exports_external.optional(exports_external.number().min(0).max(1)),
37728
37741
  intelligencePriority: exports_external.optional(exports_external.number().min(0).max(1))
37729
- }).passthrough();
37742
+ });
37730
37743
  var SamplingMessageSchema = exports_external.object({
37731
37744
  role: exports_external.enum(["user", "assistant"]),
37732
37745
  content: exports_external.union([TextContentSchema, ImageContentSchema, AudioContentSchema])
37733
- }).passthrough();
37746
+ });
37747
+ var CreateMessageRequestParamsSchema = BaseRequestParamsSchema.extend({
37748
+ messages: exports_external.array(SamplingMessageSchema),
37749
+ modelPreferences: ModelPreferencesSchema.optional(),
37750
+ systemPrompt: exports_external.string().optional(),
37751
+ includeContext: exports_external.enum(["none", "thisServer", "allServers"]).optional(),
37752
+ temperature: exports_external.number().optional(),
37753
+ maxTokens: exports_external.number().int(),
37754
+ stopSequences: exports_external.array(exports_external.string()).optional(),
37755
+ metadata: AssertObjectSchema.optional()
37756
+ });
37734
37757
  var CreateMessageRequestSchema = RequestSchema.extend({
37735
37758
  method: exports_external.literal("sampling/createMessage"),
37736
- params: BaseRequestParamsSchema.extend({
37737
- messages: exports_external.array(SamplingMessageSchema),
37738
- systemPrompt: exports_external.optional(exports_external.string()),
37739
- includeContext: exports_external.optional(exports_external.enum(["none", "thisServer", "allServers"])),
37740
- temperature: exports_external.optional(exports_external.number()),
37741
- maxTokens: exports_external.number().int(),
37742
- stopSequences: exports_external.optional(exports_external.array(exports_external.string())),
37743
- metadata: exports_external.optional(exports_external.object({}).passthrough()),
37744
- modelPreferences: exports_external.optional(ModelPreferencesSchema)
37745
- })
37759
+ params: CreateMessageRequestParamsSchema
37746
37760
  });
37747
37761
  var CreateMessageResultSchema = ResultSchema.extend({
37748
37762
  model: exports_external.string(),
@@ -37752,69 +37766,130 @@ var CreateMessageResultSchema = ResultSchema.extend({
37752
37766
  });
37753
37767
  var BooleanSchemaSchema = exports_external.object({
37754
37768
  type: exports_external.literal("boolean"),
37755
- title: exports_external.optional(exports_external.string()),
37756
- description: exports_external.optional(exports_external.string()),
37757
- default: exports_external.optional(exports_external.boolean())
37758
- }).passthrough();
37769
+ title: exports_external.string().optional(),
37770
+ description: exports_external.string().optional(),
37771
+ default: exports_external.boolean().optional()
37772
+ });
37759
37773
  var StringSchemaSchema = exports_external.object({
37760
37774
  type: exports_external.literal("string"),
37761
- title: exports_external.optional(exports_external.string()),
37762
- description: exports_external.optional(exports_external.string()),
37763
- minLength: exports_external.optional(exports_external.number()),
37764
- maxLength: exports_external.optional(exports_external.number()),
37765
- format: exports_external.optional(exports_external.enum(["email", "uri", "date", "date-time"]))
37766
- }).passthrough();
37775
+ title: exports_external.string().optional(),
37776
+ description: exports_external.string().optional(),
37777
+ minLength: exports_external.number().optional(),
37778
+ maxLength: exports_external.number().optional(),
37779
+ format: exports_external.enum(["email", "uri", "date", "date-time"]).optional(),
37780
+ default: exports_external.string().optional()
37781
+ });
37767
37782
  var NumberSchemaSchema = exports_external.object({
37768
37783
  type: exports_external.enum(["number", "integer"]),
37769
- title: exports_external.optional(exports_external.string()),
37770
- description: exports_external.optional(exports_external.string()),
37771
- minimum: exports_external.optional(exports_external.number()),
37772
- maximum: exports_external.optional(exports_external.number())
37773
- }).passthrough();
37774
- var EnumSchemaSchema = exports_external.object({
37784
+ title: exports_external.string().optional(),
37785
+ description: exports_external.string().optional(),
37786
+ minimum: exports_external.number().optional(),
37787
+ maximum: exports_external.number().optional(),
37788
+ default: exports_external.number().optional()
37789
+ });
37790
+ var UntitledSingleSelectEnumSchemaSchema = exports_external.object({
37775
37791
  type: exports_external.literal("string"),
37776
- title: exports_external.optional(exports_external.string()),
37777
- description: exports_external.optional(exports_external.string()),
37792
+ title: exports_external.string().optional(),
37793
+ description: exports_external.string().optional(),
37778
37794
  enum: exports_external.array(exports_external.string()),
37779
- enumNames: exports_external.optional(exports_external.array(exports_external.string()))
37780
- }).passthrough();
37781
- var PrimitiveSchemaDefinitionSchema = exports_external.union([BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema, EnumSchemaSchema]);
37795
+ default: exports_external.string().optional()
37796
+ });
37797
+ var TitledSingleSelectEnumSchemaSchema = exports_external.object({
37798
+ type: exports_external.literal("string"),
37799
+ title: exports_external.string().optional(),
37800
+ description: exports_external.string().optional(),
37801
+ oneOf: exports_external.array(exports_external.object({
37802
+ const: exports_external.string(),
37803
+ title: exports_external.string()
37804
+ })),
37805
+ default: exports_external.string().optional()
37806
+ });
37807
+ var LegacyTitledEnumSchemaSchema = exports_external.object({
37808
+ type: exports_external.literal("string"),
37809
+ title: exports_external.string().optional(),
37810
+ description: exports_external.string().optional(),
37811
+ enum: exports_external.array(exports_external.string()),
37812
+ enumNames: exports_external.array(exports_external.string()).optional(),
37813
+ default: exports_external.string().optional()
37814
+ });
37815
+ var SingleSelectEnumSchemaSchema = exports_external.union([UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema]);
37816
+ var UntitledMultiSelectEnumSchemaSchema = exports_external.object({
37817
+ type: exports_external.literal("array"),
37818
+ title: exports_external.string().optional(),
37819
+ description: exports_external.string().optional(),
37820
+ minItems: exports_external.number().optional(),
37821
+ maxItems: exports_external.number().optional(),
37822
+ items: exports_external.object({
37823
+ type: exports_external.literal("string"),
37824
+ enum: exports_external.array(exports_external.string())
37825
+ }),
37826
+ default: exports_external.array(exports_external.string()).optional()
37827
+ });
37828
+ var TitledMultiSelectEnumSchemaSchema = exports_external.object({
37829
+ type: exports_external.literal("array"),
37830
+ title: exports_external.string().optional(),
37831
+ description: exports_external.string().optional(),
37832
+ minItems: exports_external.number().optional(),
37833
+ maxItems: exports_external.number().optional(),
37834
+ items: exports_external.object({
37835
+ anyOf: exports_external.array(exports_external.object({
37836
+ const: exports_external.string(),
37837
+ title: exports_external.string()
37838
+ }))
37839
+ }),
37840
+ default: exports_external.array(exports_external.string()).optional()
37841
+ });
37842
+ var MultiSelectEnumSchemaSchema = exports_external.union([UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema]);
37843
+ var EnumSchemaSchema = exports_external.union([LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema]);
37844
+ var PrimitiveSchemaDefinitionSchema = exports_external.union([EnumSchemaSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema]);
37845
+ var ElicitRequestParamsSchema = BaseRequestParamsSchema.extend({
37846
+ message: exports_external.string(),
37847
+ requestedSchema: exports_external.object({
37848
+ type: exports_external.literal("object"),
37849
+ properties: exports_external.record(exports_external.string(), PrimitiveSchemaDefinitionSchema),
37850
+ required: exports_external.array(exports_external.string()).optional()
37851
+ })
37852
+ });
37782
37853
  var ElicitRequestSchema = RequestSchema.extend({
37783
37854
  method: exports_external.literal("elicitation/create"),
37784
- params: BaseRequestParamsSchema.extend({
37785
- message: exports_external.string(),
37786
- requestedSchema: exports_external.object({
37787
- type: exports_external.literal("object"),
37788
- properties: exports_external.record(exports_external.string(), PrimitiveSchemaDefinitionSchema),
37789
- required: exports_external.optional(exports_external.array(exports_external.string()))
37790
- }).passthrough()
37791
- })
37855
+ params: ElicitRequestParamsSchema
37792
37856
  });
37793
37857
  var ElicitResultSchema = ResultSchema.extend({
37794
37858
  action: exports_external.enum(["accept", "decline", "cancel"]),
37795
- content: exports_external.optional(exports_external.record(exports_external.string(), exports_external.unknown()))
37859
+ content: exports_external.record(exports_external.union([exports_external.string(), exports_external.number(), exports_external.boolean(), exports_external.array(exports_external.string())])).optional()
37796
37860
  });
37797
37861
  var ResourceTemplateReferenceSchema = exports_external.object({
37798
37862
  type: exports_external.literal("ref/resource"),
37799
37863
  uri: exports_external.string()
37800
- }).passthrough();
37864
+ });
37801
37865
  var PromptReferenceSchema = exports_external.object({
37802
37866
  type: exports_external.literal("ref/prompt"),
37803
37867
  name: exports_external.string()
37804
- }).passthrough();
37868
+ });
37869
+ var CompleteRequestParamsSchema = BaseRequestParamsSchema.extend({
37870
+ ref: exports_external.union([PromptReferenceSchema, ResourceTemplateReferenceSchema]),
37871
+ argument: exports_external.object({
37872
+ name: exports_external.string(),
37873
+ value: exports_external.string()
37874
+ }),
37875
+ context: exports_external.object({
37876
+ arguments: exports_external.record(exports_external.string(), exports_external.string()).optional()
37877
+ }).optional()
37878
+ });
37805
37879
  var CompleteRequestSchema = RequestSchema.extend({
37806
37880
  method: exports_external.literal("completion/complete"),
37807
- params: BaseRequestParamsSchema.extend({
37808
- ref: exports_external.union([PromptReferenceSchema, ResourceTemplateReferenceSchema]),
37809
- argument: exports_external.object({
37810
- name: exports_external.string(),
37811
- value: exports_external.string()
37812
- }).passthrough(),
37813
- context: exports_external.optional(exports_external.object({
37814
- arguments: exports_external.optional(exports_external.record(exports_external.string(), exports_external.string()))
37815
- }))
37816
- })
37881
+ params: CompleteRequestParamsSchema
37817
37882
  });
37883
+ function assertCompleteRequestPrompt(request) {
37884
+ if (request.params.ref.type !== "ref/prompt") {
37885
+ throw new TypeError(`Expected CompleteRequestPrompt, but got ${request.params.ref.type}`);
37886
+ }
37887
+ }
37888
+ function assertCompleteRequestResourceTemplate(request) {
37889
+ if (request.params.ref.type !== "ref/resource") {
37890
+ throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${request.params.ref.type}`);
37891
+ }
37892
+ }
37818
37893
  var CompleteResultSchema = ResultSchema.extend({
37819
37894
  completion: exports_external.object({
37820
37895
  values: exports_external.array(exports_external.string()).max(100),
@@ -37824,9 +37899,9 @@ var CompleteResultSchema = ResultSchema.extend({
37824
37899
  });
37825
37900
  var RootSchema = exports_external.object({
37826
37901
  uri: exports_external.string().startsWith("file://"),
37827
- name: exports_external.optional(exports_external.string()),
37828
- _meta: exports_external.optional(exports_external.object({}).passthrough())
37829
- }).passthrough();
37902
+ name: exports_external.string().optional(),
37903
+ _meta: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
37904
+ });
37830
37905
  var ListRootsRequestSchema = RequestSchema.extend({
37831
37906
  method: exports_external.literal("roots/list")
37832
37907
  });
@@ -38222,15 +38297,24 @@ class Protocol {
38222
38297
  this._notificationHandlers.delete(method);
38223
38298
  }
38224
38299
  }
38300
+ function isPlainObject(value) {
38301
+ return value !== null && typeof value === "object" && !Array.isArray(value);
38302
+ }
38225
38303
  function mergeCapabilities(base, additional) {
38226
- return Object.entries(additional).reduce((acc, [key, value]) => {
38227
- if (value && typeof value === "object") {
38228
- acc[key] = acc[key] ? { ...acc[key], ...value } : value;
38304
+ const result = { ...base };
38305
+ for (const key in additional) {
38306
+ const k = key;
38307
+ const addValue = additional[k];
38308
+ if (addValue === undefined)
38309
+ continue;
38310
+ const baseValue = result[k];
38311
+ if (isPlainObject(baseValue) && isPlainObject(addValue)) {
38312
+ result[k] = { ...baseValue, ...addValue };
38229
38313
  } else {
38230
- acc[key] = value;
38314
+ result[k] = addValue;
38231
38315
  }
38232
- return acc;
38233
- }, { ...base });
38316
+ }
38317
+ return result;
38234
38318
  }
38235
38319
 
38236
38320
  // node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
@@ -38366,9 +38450,9 @@ class Server extends Protocol {
38366
38450
  }
38367
38451
  assertRequestHandlerCapability(method) {
38368
38452
  switch (method) {
38369
- case "sampling/createMessage":
38370
- if (!this._capabilities.sampling) {
38371
- throw new Error(`Server does not support sampling (required for ${method})`);
38453
+ case "completion/complete":
38454
+ if (!this._capabilities.completions) {
38455
+ throw new Error(`Server does not support completions (required for ${method})`);
38372
38456
  }
38373
38457
  break;
38374
38458
  case "logging/setLevel":
@@ -39763,6 +39847,64 @@ function processCreateParams2(params) {
39763
39847
  return { errorMap: customMap, description };
39764
39848
  }
39765
39849
 
39850
+ // node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js
39851
+ var TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/;
39852
+ function validateToolName(name) {
39853
+ const warnings = [];
39854
+ if (name.length === 0) {
39855
+ return {
39856
+ isValid: false,
39857
+ warnings: ["Tool name cannot be empty"]
39858
+ };
39859
+ }
39860
+ if (name.length > 128) {
39861
+ return {
39862
+ isValid: false,
39863
+ warnings: [`Tool name exceeds maximum length of 128 characters (current: ${name.length})`]
39864
+ };
39865
+ }
39866
+ if (name.includes(" ")) {
39867
+ warnings.push("Tool name contains spaces, which may cause parsing issues");
39868
+ }
39869
+ if (name.includes(",")) {
39870
+ warnings.push("Tool name contains commas, which may cause parsing issues");
39871
+ }
39872
+ if (name.startsWith("-") || name.endsWith("-")) {
39873
+ warnings.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts");
39874
+ }
39875
+ if (name.startsWith(".") || name.endsWith(".")) {
39876
+ warnings.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts");
39877
+ }
39878
+ if (!TOOL_NAME_REGEX.test(name)) {
39879
+ const invalidChars = name.split("").filter((char) => !/[A-Za-z0-9._-]/.test(char)).filter((char, index, arr) => arr.indexOf(char) === index);
39880
+ warnings.push(`Tool name contains invalid characters: ${invalidChars.map((c) => `"${c}"`).join(", ")}`, "Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)");
39881
+ return {
39882
+ isValid: false,
39883
+ warnings
39884
+ };
39885
+ }
39886
+ return {
39887
+ isValid: true,
39888
+ warnings
39889
+ };
39890
+ }
39891
+ function issueToolNameWarning(name, warnings) {
39892
+ if (warnings.length > 0) {
39893
+ console.warn(`Tool name validation warning for "${name}":`);
39894
+ for (const warning of warnings) {
39895
+ console.warn(` - ${warning}`);
39896
+ }
39897
+ console.warn("Tool registration will proceed, but this may cause compatibility issues.");
39898
+ console.warn("Consider updating the tool name to conform to the MCP tool naming standard.");
39899
+ console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.");
39900
+ }
39901
+ }
39902
+ function validateAndWarnToolName(name) {
39903
+ const result = validateToolName(name);
39904
+ issueToolNameWarning(name, result.warnings);
39905
+ return result.isValid;
39906
+ }
39907
+
39766
39908
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
39767
39909
  class McpServer {
39768
39910
  constructor(serverInfo, options) {
@@ -39875,8 +40017,10 @@ class McpServer {
39875
40017
  this.server.setRequestHandler(CompleteRequestSchema, async (request) => {
39876
40018
  switch (request.params.ref.type) {
39877
40019
  case "ref/prompt":
40020
+ assertCompleteRequestPrompt(request);
39878
40021
  return this.handlePromptCompletion(request, request.params.ref);
39879
40022
  case "ref/resource":
40023
+ assertCompleteRequestResourceTemplate(request);
39880
40024
  return this.handleResourceCompletion(request, request.params.ref);
39881
40025
  default:
39882
40026
  throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`);
@@ -40164,11 +40308,12 @@ class McpServer {
40164
40308
  return registeredPrompt;
40165
40309
  }
40166
40310
  _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, _meta, callback) {
40311
+ validateAndWarnToolName(name);
40167
40312
  const registeredTool = {
40168
40313
  title,
40169
40314
  description,
40170
- inputSchema: inputSchema === undefined ? undefined : exports_external.object(inputSchema),
40171
- outputSchema: outputSchema === undefined ? undefined : exports_external.object(outputSchema),
40315
+ inputSchema: getZodSchemaObject(inputSchema),
40316
+ outputSchema: getZodSchemaObject(outputSchema),
40172
40317
  annotations,
40173
40318
  _meta,
40174
40319
  callback,
@@ -40178,6 +40323,9 @@ class McpServer {
40178
40323
  remove: () => registeredTool.update({ name: null }),
40179
40324
  update: (updates) => {
40180
40325
  if (typeof updates.name !== "undefined" && updates.name !== name) {
40326
+ if (typeof updates.name === "string") {
40327
+ validateAndWarnToolName(updates.name);
40328
+ }
40181
40329
  delete this._registeredTools[name];
40182
40330
  if (updates.name)
40183
40331
  this._registeredTools[updates.name] = registeredTool;
@@ -40299,6 +40447,15 @@ function isZodRawShape(obj) {
40299
40447
  function isZodTypeLike(value) {
40300
40448
  return value !== null && typeof value === "object" && "parse" in value && typeof value.parse === "function" && "safeParse" in value && typeof value.safeParse === "function";
40301
40449
  }
40450
+ function getZodSchemaObject(schema) {
40451
+ if (!schema) {
40452
+ return;
40453
+ }
40454
+ if (isZodRawShape(schema)) {
40455
+ return exports_external.object(schema);
40456
+ }
40457
+ return schema;
40458
+ }
40302
40459
  function promptArgumentsFromSchema(schema) {
40303
40460
  return Object.entries(schema.shape).map(([name, field]) => ({
40304
40461
  name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devbcn-mcp-server",
3
- "version": "0.0.0-202511150613",
3
+ "version": "0.0.0-202511150627",
4
4
  "homepage": "https://github.com/marcnuri-demo/blog-tutorials",
5
5
  "licenese": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "watch": "bun run --watch src/index.js"
15
15
  },
16
16
  "dependencies": {
17
- "@modelcontextprotocol/sdk": "1.21.1",
17
+ "@modelcontextprotocol/sdk": "1.22.0",
18
18
  "express": "5.1.0"
19
19
  },
20
20
  "repository": {