tiny-stdio-mcp-server 0.1.18 → 0.1.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.
- package/dist/server.js +17 -1
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -115,10 +115,11 @@ export function createServer(options) {
|
|
|
115
115
|
}
|
|
116
116
|
const tool = tools.get(toolName);
|
|
117
117
|
if (!tool) {
|
|
118
|
+
const availableTools = [...tools.keys()].slice(0, 20);
|
|
118
119
|
return {
|
|
119
120
|
error: {
|
|
120
121
|
code: JSON_RPC_ERROR_CODES.INVALID_PARAMS,
|
|
121
|
-
message: `Tool not found: ${toolName}`
|
|
122
|
+
message: `Tool not found: ${toolName}${availableTools.length === 0 ? "" : `. Available: ${availableTools.join(", ")}`}`
|
|
122
123
|
}
|
|
123
124
|
};
|
|
124
125
|
}
|
|
@@ -387,6 +388,9 @@ export function createServer(options) {
|
|
|
387
388
|
const server = {
|
|
388
389
|
tool(name, description, inputSchema, handler, outputSchema) {
|
|
389
390
|
assertNonEmptyName(name, "Tool name required");
|
|
391
|
+
if (tools.has(name)) {
|
|
392
|
+
throw new Error(`Tool already registered: ${name}`);
|
|
393
|
+
}
|
|
390
394
|
const inputValidator = jsonSchemaValidator.compile(inputSchema);
|
|
391
395
|
let outputValidator;
|
|
392
396
|
if (outputSchema !== undefined) {
|
|
@@ -406,6 +410,9 @@ export function createServer(options) {
|
|
|
406
410
|
},
|
|
407
411
|
registerTool(definition, handler) {
|
|
408
412
|
assertNonEmptyName(definition.name, "Tool name required");
|
|
413
|
+
if (tools.has(definition.name)) {
|
|
414
|
+
throw new Error(`Tool already registered: ${definition.name}`);
|
|
415
|
+
}
|
|
409
416
|
const inputValidator = jsonSchemaValidator.compile(definition.inputSchema);
|
|
410
417
|
let outputValidator;
|
|
411
418
|
if (definition.outputSchema !== undefined) {
|
|
@@ -422,6 +429,9 @@ export function createServer(options) {
|
|
|
422
429
|
},
|
|
423
430
|
prompt(definition, handler) {
|
|
424
431
|
assertNonEmptyName(definition.name, "Prompt name required");
|
|
432
|
+
if (prompts.has(definition.name)) {
|
|
433
|
+
throw new Error(`Prompt already registered: ${definition.name}`);
|
|
434
|
+
}
|
|
425
435
|
prompts.set(definition.name, { ...definition, handler });
|
|
426
436
|
return server;
|
|
427
437
|
},
|
|
@@ -429,12 +439,18 @@ export function createServer(options) {
|
|
|
429
439
|
if (!isValidUri(definition.uri)) {
|
|
430
440
|
throw new Error(`Invalid resource URI: ${definition.uri}`);
|
|
431
441
|
}
|
|
442
|
+
if (resources.has(definition.uri)) {
|
|
443
|
+
throw new Error(`Resource already registered: ${definition.uri}`);
|
|
444
|
+
}
|
|
432
445
|
resources.set(definition.uri, { ...definition, handler });
|
|
433
446
|
return server;
|
|
434
447
|
},
|
|
435
448
|
resourceTemplate(definition, handler) {
|
|
436
449
|
assertReadableUriTemplate(definition.uriTemplate);
|
|
437
450
|
new UriTemplate(definition.uriTemplate);
|
|
451
|
+
if (resourceTemplates.has(definition.uriTemplate)) {
|
|
452
|
+
throw new Error(`Resource template already registered: ${definition.uriTemplate}`);
|
|
453
|
+
}
|
|
438
454
|
resourceTemplates.set(definition.uriTemplate, { ...definition, handler });
|
|
439
455
|
return server;
|
|
440
456
|
},
|