@modelcontextprotocol/sdk 1.2.0 → 1.3.1
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 +153 -0
- package/dist/cjs/server/mcp.d.ts.map +1 -0
- package/dist/cjs/server/mcp.js +380 -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 +153 -0
- package/dist/esm/server/mcp.d.ts.map +1 -0
- package/dist/esm/server/mcp.js +375 -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
package/README.md
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
# MCP TypeScript SDK 
|
|
1
|
+
# MCP TypeScript SDK  
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Table of Contents
|
|
4
|
+
- [Overview](#overview)
|
|
5
|
+
- [Installation](#installation)
|
|
6
|
+
- [Quickstart](#quickstart)
|
|
7
|
+
- [What is MCP?](#what-is-mcp)
|
|
8
|
+
- [Core Concepts](#core-concepts)
|
|
9
|
+
- [Server](#server)
|
|
10
|
+
- [Resources](#resources)
|
|
11
|
+
- [Tools](#tools)
|
|
12
|
+
- [Prompts](#prompts)
|
|
13
|
+
- [Running Your Server](#running-your-server)
|
|
14
|
+
- [Development Mode](#development-mode)
|
|
15
|
+
- [Claude Desktop Integration](#claude-desktop-integration)
|
|
16
|
+
- [Direct Execution](#direct-execution)
|
|
17
|
+
- [Examples](#examples)
|
|
18
|
+
- [Echo Server](#echo-server)
|
|
19
|
+
- [SQLite Explorer](#sqlite-explorer)
|
|
20
|
+
- [Advanced Usage](#advanced-usage)
|
|
21
|
+
- [Low-Level Server](#low-level-server)
|
|
22
|
+
- [Writing MCP Clients](#writing-mcp-clients)
|
|
23
|
+
- [Server Capabilities](#server-capabilities)
|
|
4
24
|
|
|
5
25
|
## Overview
|
|
6
26
|
|
|
@@ -19,97 +39,377 @@ npm install @modelcontextprotocol/sdk
|
|
|
19
39
|
|
|
20
40
|
## Quick Start
|
|
21
41
|
|
|
22
|
-
|
|
42
|
+
Let's create a simple MCP server that exposes a calculator tool and some data:
|
|
23
43
|
|
|
24
44
|
```typescript
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
ListResourcesRequestSchema,
|
|
29
|
-
ReadResourceRequestSchema,
|
|
30
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
45
|
+
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
46
|
+
import { z } from "zod";
|
|
31
47
|
|
|
32
|
-
|
|
33
|
-
|
|
48
|
+
// Create an MCP server
|
|
49
|
+
const server = new McpServer({
|
|
50
|
+
name: "Demo",
|
|
51
|
+
version: "1.0.0"
|
|
34
52
|
});
|
|
35
53
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
54
|
+
// Add an addition tool
|
|
55
|
+
server.tool("add",
|
|
56
|
+
{ a: z.number(), b: z.number() },
|
|
57
|
+
async ({ a, b }) => ({
|
|
58
|
+
content: [{ type: "text", text: String(a + b) }]
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// Add a dynamic greeting resource
|
|
63
|
+
server.resource(
|
|
64
|
+
"greeting",
|
|
65
|
+
new ResourceTemplate("greeting://{name}", { list: undefined }),
|
|
66
|
+
async (uri, { name }) => ({
|
|
67
|
+
contents: [{
|
|
68
|
+
uri: uri.href,
|
|
69
|
+
text: `Hello, ${name}!`
|
|
70
|
+
}]
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## What is MCP?
|
|
76
|
+
|
|
77
|
+
The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) lets you build servers that expose data and functionality to LLM applications in a secure, standardized way. Think of it like a web API, but specifically designed for LLM interactions. MCP servers can:
|
|
78
|
+
|
|
79
|
+
- Expose data through **Resources** (think of these sort of like GET endpoints; they are used to load information into the LLM's context)
|
|
80
|
+
- Provide functionality through **Tools** (sort of like POST endpoints; they are used to execute code or otherwise produce a side effect)
|
|
81
|
+
- Define interaction patterns through **Prompts** (reusable templates for LLM interactions)
|
|
82
|
+
- And more!
|
|
83
|
+
|
|
84
|
+
## Core Concepts
|
|
85
|
+
|
|
86
|
+
### Server
|
|
87
|
+
|
|
88
|
+
The McpServer is your core interface to the MCP protocol. It handles connection management, protocol compliance, and message routing:
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
const server = new McpServer({
|
|
92
|
+
name: "My App",
|
|
93
|
+
version: "1.0.0"
|
|
41
94
|
});
|
|
95
|
+
```
|
|
42
96
|
|
|
43
|
-
|
|
97
|
+
### Resources
|
|
98
|
+
|
|
99
|
+
Resources are how you expose data to LLMs. They're similar to GET endpoints in a REST API - they provide data but shouldn't perform significant computation or have side effects:
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// Static resource
|
|
103
|
+
server.resource(
|
|
104
|
+
"config",
|
|
105
|
+
"config://app",
|
|
106
|
+
async (uri) => ({
|
|
107
|
+
contents: [{
|
|
108
|
+
uri: uri.href,
|
|
109
|
+
text: "App configuration here"
|
|
110
|
+
}]
|
|
111
|
+
})
|
|
112
|
+
);
|
|
44
113
|
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
114
|
+
// Dynamic resource with parameters
|
|
115
|
+
server.resource(
|
|
116
|
+
"user-profile",
|
|
117
|
+
new ResourceTemplate("users://{userId}/profile", { list: undefined }),
|
|
118
|
+
async (uri, { userId }) => ({
|
|
119
|
+
contents: [{
|
|
120
|
+
uri: uri.href,
|
|
121
|
+
text: `Profile data for user ${userId}`
|
|
122
|
+
}]
|
|
123
|
+
})
|
|
49
124
|
);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Tools
|
|
50
128
|
|
|
51
|
-
|
|
52
|
-
|
|
129
|
+
Tools let LLMs take actions through your server. Unlike resources, tools are expected to perform computation and have side effects:
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// Simple tool with parameters
|
|
133
|
+
server.tool(
|
|
134
|
+
"calculate-bmi",
|
|
53
135
|
{
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
uri: "file:///example.txt"
|
|
57
|
-
}
|
|
136
|
+
weightKg: z.number(),
|
|
137
|
+
heightM: z.number()
|
|
58
138
|
},
|
|
59
|
-
|
|
139
|
+
async ({ weightKg, heightM }) => ({
|
|
140
|
+
content: [{
|
|
141
|
+
type: "text",
|
|
142
|
+
text: String(weightKg / (heightM * heightM))
|
|
143
|
+
}]
|
|
144
|
+
})
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
// Async tool with external API call
|
|
148
|
+
server.tool(
|
|
149
|
+
"fetch-weather",
|
|
150
|
+
{ city: z.string() },
|
|
151
|
+
async ({ city }) => {
|
|
152
|
+
const response = await fetch(`https://api.weather.com/${city}`);
|
|
153
|
+
const data = await response.text();
|
|
154
|
+
return {
|
|
155
|
+
content: [{ type: "text", text: data }]
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Prompts
|
|
162
|
+
|
|
163
|
+
Prompts are reusable templates that help LLMs interact with your server effectively:
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
server.prompt(
|
|
167
|
+
"review-code",
|
|
168
|
+
{ code: z.string() },
|
|
169
|
+
({ code }) => ({
|
|
170
|
+
messages: [{
|
|
171
|
+
role: "user",
|
|
172
|
+
content: {
|
|
173
|
+
type: "text",
|
|
174
|
+
text: `Please review this code:\n\n${code}`
|
|
175
|
+
}
|
|
176
|
+
}]
|
|
177
|
+
})
|
|
60
178
|
);
|
|
61
179
|
```
|
|
62
180
|
|
|
63
|
-
|
|
181
|
+
## Examples
|
|
182
|
+
|
|
183
|
+
### Echo Server
|
|
184
|
+
|
|
185
|
+
A simple server demonstrating resources, tools, and prompts:
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
189
|
+
import { z } from "zod";
|
|
190
|
+
|
|
191
|
+
const server = new McpServer({
|
|
192
|
+
name: "Echo",
|
|
193
|
+
version: "1.0.0"
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
server.resource(
|
|
197
|
+
"echo",
|
|
198
|
+
new ResourceTemplate("echo://{message}", { list: undefined }),
|
|
199
|
+
async (uri, { message }) => ({
|
|
200
|
+
contents: [{
|
|
201
|
+
uri: uri.href,
|
|
202
|
+
text: `Resource echo: ${message}`
|
|
203
|
+
}]
|
|
204
|
+
})
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
server.tool(
|
|
208
|
+
"echo",
|
|
209
|
+
{ message: z.string() },
|
|
210
|
+
async ({ message }) => ({
|
|
211
|
+
content: [{ type: "text", text: `Tool echo: ${message}` }]
|
|
212
|
+
})
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
server.prompt(
|
|
216
|
+
"echo",
|
|
217
|
+
{ message: z.string() },
|
|
218
|
+
({ message }) => ({
|
|
219
|
+
messages: [{
|
|
220
|
+
role: "user",
|
|
221
|
+
content: {
|
|
222
|
+
type: "text",
|
|
223
|
+
text: `Please process this message: ${message}`
|
|
224
|
+
}
|
|
225
|
+
}]
|
|
226
|
+
})
|
|
227
|
+
);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### SQLite Explorer
|
|
231
|
+
|
|
232
|
+
A more complex example showing database integration:
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
236
|
+
import sqlite3 from "sqlite3";
|
|
237
|
+
import { promisify } from "util";
|
|
238
|
+
import { z } from "zod";
|
|
239
|
+
|
|
240
|
+
const server = new McpServer({
|
|
241
|
+
name: "SQLite Explorer",
|
|
242
|
+
version: "1.0.0"
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Helper to create DB connection
|
|
246
|
+
const getDb = () => {
|
|
247
|
+
const db = new sqlite3.Database("database.db");
|
|
248
|
+
return {
|
|
249
|
+
all: promisify<string, any[]>(db.all.bind(db)),
|
|
250
|
+
close: promisify(db.close.bind(db))
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
server.resource(
|
|
255
|
+
"schema",
|
|
256
|
+
"schema://main",
|
|
257
|
+
async (uri) => {
|
|
258
|
+
const db = getDb();
|
|
259
|
+
try {
|
|
260
|
+
const tables = await db.all(
|
|
261
|
+
"SELECT sql FROM sqlite_master WHERE type='table'"
|
|
262
|
+
);
|
|
263
|
+
return {
|
|
264
|
+
contents: [{
|
|
265
|
+
uri: uri.href,
|
|
266
|
+
text: tables.map((t: {sql: string}) => t.sql).join("\n")
|
|
267
|
+
}]
|
|
268
|
+
};
|
|
269
|
+
} finally {
|
|
270
|
+
await db.close();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
server.tool(
|
|
276
|
+
"query",
|
|
277
|
+
{ sql: z.string() },
|
|
278
|
+
async ({ sql }) => {
|
|
279
|
+
const db = getDb();
|
|
280
|
+
try {
|
|
281
|
+
const results = await db.all(sql);
|
|
282
|
+
return {
|
|
283
|
+
content: [{
|
|
284
|
+
type: "text",
|
|
285
|
+
text: JSON.stringify(results, null, 2)
|
|
286
|
+
}]
|
|
287
|
+
};
|
|
288
|
+
} catch (err: unknown) {
|
|
289
|
+
const error = err as Error;
|
|
290
|
+
return {
|
|
291
|
+
content: [{
|
|
292
|
+
type: "text",
|
|
293
|
+
text: `Error: ${error.message}`
|
|
294
|
+
}],
|
|
295
|
+
isError: true
|
|
296
|
+
};
|
|
297
|
+
} finally {
|
|
298
|
+
await db.close();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
);
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Advanced Usage
|
|
305
|
+
|
|
306
|
+
### Low-Level Server
|
|
307
|
+
|
|
308
|
+
For more control, you can use the low-level Server class directly:
|
|
64
309
|
|
|
65
310
|
```typescript
|
|
66
311
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
67
312
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
68
313
|
import {
|
|
69
|
-
|
|
70
|
-
|
|
314
|
+
ListPromptsRequestSchema,
|
|
315
|
+
GetPromptRequestSchema
|
|
71
316
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
72
317
|
|
|
73
|
-
const server = new Server(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
318
|
+
const server = new Server(
|
|
319
|
+
{
|
|
320
|
+
name: "example-server",
|
|
321
|
+
version: "1.0.0"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
capabilities: {
|
|
325
|
+
prompts: {}
|
|
326
|
+
}
|
|
79
327
|
}
|
|
80
|
-
|
|
328
|
+
);
|
|
81
329
|
|
|
82
|
-
server.setRequestHandler(
|
|
330
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
83
331
|
return {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
332
|
+
prompts: [{
|
|
333
|
+
name: "example-prompt",
|
|
334
|
+
description: "An example prompt template",
|
|
335
|
+
arguments: [{
|
|
336
|
+
name: "arg1",
|
|
337
|
+
description: "Example argument",
|
|
338
|
+
required: true
|
|
339
|
+
}]
|
|
340
|
+
}]
|
|
90
341
|
};
|
|
91
342
|
});
|
|
92
343
|
|
|
93
|
-
server.setRequestHandler(
|
|
94
|
-
if (request.params.
|
|
95
|
-
|
|
96
|
-
contents: [
|
|
97
|
-
{
|
|
98
|
-
uri: "file:///example.txt",
|
|
99
|
-
mimeType: "text/plain",
|
|
100
|
-
text: "This is the content of the example resource.",
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
};
|
|
104
|
-
} else {
|
|
105
|
-
throw new Error("Resource not found");
|
|
344
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
345
|
+
if (request.params.name !== "example-prompt") {
|
|
346
|
+
throw new Error("Unknown prompt");
|
|
106
347
|
}
|
|
348
|
+
return {
|
|
349
|
+
description: "Example prompt",
|
|
350
|
+
messages: [{
|
|
351
|
+
role: "user",
|
|
352
|
+
content: {
|
|
353
|
+
type: "text",
|
|
354
|
+
text: "Example prompt text"
|
|
355
|
+
}
|
|
356
|
+
}]
|
|
357
|
+
};
|
|
107
358
|
});
|
|
108
359
|
|
|
109
360
|
const transport = new StdioServerTransport();
|
|
110
361
|
await server.connect(transport);
|
|
111
362
|
```
|
|
112
363
|
|
|
364
|
+
### Writing MCP Clients
|
|
365
|
+
|
|
366
|
+
The SDK provides a high-level client interface:
|
|
367
|
+
|
|
368
|
+
```typescript
|
|
369
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
370
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
371
|
+
|
|
372
|
+
const transport = new StdioClientTransport({
|
|
373
|
+
command: "node",
|
|
374
|
+
args: ["server.js"]
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
const client = new Client(
|
|
378
|
+
{
|
|
379
|
+
name: "example-client",
|
|
380
|
+
version: "1.0.0"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
capabilities: {
|
|
384
|
+
prompts: {},
|
|
385
|
+
resources: {},
|
|
386
|
+
tools: {}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
);
|
|
390
|
+
|
|
391
|
+
await client.connect(transport);
|
|
392
|
+
|
|
393
|
+
// List prompts
|
|
394
|
+
const prompts = await client.listPrompts();
|
|
395
|
+
|
|
396
|
+
// Get a prompt
|
|
397
|
+
const prompt = await client.getPrompt("example-prompt", {
|
|
398
|
+
arg1: "value"
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
// List resources
|
|
402
|
+
const resources = await client.listResources();
|
|
403
|
+
|
|
404
|
+
// Read a resource
|
|
405
|
+
const resource = await client.readResource("file:///example.txt");
|
|
406
|
+
|
|
407
|
+
// Call a tool
|
|
408
|
+
const result = await client.callTool("example-tool", {
|
|
409
|
+
arg1: "value"
|
|
410
|
+
});
|
|
411
|
+
```
|
|
412
|
+
|
|
113
413
|
## Documentation
|
|
114
414
|
|
|
115
415
|
- [Model Context Protocol documentation](https://modelcontextprotocol.io)
|
|
@@ -5,7 +5,7 @@ export type ClientOptions = ProtocolOptions & {
|
|
|
5
5
|
/**
|
|
6
6
|
* Capabilities to advertise as being supported by this client.
|
|
7
7
|
*/
|
|
8
|
-
capabilities
|
|
8
|
+
capabilities?: ClientCapabilities;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* An MCP client on top of a pluggable transport.
|
|
@@ -40,7 +40,13 @@ export declare class Client<RequestT extends Request = Request, NotificationT ex
|
|
|
40
40
|
/**
|
|
41
41
|
* Initializes this client with the given name and version information.
|
|
42
42
|
*/
|
|
43
|
-
constructor(_clientInfo: Implementation, options
|
|
43
|
+
constructor(_clientInfo: Implementation, options?: ClientOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Registers new capabilities. This can only be called before connecting to a transport.
|
|
46
|
+
*
|
|
47
|
+
* The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization).
|
|
48
|
+
*/
|
|
49
|
+
registerCapabilities(capabilities: ClientCapabilities): void;
|
|
44
50
|
protected assertCapability(capability: keyof ServerCapabilities, method: string): void;
|
|
45
51
|
connect(transport: Transport): Promise<void>;
|
|
46
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iCAAiC,EACjC,eAAe,EAGf,gBAAgB,EAEhB,cAAc,EAGd,kBAAkB,EAElB,oBAAoB,EAEpB,4BAA4B,EAE5B,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EAEnB,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,gBAAgB,EAEhB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG;IAC5C;;OAEG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,MAAM,CACjB,QAAQ,SAAS,OAAO,GAAG,OAAO,EAClC,aAAa,SAAS,YAAY,GAAG,YAAY,EACjD,OAAO,SAAS,MAAM,GAAG,MAAM,CAC/B,SAAQ,QAAQ,CAChB,aAAa,GAAG,QAAQ,EACxB,kBAAkB,GAAG,aAAa,EAClC,YAAY,GAAG,OAAO,CACvB;IASG,OAAO,CAAC,WAAW;IARrB,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,aAAa,CAAqB;IAE1C;;OAEG;gBAEO,WAAW,EAAE,cAAc,EACnC,OAAO,CAAC,EAAE,aAAa;IAMzB;;;;OAIG;IACI,oBAAoB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAUnE,SAAS,CAAC,gBAAgB,CACxB,UAAU,EAAE,MAAM,kBAAkB,EACpC,MAAM,EAAE,MAAM,GACb,IAAI;IAQQ,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC3D;;OAEG;IACH,qBAAqB,IAAI,kBAAkB,GAAG,SAAS;IAIvD;;OAEG;IACH,gBAAgB,IAAI,cAAc,GAAG,SAAS;IAI9C,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAoErE,SAAS,CAAC,4BAA4B,CACpC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,IAAI;IAwBP,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwBxD,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc;;;IAI7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;IAQpE,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc;;;IAQ7D,SAAS,CACb,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,WAAW,CACf,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EACrC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,aAAa,CACjB,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACvC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;IASpB,qBAAqB,CACzB,MAAM,CAAC,EAAE,4BAA4B,CAAC,QAAQ,CAAC,EAC/C,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;IASpB,YAAY,CAChB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,iBAAiB,CACrB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,cAAc;;;IASpB,mBAAmB,CACvB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EACpC,OAAO,CAAC,EAAE,cAAc;;;IASpB,QAAQ,CACZ,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,YAAY,GACR,OAAO,oBAAoB,GAC3B,OAAO,iCAAwD,EACnE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,SAAS,CACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,oBAAoB;CAG3B"}
|
package/dist/cjs/client/index.js
CHANGED
|
@@ -33,9 +33,21 @@ class Client extends protocol_js_1.Protocol {
|
|
|
33
33
|
* Initializes this client with the given name and version information.
|
|
34
34
|
*/
|
|
35
35
|
constructor(_clientInfo, options) {
|
|
36
|
+
var _a;
|
|
36
37
|
super(options);
|
|
37
38
|
this._clientInfo = _clientInfo;
|
|
38
|
-
this._capabilities = options.capabilities;
|
|
39
|
+
this._capabilities = (_a = options === null || options === void 0 ? void 0 : options.capabilities) !== null && _a !== void 0 ? _a : {};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Registers new capabilities. This can only be called before connecting to a transport.
|
|
43
|
+
*
|
|
44
|
+
* The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization).
|
|
45
|
+
*/
|
|
46
|
+
registerCapabilities(capabilities) {
|
|
47
|
+
if (this.transport) {
|
|
48
|
+
throw new Error("Cannot register capabilities after connecting to transport");
|
|
49
|
+
}
|
|
50
|
+
this._capabilities = (0, protocol_js_1.mergeCapabilities)(this._capabilities, capabilities);
|
|
39
51
|
}
|
|
40
52
|
assertCapability(capability, method) {
|
|
41
53
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ZodTypeAny, ZodTypeDef, ZodType, ParseInput, ParseReturnType, RawCreateParams } from "zod";
|
|
2
|
+
export declare enum McpZodTypeKind {
|
|
3
|
+
Completable = "McpCompletable"
|
|
4
|
+
}
|
|
5
|
+
export type CompleteCallback<T extends ZodTypeAny = ZodTypeAny> = (value: T["_input"]) => T["_input"][] | Promise<T["_input"][]>;
|
|
6
|
+
export interface CompletableDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {
|
|
7
|
+
type: T;
|
|
8
|
+
complete: CompleteCallback<T>;
|
|
9
|
+
typeName: McpZodTypeKind.Completable;
|
|
10
|
+
}
|
|
11
|
+
export declare class Completable<T extends ZodTypeAny> extends ZodType<T["_output"], CompletableDef<T>, T["_input"]> {
|
|
12
|
+
_parse(input: ParseInput): ParseReturnType<this["_output"]>;
|
|
13
|
+
unwrap(): T;
|
|
14
|
+
static create: <T_1 extends ZodTypeAny>(type: T_1, params: RawCreateParams & {
|
|
15
|
+
complete: CompleteCallback<T_1>;
|
|
16
|
+
}) => Completable<T_1>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.
|
|
20
|
+
*/
|
|
21
|
+
export declare function completable<T extends ZodTypeAny>(schema: T, complete: CompleteCallback<T>): Completable<T>;
|
|
22
|
+
//# sourceMappingURL=completable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completable.d.ts","sourceRoot":"","sources":["../../../src/server/completable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,eAAe,EACf,eAAe,EAGhB,MAAM,KAAK,CAAC;AAEb,oBAAY,cAAc;IACxB,WAAW,mBAAmB;CAC/B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAChE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,KACf,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAC/D,SAAQ,UAAU;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC;CACtC;AAED,qBAAa,WAAW,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,OAAO,CAC5D,CAAC,CAAC,SAAS,CAAC,EACZ,cAAc,CAAC,CAAC,CAAC,EACjB,CAAC,CAAC,QAAQ,CAAC,CACZ;IACC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAU3D,MAAM;IAIN,MAAM,CAAC,MAAM,eAAc,UAAU,QAC7B,GAAC,UACC,eAAe,GAAG;QACxB,QAAQ,EAAE,gBAAgB,CAAC,GAAC,CAAC,CAAC;KAC/B,KACA,WAAW,CAAC,GAAC,CAAC,CAOf;CACH;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,UAAU,EAC9C,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,WAAW,CAAC,CAAC,CAAC,CAEhB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Completable = exports.McpZodTypeKind = void 0;
|
|
4
|
+
exports.completable = completable;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
var McpZodTypeKind;
|
|
7
|
+
(function (McpZodTypeKind) {
|
|
8
|
+
McpZodTypeKind["Completable"] = "McpCompletable";
|
|
9
|
+
})(McpZodTypeKind || (exports.McpZodTypeKind = McpZodTypeKind = {}));
|
|
10
|
+
class Completable extends zod_1.ZodType {
|
|
11
|
+
_parse(input) {
|
|
12
|
+
const { ctx } = this._processInputParams(input);
|
|
13
|
+
const data = ctx.data;
|
|
14
|
+
return this._def.type._parse({
|
|
15
|
+
data,
|
|
16
|
+
path: ctx.path,
|
|
17
|
+
parent: ctx,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
unwrap() {
|
|
21
|
+
return this._def.type;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Completable = Completable;
|
|
25
|
+
Completable.create = (type, params) => {
|
|
26
|
+
return new Completable({
|
|
27
|
+
type,
|
|
28
|
+
typeName: McpZodTypeKind.Completable,
|
|
29
|
+
complete: params.complete,
|
|
30
|
+
...processCreateParams(params),
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.
|
|
35
|
+
*/
|
|
36
|
+
function completable(schema, complete) {
|
|
37
|
+
return Completable.create(schema, { ...schema._def, complete });
|
|
38
|
+
}
|
|
39
|
+
// Not sure why this isn't exported from Zod:
|
|
40
|
+
// https://github.com/colinhacks/zod/blob/f7ad26147ba291cb3fb257545972a8e00e767470/src/types.ts#L130
|
|
41
|
+
function processCreateParams(params) {
|
|
42
|
+
if (!params)
|
|
43
|
+
return {};
|
|
44
|
+
const { errorMap, invalid_type_error, required_error, description } = params;
|
|
45
|
+
if (errorMap && (invalid_type_error || required_error)) {
|
|
46
|
+
throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);
|
|
47
|
+
}
|
|
48
|
+
if (errorMap)
|
|
49
|
+
return { errorMap: errorMap, description };
|
|
50
|
+
const customMap = (iss, ctx) => {
|
|
51
|
+
var _a, _b;
|
|
52
|
+
const { message } = params;
|
|
53
|
+
if (iss.code === "invalid_enum_value") {
|
|
54
|
+
return { message: message !== null && message !== void 0 ? message : ctx.defaultError };
|
|
55
|
+
}
|
|
56
|
+
if (typeof ctx.data === "undefined") {
|
|
57
|
+
return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };
|
|
58
|
+
}
|
|
59
|
+
if (iss.code !== "invalid_type")
|
|
60
|
+
return { message: ctx.defaultError };
|
|
61
|
+
return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };
|
|
62
|
+
};
|
|
63
|
+
return { errorMap: customMap, description };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=completable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completable.js","sourceRoot":"","sources":["../../../src/server/completable.ts"],"names":[],"mappings":";;;AA+DA,kCAKC;AApED,6BASa;AAEb,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,gDAA8B,CAAA;AAChC,CAAC,EAFW,cAAc,8BAAd,cAAc,QAEzB;AAaD,MAAa,WAAkC,SAAQ,aAItD;IACC,MAAM,CAAC,KAAiB;QACtB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI;YACJ,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;;AAjBH,kCAgCC;AAbQ,kBAAM,GAAG,CACd,IAAO,EACP,MAEC,EACe,EAAE;IAClB,OAAO,IAAI,WAAW,CAAC;QACrB,IAAI;QACJ,QAAQ,EAAE,cAAc,CAAC,WAAW;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,mBAAmB,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC,CAAC;AAGJ;;GAEG;AACH,SAAgB,WAAW,CACzB,MAAS,EACT,QAA6B;IAE7B,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,6CAA6C;AAC7C,oGAAoG;AACpG,SAAS,mBAAmB,CAAC,MAAuB;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC7E,IAAI,QAAQ,IAAI,CAAC,kBAAkB,IAAI,cAAc,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACzD,MAAM,SAAS,GAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;QAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE3B,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,MAAA,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,mCAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,MAAA,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,kBAAkB,mCAAI,GAAG,CAAC,YAAY,EAAE,CAAC;IACxE,CAAC,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -4,7 +4,7 @@ export type ServerOptions = ProtocolOptions & {
|
|
|
4
4
|
/**
|
|
5
5
|
* Capabilities to advertise as being supported by this server.
|
|
6
6
|
*/
|
|
7
|
-
capabilities
|
|
7
|
+
capabilities?: ServerCapabilities;
|
|
8
8
|
/**
|
|
9
9
|
* Optional instructions describing how to use the server and its features.
|
|
10
10
|
*/
|
|
@@ -48,7 +48,13 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
48
48
|
/**
|
|
49
49
|
* Initializes this server with the given name and version information.
|
|
50
50
|
*/
|
|
51
|
-
constructor(_serverInfo: Implementation, options
|
|
51
|
+
constructor(_serverInfo: Implementation, options?: ServerOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Registers new capabilities. This can only be called before connecting to a transport.
|
|
54
|
+
*
|
|
55
|
+
* The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization).
|
|
56
|
+
*/
|
|
57
|
+
registerCapabilities(capabilities: ServerCapabilities): void;
|
|
52
58
|
protected assertCapabilityForMethod(method: RequestT["method"]): void;
|
|
53
59
|
protected assertNotificationCapability(method: (ServerNotification | NotificationT)["method"]): void;
|
|
54
60
|
protected assertRequestHandlerCapability(method: string): void;
|