@modelcontextprotocol/sdk 1.2.0 → 1.3.0
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/README.md +358 -58
- package/dist/cjs/client/index.d.ts +8 -2
- package/dist/cjs/client/index.d.ts.map +1 -1
- package/dist/cjs/client/index.js +13 -1
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/server/completable.d.ts +22 -0
- package/dist/cjs/server/completable.d.ts.map +1 -0
- package/dist/cjs/server/completable.js +65 -0
- package/dist/cjs/server/completable.js.map +1 -0
- package/dist/cjs/server/index.d.ts +8 -2
- package/dist/cjs/server/index.d.ts.map +1 -1
- package/dist/cjs/server/index.js +14 -2
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/server/mcp.d.ts +150 -0
- package/dist/cjs/server/mcp.d.ts.map +1 -0
- package/dist/cjs/server/mcp.js +365 -0
- package/dist/cjs/server/mcp.js.map +1 -0
- package/dist/cjs/shared/protocol.d.ts +6 -1
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +20 -0
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/shared/uriTemplate.d.ts +24 -0
- package/dist/cjs/shared/uriTemplate.d.ts.map +1 -0
- package/dist/cjs/shared/uriTemplate.js +242 -0
- package/dist/cjs/shared/uriTemplate.js.map +1 -0
- package/dist/esm/client/index.d.ts +8 -2
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +14 -2
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/server/completable.d.ts +22 -0
- package/dist/esm/server/completable.d.ts.map +1 -0
- package/dist/esm/server/completable.js +60 -0
- package/dist/esm/server/completable.js.map +1 -0
- package/dist/esm/server/index.d.ts +8 -2
- package/dist/esm/server/index.d.ts.map +1 -1
- package/dist/esm/server/index.js +15 -3
- package/dist/esm/server/index.js.map +1 -1
- package/dist/esm/server/mcp.d.ts +150 -0
- package/dist/esm/server/mcp.d.ts.map +1 -0
- package/dist/esm/server/mcp.js +360 -0
- package/dist/esm/server/mcp.js.map +1 -0
- package/dist/esm/shared/protocol.d.ts +6 -1
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +19 -0
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/shared/uriTemplate.d.ts +24 -0
- package/dist/esm/shared/uriTemplate.d.ts.map +1 -0
- package/dist/esm/shared/uriTemplate.js +238 -0
- package/dist/esm/shared/uriTemplate.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAGT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,yBAAyB,EACzB,iBAAiB,EAEjB,6BAA6B,EAE7B,uBAAuB,EAEvB,uBAAuB,EAEvB,qBAAqB,EAUrB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAcrB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,MAIX,SAAQ,QAIT;IAWC;;OAEG;IACH,YACU,WAA2B,EACnC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Server, ServerOptions } from "./index.js";
|
|
2
|
+
import { z, ZodRawShape, ZodTypeAny, ZodType, ZodTypeDef, ZodOptional } from "zod";
|
|
3
|
+
import { Implementation, CallToolResult, Resource, ListResourcesResult, GetPromptResult, ReadResourceResult } from "../types.js";
|
|
4
|
+
import { UriTemplate, Variables } from "../shared/uriTemplate.js";
|
|
5
|
+
import { RequestHandlerExtra } from "../shared/protocol.js";
|
|
6
|
+
import { Transport } from "../shared/transport.js";
|
|
7
|
+
/**
|
|
8
|
+
* High-level MCP server that provides a simpler API for working with resources, tools, and prompts.
|
|
9
|
+
* For advanced usage (like sending notifications or setting custom request handlers), use the underlying
|
|
10
|
+
* Server instance available via the `server` property.
|
|
11
|
+
*/
|
|
12
|
+
export declare class McpServer {
|
|
13
|
+
/**
|
|
14
|
+
* The underlying Server instance, useful for advanced operations like sending notifications.
|
|
15
|
+
*/
|
|
16
|
+
readonly server: Server;
|
|
17
|
+
private _registeredResources;
|
|
18
|
+
private _registeredResourceTemplates;
|
|
19
|
+
private _registeredTools;
|
|
20
|
+
private _registeredPrompts;
|
|
21
|
+
constructor(serverInfo: Implementation, options?: ServerOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Attaches to the given transport, starts it, and starts listening for messages.
|
|
24
|
+
*
|
|
25
|
+
* The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
26
|
+
*/
|
|
27
|
+
connect(transport: Transport): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Closes the connection.
|
|
30
|
+
*/
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
private setToolRequestHandlers;
|
|
33
|
+
private setCompletionRequestHandler;
|
|
34
|
+
private handlePromptCompletion;
|
|
35
|
+
private handleResourceCompletion;
|
|
36
|
+
private setResourceRequestHandlers;
|
|
37
|
+
private setPromptRequestHandlers;
|
|
38
|
+
/**
|
|
39
|
+
* Registers a resource `name` at a fixed URI, which will use the given callback to respond to read requests.
|
|
40
|
+
*/
|
|
41
|
+
resource(name: string, uri: string, readCallback: ReadResourceCallback): void;
|
|
42
|
+
/**
|
|
43
|
+
* Registers a resource `name` at a fixed URI with metadata, which will use the given callback to respond to read requests.
|
|
44
|
+
*/
|
|
45
|
+
resource(name: string, uri: string, metadata: ResourceMetadata, readCallback: ReadResourceCallback): void;
|
|
46
|
+
/**
|
|
47
|
+
* Registers a resource `name` with a template pattern, which will use the given callback to respond to read requests.
|
|
48
|
+
*/
|
|
49
|
+
resource(name: string, template: ResourceTemplate, readCallback: ReadResourceTemplateCallback): void;
|
|
50
|
+
/**
|
|
51
|
+
* Registers a resource `name` with a template pattern and metadata, which will use the given callback to respond to read requests.
|
|
52
|
+
*/
|
|
53
|
+
resource(name: string, template: ResourceTemplate, metadata: ResourceMetadata, readCallback: ReadResourceTemplateCallback): void;
|
|
54
|
+
/**
|
|
55
|
+
* Registers a zero-argument tool `name`, which will run the given function when the client calls it.
|
|
56
|
+
*/
|
|
57
|
+
tool(name: string, cb: ToolCallback): void;
|
|
58
|
+
/**
|
|
59
|
+
* Registers a zero-argument tool `name` (with a description) which will run the given function when the client calls it.
|
|
60
|
+
*/
|
|
61
|
+
tool(name: string, description: string, cb: ToolCallback): void;
|
|
62
|
+
/**
|
|
63
|
+
* Registers a tool `name` accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
64
|
+
*/
|
|
65
|
+
tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, cb: ToolCallback<Args>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Registers a tool `name` (with a description) accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
68
|
+
*/
|
|
69
|
+
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, cb: ToolCallback<Args>): void;
|
|
70
|
+
/**
|
|
71
|
+
* Registers a zero-argument prompt `name`, which will run the given function when the client calls it.
|
|
72
|
+
*/
|
|
73
|
+
prompt(name: string, cb: PromptCallback): void;
|
|
74
|
+
/**
|
|
75
|
+
* Registers a zero-argument prompt `name` (with a description) which will run the given function when the client calls it.
|
|
76
|
+
*/
|
|
77
|
+
prompt(name: string, description: string, cb: PromptCallback): void;
|
|
78
|
+
/**
|
|
79
|
+
* Registers a prompt `name` accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
80
|
+
*/
|
|
81
|
+
prompt<Args extends PromptArgsRawShape>(name: string, argsSchema: Args, cb: PromptCallback<Args>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Registers a prompt `name` (with a description) accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
84
|
+
*/
|
|
85
|
+
prompt<Args extends PromptArgsRawShape>(name: string, description: string, argsSchema: Args, cb: PromptCallback<Args>): void;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* A callback to complete one variable within a resource template's URI template.
|
|
89
|
+
*/
|
|
90
|
+
export type CompleteResourceTemplateCallback = (value: string) => string[] | Promise<string[]>;
|
|
91
|
+
/**
|
|
92
|
+
* A resource template combines a URI pattern with optional functionality to enumerate
|
|
93
|
+
* all resources matching that pattern.
|
|
94
|
+
*/
|
|
95
|
+
export declare class ResourceTemplate {
|
|
96
|
+
private _callbacks;
|
|
97
|
+
private _uriTemplate;
|
|
98
|
+
constructor(uriTemplate: string | UriTemplate, _callbacks: {
|
|
99
|
+
/**
|
|
100
|
+
* A callback to list all resources matching this template. This is required to specified, even if `undefined`, to avoid accidentally forgetting resource listing.
|
|
101
|
+
*/
|
|
102
|
+
list: ListResourcesCallback | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* An optional callback to autocomplete variables within the URI template. Useful for clients and users to discover possible values.
|
|
105
|
+
*/
|
|
106
|
+
complete?: {
|
|
107
|
+
[variable: string]: CompleteResourceTemplateCallback;
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* Gets the URI template pattern.
|
|
112
|
+
*/
|
|
113
|
+
get uriTemplate(): UriTemplate;
|
|
114
|
+
/**
|
|
115
|
+
* Gets the list callback, if one was provided.
|
|
116
|
+
*/
|
|
117
|
+
get listCallback(): ListResourcesCallback | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* Gets the callback for completing a specific URI template variable, if one was provided.
|
|
120
|
+
*/
|
|
121
|
+
completeCallback(variable: string): CompleteResourceTemplateCallback | undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Callback for a tool handler registered with Server.tool().
|
|
125
|
+
*
|
|
126
|
+
* Parameters will include tool arguments, if applicable, as well as other request handler context.
|
|
127
|
+
*/
|
|
128
|
+
export type ToolCallback<Args extends undefined | ZodRawShape = undefined> = Args extends ZodRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra) => CallToolResult | Promise<CallToolResult> : (extra: RequestHandlerExtra) => CallToolResult | Promise<CallToolResult>;
|
|
129
|
+
/**
|
|
130
|
+
* Additional, optional information for annotating a resource.
|
|
131
|
+
*/
|
|
132
|
+
export type ResourceMetadata = Omit<Resource, "uri" | "name">;
|
|
133
|
+
/**
|
|
134
|
+
* Callback to list all resources matching a given template.
|
|
135
|
+
*/
|
|
136
|
+
export type ListResourcesCallback = (extra: RequestHandlerExtra) => ListResourcesResult | Promise<ListResourcesResult>;
|
|
137
|
+
/**
|
|
138
|
+
* Callback to read a resource at a given URI.
|
|
139
|
+
*/
|
|
140
|
+
export type ReadResourceCallback = (uri: URL, extra: RequestHandlerExtra) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
141
|
+
/**
|
|
142
|
+
* Callback to read a resource at a given URI, following a filled-in URI template.
|
|
143
|
+
*/
|
|
144
|
+
export type ReadResourceTemplateCallback = (uri: URL, variables: Variables, extra: RequestHandlerExtra) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
145
|
+
type PromptArgsRawShape = {
|
|
146
|
+
[k: string]: ZodType<string, ZodTypeDef, string> | ZodOptional<ZodType<string, ZodTypeDef, string>>;
|
|
147
|
+
};
|
|
148
|
+
export type PromptCallback<Args extends undefined | PromptArgsRawShape = undefined> = Args extends PromptArgsRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra) => GetPromptResult | Promise<GetPromptResult> : (extra: RequestHandlerExtra) => GetPromptResult | Promise<GetPromptResult>;
|
|
149
|
+
export {};
|
|
150
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { Server } from "./index.js";
|
|
2
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
+
import { z, } from "zod";
|
|
4
|
+
import { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, } from "../types.js";
|
|
5
|
+
import { Completable } from "./completable.js";
|
|
6
|
+
import { UriTemplate } from "../shared/uriTemplate.js";
|
|
7
|
+
/**
|
|
8
|
+
* High-level MCP server that provides a simpler API for working with resources, tools, and prompts.
|
|
9
|
+
* For advanced usage (like sending notifications or setting custom request handlers), use the underlying
|
|
10
|
+
* Server instance available via the `server` property.
|
|
11
|
+
*/
|
|
12
|
+
export class McpServer {
|
|
13
|
+
constructor(serverInfo, options) {
|
|
14
|
+
this._registeredResources = {};
|
|
15
|
+
this._registeredResourceTemplates = {};
|
|
16
|
+
this._registeredTools = {};
|
|
17
|
+
this._registeredPrompts = {};
|
|
18
|
+
this.server = new Server(serverInfo, options);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Attaches to the given transport, starts it, and starts listening for messages.
|
|
22
|
+
*
|
|
23
|
+
* The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
24
|
+
*/
|
|
25
|
+
async connect(transport) {
|
|
26
|
+
return await this.server.connect(transport);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Closes the connection.
|
|
30
|
+
*/
|
|
31
|
+
async close() {
|
|
32
|
+
await this.server.close();
|
|
33
|
+
}
|
|
34
|
+
setToolRequestHandlers() {
|
|
35
|
+
this.server.assertCanSetRequestHandler(ListToolsRequestSchema.shape.method.value);
|
|
36
|
+
this.server.assertCanSetRequestHandler(CallToolRequestSchema.shape.method.value);
|
|
37
|
+
this.server.registerCapabilities({
|
|
38
|
+
tools: {},
|
|
39
|
+
});
|
|
40
|
+
this.server.setRequestHandler(ListToolsRequestSchema, () => ({
|
|
41
|
+
tools: Object.entries(this._registeredTools).map(([name, tool]) => {
|
|
42
|
+
return {
|
|
43
|
+
name,
|
|
44
|
+
description: tool.description,
|
|
45
|
+
inputSchema: tool.inputSchema
|
|
46
|
+
? zodToJsonSchema(tool.inputSchema)
|
|
47
|
+
: EMPTY_OBJECT_JSON_SCHEMA,
|
|
48
|
+
};
|
|
49
|
+
}),
|
|
50
|
+
}));
|
|
51
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
52
|
+
const tool = this._registeredTools[request.params.name];
|
|
53
|
+
if (!tool) {
|
|
54
|
+
throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
|
|
55
|
+
}
|
|
56
|
+
if (tool.inputSchema) {
|
|
57
|
+
const parseResult = await tool.inputSchema.safeParseAsync(request.params.arguments);
|
|
58
|
+
if (!parseResult.success) {
|
|
59
|
+
throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${request.params.name}: ${parseResult.error.message}`);
|
|
60
|
+
}
|
|
61
|
+
const args = parseResult.data;
|
|
62
|
+
const cb = tool.callback;
|
|
63
|
+
try {
|
|
64
|
+
return await Promise.resolve(cb(args, extra));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: "text",
|
|
71
|
+
text: error instanceof Error ? error.message : String(error),
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const cb = tool.callback;
|
|
80
|
+
try {
|
|
81
|
+
return await Promise.resolve(cb(extra));
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: "text",
|
|
88
|
+
text: error instanceof Error ? error.message : String(error),
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
isError: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
setCompletionRequestHandler() {
|
|
98
|
+
this.server.assertCanSetRequestHandler(CompleteRequestSchema.shape.method.value);
|
|
99
|
+
this.server.setRequestHandler(CompleteRequestSchema, async (request) => {
|
|
100
|
+
switch (request.params.ref.type) {
|
|
101
|
+
case "ref/prompt":
|
|
102
|
+
return this.handlePromptCompletion(request, request.params.ref);
|
|
103
|
+
case "ref/resource":
|
|
104
|
+
return this.handleResourceCompletion(request, request.params.ref);
|
|
105
|
+
default:
|
|
106
|
+
throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async handlePromptCompletion(request, ref) {
|
|
111
|
+
const prompt = this._registeredPrompts[ref.name];
|
|
112
|
+
if (!prompt) {
|
|
113
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.ref.name} not found`);
|
|
114
|
+
}
|
|
115
|
+
if (!prompt.argsSchema) {
|
|
116
|
+
return EMPTY_COMPLETION_RESULT;
|
|
117
|
+
}
|
|
118
|
+
const field = prompt.argsSchema.shape[request.params.argument.name];
|
|
119
|
+
if (!(field instanceof Completable)) {
|
|
120
|
+
return EMPTY_COMPLETION_RESULT;
|
|
121
|
+
}
|
|
122
|
+
const def = field._def;
|
|
123
|
+
const suggestions = await def.complete(request.params.argument.value);
|
|
124
|
+
return createCompletionResult(suggestions);
|
|
125
|
+
}
|
|
126
|
+
async handleResourceCompletion(request, ref) {
|
|
127
|
+
const template = Object.values(this._registeredResourceTemplates).find((t) => t.resourceTemplate.uriTemplate.toString() === ref.uri);
|
|
128
|
+
if (!template) {
|
|
129
|
+
if (this._registeredResources[ref.uri]) {
|
|
130
|
+
// Attempting to autocomplete a fixed resource URI is not an error in the spec (but probably should be).
|
|
131
|
+
return EMPTY_COMPLETION_RESULT;
|
|
132
|
+
}
|
|
133
|
+
throw new McpError(ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`);
|
|
134
|
+
}
|
|
135
|
+
const completer = template.resourceTemplate.completeCallback(request.params.argument.name);
|
|
136
|
+
if (!completer) {
|
|
137
|
+
return EMPTY_COMPLETION_RESULT;
|
|
138
|
+
}
|
|
139
|
+
const suggestions = await completer(request.params.argument.value);
|
|
140
|
+
return createCompletionResult(suggestions);
|
|
141
|
+
}
|
|
142
|
+
setResourceRequestHandlers() {
|
|
143
|
+
this.server.assertCanSetRequestHandler(ListResourcesRequestSchema.shape.method.value);
|
|
144
|
+
this.server.assertCanSetRequestHandler(ListResourceTemplatesRequestSchema.shape.method.value);
|
|
145
|
+
this.server.assertCanSetRequestHandler(ReadResourceRequestSchema.shape.method.value);
|
|
146
|
+
this.server.registerCapabilities({
|
|
147
|
+
resources: {},
|
|
148
|
+
});
|
|
149
|
+
this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => {
|
|
150
|
+
const resources = Object.entries(this._registeredResources).map(([uri, resource]) => ({
|
|
151
|
+
uri,
|
|
152
|
+
name: resource.name,
|
|
153
|
+
...resource.metadata,
|
|
154
|
+
}));
|
|
155
|
+
const templateResources = [];
|
|
156
|
+
for (const template of Object.values(this._registeredResourceTemplates)) {
|
|
157
|
+
if (!template.resourceTemplate.listCallback) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const result = await template.resourceTemplate.listCallback(extra);
|
|
161
|
+
for (const resource of result.resources) {
|
|
162
|
+
templateResources.push({
|
|
163
|
+
...resource,
|
|
164
|
+
...template.metadata,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return { resources: [...resources, ...templateResources] };
|
|
169
|
+
});
|
|
170
|
+
this.server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
|
|
171
|
+
const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name, template]) => ({
|
|
172
|
+
name,
|
|
173
|
+
uriTemplate: template.resourceTemplate.uriTemplate.toString(),
|
|
174
|
+
...template.metadata,
|
|
175
|
+
}));
|
|
176
|
+
return { resourceTemplates };
|
|
177
|
+
});
|
|
178
|
+
this.server.setRequestHandler(ReadResourceRequestSchema, async (request, extra) => {
|
|
179
|
+
const uri = new URL(request.params.uri);
|
|
180
|
+
// First check for exact resource match
|
|
181
|
+
const resource = this._registeredResources[uri.toString()];
|
|
182
|
+
if (resource) {
|
|
183
|
+
return resource.readCallback(uri, extra);
|
|
184
|
+
}
|
|
185
|
+
// Then check templates
|
|
186
|
+
for (const template of Object.values(this._registeredResourceTemplates)) {
|
|
187
|
+
const variables = template.resourceTemplate.uriTemplate.match(uri.toString());
|
|
188
|
+
if (variables) {
|
|
189
|
+
return template.readCallback(uri, variables, extra);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} not found`);
|
|
193
|
+
});
|
|
194
|
+
this.setCompletionRequestHandler();
|
|
195
|
+
}
|
|
196
|
+
setPromptRequestHandlers() {
|
|
197
|
+
this.server.assertCanSetRequestHandler(ListPromptsRequestSchema.shape.method.value);
|
|
198
|
+
this.server.assertCanSetRequestHandler(GetPromptRequestSchema.shape.method.value);
|
|
199
|
+
this.server.registerCapabilities({
|
|
200
|
+
prompts: {},
|
|
201
|
+
});
|
|
202
|
+
this.server.setRequestHandler(ListPromptsRequestSchema, () => ({
|
|
203
|
+
prompts: Object.entries(this._registeredPrompts).map(([name, prompt]) => {
|
|
204
|
+
return {
|
|
205
|
+
name,
|
|
206
|
+
description: prompt.description,
|
|
207
|
+
arguments: prompt.argsSchema
|
|
208
|
+
? promptArgumentsFromSchema(prompt.argsSchema)
|
|
209
|
+
: undefined,
|
|
210
|
+
};
|
|
211
|
+
}),
|
|
212
|
+
}));
|
|
213
|
+
this.server.setRequestHandler(GetPromptRequestSchema, async (request, extra) => {
|
|
214
|
+
const prompt = this._registeredPrompts[request.params.name];
|
|
215
|
+
if (!prompt) {
|
|
216
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`);
|
|
217
|
+
}
|
|
218
|
+
if (prompt.argsSchema) {
|
|
219
|
+
const parseResult = await prompt.argsSchema.safeParseAsync(request.params.arguments);
|
|
220
|
+
if (!parseResult.success) {
|
|
221
|
+
throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${parseResult.error.message}`);
|
|
222
|
+
}
|
|
223
|
+
const args = parseResult.data;
|
|
224
|
+
const cb = prompt.callback;
|
|
225
|
+
return await Promise.resolve(cb(args, extra));
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
const cb = prompt.callback;
|
|
229
|
+
return await Promise.resolve(cb(extra));
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
this.setCompletionRequestHandler();
|
|
233
|
+
}
|
|
234
|
+
resource(name, uriOrTemplate, ...rest) {
|
|
235
|
+
let metadata;
|
|
236
|
+
if (typeof rest[0] === "object") {
|
|
237
|
+
metadata = rest.shift();
|
|
238
|
+
}
|
|
239
|
+
const readCallback = rest[0];
|
|
240
|
+
if (typeof uriOrTemplate === "string") {
|
|
241
|
+
if (this._registeredResources[uriOrTemplate]) {
|
|
242
|
+
throw new Error(`Resource ${uriOrTemplate} is already registered`);
|
|
243
|
+
}
|
|
244
|
+
this._registeredResources[uriOrTemplate] = {
|
|
245
|
+
name,
|
|
246
|
+
metadata,
|
|
247
|
+
readCallback: readCallback,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
if (this._registeredResourceTemplates[name]) {
|
|
252
|
+
throw new Error(`Resource template ${name} is already registered`);
|
|
253
|
+
}
|
|
254
|
+
this._registeredResourceTemplates[name] = {
|
|
255
|
+
resourceTemplate: uriOrTemplate,
|
|
256
|
+
metadata,
|
|
257
|
+
readCallback: readCallback,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
this.setResourceRequestHandlers();
|
|
261
|
+
}
|
|
262
|
+
tool(name, ...rest) {
|
|
263
|
+
if (this._registeredTools[name]) {
|
|
264
|
+
throw new Error(`Tool ${name} is already registered`);
|
|
265
|
+
}
|
|
266
|
+
let description;
|
|
267
|
+
if (typeof rest[0] === "string") {
|
|
268
|
+
description = rest.shift();
|
|
269
|
+
}
|
|
270
|
+
let paramsSchema;
|
|
271
|
+
if (rest.length > 1) {
|
|
272
|
+
paramsSchema = rest.shift();
|
|
273
|
+
}
|
|
274
|
+
const cb = rest[0];
|
|
275
|
+
this._registeredTools[name] = {
|
|
276
|
+
description,
|
|
277
|
+
inputSchema: paramsSchema === undefined ? undefined : z.object(paramsSchema),
|
|
278
|
+
callback: cb,
|
|
279
|
+
};
|
|
280
|
+
this.setToolRequestHandlers();
|
|
281
|
+
}
|
|
282
|
+
prompt(name, ...rest) {
|
|
283
|
+
if (this._registeredPrompts[name]) {
|
|
284
|
+
throw new Error(`Prompt ${name} is already registered`);
|
|
285
|
+
}
|
|
286
|
+
let description;
|
|
287
|
+
if (typeof rest[0] === "string") {
|
|
288
|
+
description = rest.shift();
|
|
289
|
+
}
|
|
290
|
+
let argsSchema;
|
|
291
|
+
if (rest.length > 1) {
|
|
292
|
+
argsSchema = rest.shift();
|
|
293
|
+
}
|
|
294
|
+
const cb = rest[0];
|
|
295
|
+
this._registeredPrompts[name] = {
|
|
296
|
+
description,
|
|
297
|
+
argsSchema: argsSchema === undefined ? undefined : z.object(argsSchema),
|
|
298
|
+
callback: cb,
|
|
299
|
+
};
|
|
300
|
+
this.setPromptRequestHandlers();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* A resource template combines a URI pattern with optional functionality to enumerate
|
|
305
|
+
* all resources matching that pattern.
|
|
306
|
+
*/
|
|
307
|
+
export class ResourceTemplate {
|
|
308
|
+
constructor(uriTemplate, _callbacks) {
|
|
309
|
+
this._callbacks = _callbacks;
|
|
310
|
+
this._uriTemplate =
|
|
311
|
+
typeof uriTemplate === "string"
|
|
312
|
+
? new UriTemplate(uriTemplate)
|
|
313
|
+
: uriTemplate;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Gets the URI template pattern.
|
|
317
|
+
*/
|
|
318
|
+
get uriTemplate() {
|
|
319
|
+
return this._uriTemplate;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Gets the list callback, if one was provided.
|
|
323
|
+
*/
|
|
324
|
+
get listCallback() {
|
|
325
|
+
return this._callbacks.list;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Gets the callback for completing a specific URI template variable, if one was provided.
|
|
329
|
+
*/
|
|
330
|
+
completeCallback(variable) {
|
|
331
|
+
var _a;
|
|
332
|
+
return (_a = this._callbacks.complete) === null || _a === void 0 ? void 0 : _a[variable];
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const EMPTY_OBJECT_JSON_SCHEMA = {
|
|
336
|
+
type: "object",
|
|
337
|
+
};
|
|
338
|
+
function promptArgumentsFromSchema(schema) {
|
|
339
|
+
return Object.entries(schema.shape).map(([name, field]) => ({
|
|
340
|
+
name,
|
|
341
|
+
description: field.description,
|
|
342
|
+
required: !field.isOptional(),
|
|
343
|
+
}));
|
|
344
|
+
}
|
|
345
|
+
function createCompletionResult(suggestions) {
|
|
346
|
+
return {
|
|
347
|
+
completion: {
|
|
348
|
+
values: suggestions.slice(0, 100),
|
|
349
|
+
total: suggestions.length,
|
|
350
|
+
hasMore: suggestions.length > 100,
|
|
351
|
+
},
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
const EMPTY_COMPLETION_RESULT = {
|
|
355
|
+
completion: {
|
|
356
|
+
values: [],
|
|
357
|
+
hasMore: false,
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ZodLiteral, ZodObject, ZodType, z } from "zod";
|
|
2
|
-
import { Notification, Progress, Request, Result } from "../types.js";
|
|
2
|
+
import { ClientCapabilities, Notification, Progress, Request, Result, ServerCapabilities } from "../types.js";
|
|
3
3
|
import { Transport } from "./transport.js";
|
|
4
4
|
/**
|
|
5
5
|
* Callback for progress notifications.
|
|
@@ -141,6 +141,10 @@ export declare abstract class Protocol<SendRequestT extends Request, SendNotific
|
|
|
141
141
|
* Removes the request handler for the given method.
|
|
142
142
|
*/
|
|
143
143
|
removeRequestHandler(method: string): void;
|
|
144
|
+
/**
|
|
145
|
+
* Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed.
|
|
146
|
+
*/
|
|
147
|
+
assertCanSetRequestHandler(method: string): void;
|
|
144
148
|
/**
|
|
145
149
|
* Registers a handler to invoke when this protocol object receives a notification with the given method.
|
|
146
150
|
*
|
|
@@ -154,4 +158,5 @@ export declare abstract class Protocol<SendRequestT extends Request, SendNotific
|
|
|
154
158
|
*/
|
|
155
159
|
removeNotificationHandler(method: string): void;
|
|
156
160
|
}
|
|
161
|
+
export declare function mergeCapabilities<T extends ServerCapabilities | ClientCapabilities>(base: T, additional: T): T;
|
|
157
162
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/shared/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/shared/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -279,6 +279,14 @@ export class Protocol {
|
|
|
279
279
|
removeRequestHandler(method) {
|
|
280
280
|
this._requestHandlers.delete(method);
|
|
281
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed.
|
|
284
|
+
*/
|
|
285
|
+
assertCanSetRequestHandler(method) {
|
|
286
|
+
if (this._requestHandlers.has(method)) {
|
|
287
|
+
throw new Error(`A request handler for ${method} already exists, which would be overridden`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
282
290
|
/**
|
|
283
291
|
* Registers a handler to invoke when this protocol object receives a notification with the given method.
|
|
284
292
|
*
|
|
@@ -294,4 +302,15 @@ export class Protocol {
|
|
|
294
302
|
this._notificationHandlers.delete(method);
|
|
295
303
|
}
|
|
296
304
|
}
|
|
305
|
+
export function mergeCapabilities(base, additional) {
|
|
306
|
+
return Object.entries(additional).reduce((acc, [key, value]) => {
|
|
307
|
+
if (value && typeof value === "object") {
|
|
308
|
+
acc[key] = acc[key] ? { ...acc[key], ...value } : value;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
acc[key] = value;
|
|
312
|
+
}
|
|
313
|
+
return acc;
|
|
314
|
+
}, { ...base });
|
|
315
|
+
}
|
|
297
316
|
//# sourceMappingURL=protocol.js.map
|