@modelcontextprotocol/sdk 1.9.0 → 1.10.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 +284 -28
- package/dist/cjs/client/index.d.ts.map +1 -1
- package/dist/cjs/client/index.js +5 -0
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/streamableHttp.d.ts +124 -0
- package/dist/cjs/client/streamableHttp.d.ts.map +1 -0
- package/dist/cjs/client/streamableHttp.js +353 -0
- package/dist/cjs/client/streamableHttp.js.map +1 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.js +448 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js +168 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +139 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/server/simpleSseServer.d.ts +2 -0
- package/dist/cjs/examples/server/simpleSseServer.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleSseServer.js +148 -0
- package/dist/cjs/examples/server/simpleSseServer.js.map +1 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.js +250 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +229 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +112 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.d.ts +31 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.d.ts.map +1 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.js +69 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.js.map +1 -0
- package/dist/cjs/inMemory.d.ts +13 -3
- package/dist/cjs/inMemory.d.ts.map +1 -1
- package/dist/cjs/inMemory.js +9 -7
- package/dist/cjs/inMemory.js.map +1 -1
- package/dist/cjs/server/auth/types.d.ts +5 -0
- package/dist/cjs/server/auth/types.d.ts.map +1 -1
- package/dist/cjs/server/mcp.d.ts +100 -19
- package/dist/cjs/server/mcp.d.ts.map +1 -1
- package/dist/cjs/server/mcp.js +154 -12
- package/dist/cjs/server/mcp.js.map +1 -1
- package/dist/cjs/server/sse.d.ts +10 -3
- package/dist/cjs/server/sse.d.ts.map +1 -1
- package/dist/cjs/server/sse.js +13 -4
- package/dist/cjs/server/sse.js.map +1 -1
- package/dist/cjs/server/streamableHttp.d.ts +146 -0
- package/dist/cjs/server/streamableHttp.d.ts.map +1 -0
- package/dist/cjs/server/streamableHttp.js +538 -0
- package/dist/cjs/server/streamableHttp.js.map +1 -0
- package/dist/cjs/shared/protocol.d.ts +31 -5
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +23 -15
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/shared/transport.d.ts +32 -3
- package/dist/cjs/shared/transport.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +14 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +5 -0
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/streamableHttp.d.ts +124 -0
- package/dist/esm/client/streamableHttp.d.ts.map +1 -0
- package/dist/esm/client/streamableHttp.js +348 -0
- package/dist/esm/client/streamableHttp.js.map +1 -0
- package/dist/esm/examples/client/simpleStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/client/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/client/simpleStreamableHttp.js +446 -0
- package/dist/esm/examples/client/simpleStreamableHttp.js.map +1 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js +166 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js +134 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -0
- package/dist/esm/examples/server/simpleSseServer.d.ts +2 -0
- package/dist/esm/examples/server/simpleSseServer.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleSseServer.js +143 -0
- package/dist/esm/examples/server/simpleSseServer.js.map +1 -0
- package/dist/esm/examples/server/simpleStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleStreamableHttp.js +245 -0
- package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +224 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +107 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
- package/dist/esm/examples/shared/inMemoryEventStore.d.ts +31 -0
- package/dist/esm/examples/shared/inMemoryEventStore.d.ts.map +1 -0
- package/dist/esm/examples/shared/inMemoryEventStore.js +65 -0
- package/dist/esm/examples/shared/inMemoryEventStore.js.map +1 -0
- package/dist/esm/inMemory.d.ts +13 -3
- package/dist/esm/inMemory.d.ts.map +1 -1
- package/dist/esm/inMemory.js +9 -7
- package/dist/esm/inMemory.js.map +1 -1
- package/dist/esm/server/auth/types.d.ts +5 -0
- package/dist/esm/server/auth/types.d.ts.map +1 -1
- package/dist/esm/server/mcp.d.ts +100 -19
- package/dist/esm/server/mcp.d.ts.map +1 -1
- package/dist/esm/server/mcp.js +154 -12
- package/dist/esm/server/mcp.js.map +1 -1
- package/dist/esm/server/sse.d.ts +10 -3
- package/dist/esm/server/sse.d.ts.map +1 -1
- package/dist/esm/server/sse.js +13 -4
- package/dist/esm/server/sse.js.map +1 -1
- package/dist/esm/server/streamableHttp.d.ts +146 -0
- package/dist/esm/server/streamableHttp.d.ts.map +1 -0
- package/dist/esm/server/streamableHttp.js +531 -0
- package/dist/esm/server/streamableHttp.js.map +1 -0
- package/dist/esm/shared/protocol.d.ts +31 -5
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +24 -16
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/shared/transport.d.ts +32 -3
- package/dist/esm/shared/transport.d.ts.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +6 -0
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_js_1 = require("../../client/index.js");
|
|
4
|
+
const streamableHttp_js_1 = require("../../client/streamableHttp.js");
|
|
5
|
+
const node_readline_1 = require("node:readline");
|
|
6
|
+
const types_js_1 = require("../../types.js");
|
|
7
|
+
// Create readline interface for user input
|
|
8
|
+
const readline = (0, node_readline_1.createInterface)({
|
|
9
|
+
input: process.stdin,
|
|
10
|
+
output: process.stdout
|
|
11
|
+
});
|
|
12
|
+
// Track received notifications for debugging resumability
|
|
13
|
+
let notificationCount = 0;
|
|
14
|
+
// Global client and transport for interactive commands
|
|
15
|
+
let client = null;
|
|
16
|
+
let transport = null;
|
|
17
|
+
let serverUrl = 'http://localhost:3000/mcp';
|
|
18
|
+
let notificationsToolLastEventId = undefined;
|
|
19
|
+
let sessionId = undefined;
|
|
20
|
+
async function main() {
|
|
21
|
+
console.log('MCP Interactive Client');
|
|
22
|
+
console.log('=====================');
|
|
23
|
+
// Connect to server immediately with default settings
|
|
24
|
+
await connect();
|
|
25
|
+
// Print help and start the command loop
|
|
26
|
+
printHelp();
|
|
27
|
+
commandLoop();
|
|
28
|
+
}
|
|
29
|
+
function printHelp() {
|
|
30
|
+
console.log('\nAvailable commands:');
|
|
31
|
+
console.log(' connect [url] - Connect to MCP server (default: http://localhost:3000/mcp)');
|
|
32
|
+
console.log(' disconnect - Disconnect from server');
|
|
33
|
+
console.log(' terminate-session - Terminate the current session');
|
|
34
|
+
console.log(' reconnect - Reconnect to the server');
|
|
35
|
+
console.log(' list-tools - List available tools');
|
|
36
|
+
console.log(' call-tool <name> [args] - Call a tool with optional JSON arguments');
|
|
37
|
+
console.log(' greet [name] - Call the greet tool');
|
|
38
|
+
console.log(' multi-greet [name] - Call the multi-greet tool with notifications');
|
|
39
|
+
console.log(' start-notifications [interval] [count] - Start periodic notifications');
|
|
40
|
+
console.log(' list-prompts - List available prompts');
|
|
41
|
+
console.log(' get-prompt [name] [args] - Get a prompt with optional JSON arguments');
|
|
42
|
+
console.log(' list-resources - List available resources');
|
|
43
|
+
console.log(' help - Show this help');
|
|
44
|
+
console.log(' quit - Exit the program');
|
|
45
|
+
}
|
|
46
|
+
function commandLoop() {
|
|
47
|
+
readline.question('\n> ', async (input) => {
|
|
48
|
+
var _a;
|
|
49
|
+
const args = input.trim().split(/\s+/);
|
|
50
|
+
const command = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
51
|
+
try {
|
|
52
|
+
switch (command) {
|
|
53
|
+
case 'connect':
|
|
54
|
+
await connect(args[1]);
|
|
55
|
+
break;
|
|
56
|
+
case 'disconnect':
|
|
57
|
+
await disconnect();
|
|
58
|
+
break;
|
|
59
|
+
case 'terminate-session':
|
|
60
|
+
await terminateSession();
|
|
61
|
+
break;
|
|
62
|
+
case 'reconnect':
|
|
63
|
+
await reconnect();
|
|
64
|
+
break;
|
|
65
|
+
case 'list-tools':
|
|
66
|
+
await listTools();
|
|
67
|
+
break;
|
|
68
|
+
case 'call-tool':
|
|
69
|
+
if (args.length < 2) {
|
|
70
|
+
console.log('Usage: call-tool <name> [args]');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const toolName = args[1];
|
|
74
|
+
let toolArgs = {};
|
|
75
|
+
if (args.length > 2) {
|
|
76
|
+
try {
|
|
77
|
+
toolArgs = JSON.parse(args.slice(2).join(' '));
|
|
78
|
+
}
|
|
79
|
+
catch (_b) {
|
|
80
|
+
console.log('Invalid JSON arguments. Using empty args.');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await callTool(toolName, toolArgs);
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case 'greet':
|
|
87
|
+
await callGreetTool(args[1] || 'MCP User');
|
|
88
|
+
break;
|
|
89
|
+
case 'multi-greet':
|
|
90
|
+
await callMultiGreetTool(args[1] || 'MCP User');
|
|
91
|
+
break;
|
|
92
|
+
case 'start-notifications': {
|
|
93
|
+
const interval = args[1] ? parseInt(args[1], 10) : 2000;
|
|
94
|
+
const count = args[2] ? parseInt(args[2], 10) : 10;
|
|
95
|
+
await startNotifications(interval, count);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'list-prompts':
|
|
99
|
+
await listPrompts();
|
|
100
|
+
break;
|
|
101
|
+
case 'get-prompt':
|
|
102
|
+
if (args.length < 2) {
|
|
103
|
+
console.log('Usage: get-prompt <name> [args]');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const promptName = args[1];
|
|
107
|
+
let promptArgs = {};
|
|
108
|
+
if (args.length > 2) {
|
|
109
|
+
try {
|
|
110
|
+
promptArgs = JSON.parse(args.slice(2).join(' '));
|
|
111
|
+
}
|
|
112
|
+
catch (_c) {
|
|
113
|
+
console.log('Invalid JSON arguments. Using empty args.');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
await getPrompt(promptName, promptArgs);
|
|
117
|
+
}
|
|
118
|
+
break;
|
|
119
|
+
case 'list-resources':
|
|
120
|
+
await listResources();
|
|
121
|
+
break;
|
|
122
|
+
case 'help':
|
|
123
|
+
printHelp();
|
|
124
|
+
break;
|
|
125
|
+
case 'quit':
|
|
126
|
+
case 'exit':
|
|
127
|
+
await cleanup();
|
|
128
|
+
return;
|
|
129
|
+
default:
|
|
130
|
+
if (command) {
|
|
131
|
+
console.log(`Unknown command: ${command}`);
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error(`Error executing command: ${error}`);
|
|
138
|
+
}
|
|
139
|
+
// Continue the command loop
|
|
140
|
+
commandLoop();
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async function connect(url) {
|
|
144
|
+
if (client) {
|
|
145
|
+
console.log('Already connected. Disconnect first.');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (url) {
|
|
149
|
+
serverUrl = url;
|
|
150
|
+
}
|
|
151
|
+
console.log(`Connecting to ${serverUrl}...`);
|
|
152
|
+
try {
|
|
153
|
+
// Create a new client
|
|
154
|
+
client = new index_js_1.Client({
|
|
155
|
+
name: 'example-client',
|
|
156
|
+
version: '1.0.0'
|
|
157
|
+
});
|
|
158
|
+
client.onerror = (error) => {
|
|
159
|
+
console.error('\x1b[31mClient error:', error, '\x1b[0m');
|
|
160
|
+
};
|
|
161
|
+
transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(serverUrl), {
|
|
162
|
+
sessionId: sessionId
|
|
163
|
+
});
|
|
164
|
+
// Set up notification handlers
|
|
165
|
+
client.setNotificationHandler(types_js_1.LoggingMessageNotificationSchema, (notification) => {
|
|
166
|
+
notificationCount++;
|
|
167
|
+
console.log(`\nNotification #${notificationCount}: ${notification.params.level} - ${notification.params.data}`);
|
|
168
|
+
// Re-display the prompt
|
|
169
|
+
process.stdout.write('> ');
|
|
170
|
+
});
|
|
171
|
+
client.setNotificationHandler(types_js_1.ResourceListChangedNotificationSchema, async (_) => {
|
|
172
|
+
console.log(`\nResource list changed notification received!`);
|
|
173
|
+
try {
|
|
174
|
+
if (!client) {
|
|
175
|
+
console.log('Client disconnected, cannot fetch resources');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const resourcesResult = await client.request({
|
|
179
|
+
method: 'resources/list',
|
|
180
|
+
params: {}
|
|
181
|
+
}, types_js_1.ListResourcesResultSchema);
|
|
182
|
+
console.log('Available resources count:', resourcesResult.resources.length);
|
|
183
|
+
}
|
|
184
|
+
catch (_a) {
|
|
185
|
+
console.log('Failed to list resources after change notification');
|
|
186
|
+
}
|
|
187
|
+
// Re-display the prompt
|
|
188
|
+
process.stdout.write('> ');
|
|
189
|
+
});
|
|
190
|
+
// Connect the client
|
|
191
|
+
await client.connect(transport);
|
|
192
|
+
sessionId = transport.sessionId;
|
|
193
|
+
console.log('Transport created with session ID:', sessionId);
|
|
194
|
+
console.log('Connected to MCP server');
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
console.error('Failed to connect:', error);
|
|
198
|
+
client = null;
|
|
199
|
+
transport = null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async function disconnect() {
|
|
203
|
+
if (!client || !transport) {
|
|
204
|
+
console.log('Not connected.');
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
await transport.close();
|
|
209
|
+
console.log('Disconnected from MCP server');
|
|
210
|
+
client = null;
|
|
211
|
+
transport = null;
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
console.error('Error disconnecting:', error);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async function terminateSession() {
|
|
218
|
+
if (!client || !transport) {
|
|
219
|
+
console.log('Not connected.');
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
console.log('Terminating session with ID:', transport.sessionId);
|
|
224
|
+
await transport.terminateSession();
|
|
225
|
+
console.log('Session terminated successfully');
|
|
226
|
+
// Check if sessionId was cleared after termination
|
|
227
|
+
if (!transport.sessionId) {
|
|
228
|
+
console.log('Session ID has been cleared');
|
|
229
|
+
sessionId = undefined;
|
|
230
|
+
// Also close the transport and clear client objects
|
|
231
|
+
await transport.close();
|
|
232
|
+
console.log('Transport closed after session termination');
|
|
233
|
+
client = null;
|
|
234
|
+
transport = null;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log('Server responded with 405 Method Not Allowed (session termination not supported)');
|
|
238
|
+
console.log('Session ID is still active:', transport.sessionId);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
console.error('Error terminating session:', error);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function reconnect() {
|
|
246
|
+
if (client) {
|
|
247
|
+
await disconnect();
|
|
248
|
+
}
|
|
249
|
+
await connect();
|
|
250
|
+
}
|
|
251
|
+
async function listTools() {
|
|
252
|
+
if (!client) {
|
|
253
|
+
console.log('Not connected to server.');
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
const toolsRequest = {
|
|
258
|
+
method: 'tools/list',
|
|
259
|
+
params: {}
|
|
260
|
+
};
|
|
261
|
+
const toolsResult = await client.request(toolsRequest, types_js_1.ListToolsResultSchema);
|
|
262
|
+
console.log('Available tools:');
|
|
263
|
+
if (toolsResult.tools.length === 0) {
|
|
264
|
+
console.log(' No tools available');
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
for (const tool of toolsResult.tools) {
|
|
268
|
+
console.log(` - ${tool.name}: ${tool.description}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.log(`Tools not supported by this server (${error})`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
async function callTool(name, args) {
|
|
277
|
+
if (!client) {
|
|
278
|
+
console.log('Not connected to server.');
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
try {
|
|
282
|
+
const request = {
|
|
283
|
+
method: 'tools/call',
|
|
284
|
+
params: {
|
|
285
|
+
name,
|
|
286
|
+
arguments: args
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
console.log(`Calling tool '${name}' with args:`, args);
|
|
290
|
+
const onLastEventIdUpdate = (event) => {
|
|
291
|
+
notificationsToolLastEventId = event;
|
|
292
|
+
};
|
|
293
|
+
const result = await client.request(request, types_js_1.CallToolResultSchema, {
|
|
294
|
+
resumptionToken: notificationsToolLastEventId, onresumptiontoken: onLastEventIdUpdate
|
|
295
|
+
});
|
|
296
|
+
console.log('Tool result:');
|
|
297
|
+
result.content.forEach(item => {
|
|
298
|
+
if (item.type === 'text') {
|
|
299
|
+
console.log(` ${item.text}`);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
console.log(` ${item.type} content:`, item);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
console.log(`Error calling tool ${name}: ${error}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
async function callGreetTool(name) {
|
|
311
|
+
await callTool('greet', { name });
|
|
312
|
+
}
|
|
313
|
+
async function callMultiGreetTool(name) {
|
|
314
|
+
console.log('Calling multi-greet tool with notifications...');
|
|
315
|
+
await callTool('multi-greet', { name });
|
|
316
|
+
}
|
|
317
|
+
async function startNotifications(interval, count) {
|
|
318
|
+
console.log(`Starting notification stream: interval=${interval}ms, count=${count || 'unlimited'}`);
|
|
319
|
+
await callTool('start-notification-stream', { interval, count });
|
|
320
|
+
}
|
|
321
|
+
async function listPrompts() {
|
|
322
|
+
if (!client) {
|
|
323
|
+
console.log('Not connected to server.');
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
try {
|
|
327
|
+
const promptsRequest = {
|
|
328
|
+
method: 'prompts/list',
|
|
329
|
+
params: {}
|
|
330
|
+
};
|
|
331
|
+
const promptsResult = await client.request(promptsRequest, types_js_1.ListPromptsResultSchema);
|
|
332
|
+
console.log('Available prompts:');
|
|
333
|
+
if (promptsResult.prompts.length === 0) {
|
|
334
|
+
console.log(' No prompts available');
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
for (const prompt of promptsResult.prompts) {
|
|
338
|
+
console.log(` - ${prompt.name}: ${prompt.description}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
console.log(`Prompts not supported by this server (${error})`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
async function getPrompt(name, args) {
|
|
347
|
+
if (!client) {
|
|
348
|
+
console.log('Not connected to server.');
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
try {
|
|
352
|
+
const promptRequest = {
|
|
353
|
+
method: 'prompts/get',
|
|
354
|
+
params: {
|
|
355
|
+
name,
|
|
356
|
+
arguments: args
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
const promptResult = await client.request(promptRequest, types_js_1.GetPromptResultSchema);
|
|
360
|
+
console.log('Prompt template:');
|
|
361
|
+
promptResult.messages.forEach((msg, index) => {
|
|
362
|
+
console.log(` [${index + 1}] ${msg.role}: ${msg.content.text}`);
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
console.log(`Error getting prompt ${name}: ${error}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
async function listResources() {
|
|
370
|
+
if (!client) {
|
|
371
|
+
console.log('Not connected to server.');
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
try {
|
|
375
|
+
const resourcesRequest = {
|
|
376
|
+
method: 'resources/list',
|
|
377
|
+
params: {}
|
|
378
|
+
};
|
|
379
|
+
const resourcesResult = await client.request(resourcesRequest, types_js_1.ListResourcesResultSchema);
|
|
380
|
+
console.log('Available resources:');
|
|
381
|
+
if (resourcesResult.resources.length === 0) {
|
|
382
|
+
console.log(' No resources available');
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
for (const resource of resourcesResult.resources) {
|
|
386
|
+
console.log(` - ${resource.name}: ${resource.uri}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
console.log(`Resources not supported by this server (${error})`);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
async function cleanup() {
|
|
395
|
+
if (client && transport) {
|
|
396
|
+
try {
|
|
397
|
+
// First try to terminate the session gracefully
|
|
398
|
+
if (transport.sessionId) {
|
|
399
|
+
try {
|
|
400
|
+
console.log('Terminating session before exit...');
|
|
401
|
+
await transport.terminateSession();
|
|
402
|
+
console.log('Session terminated successfully');
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
console.error('Error terminating session:', error);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// Then close the transport
|
|
409
|
+
await transport.close();
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
console.error('Error closing transport:', error);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
process.stdin.setRawMode(false);
|
|
416
|
+
readline.close();
|
|
417
|
+
console.log('\nGoodbye!');
|
|
418
|
+
process.exit(0);
|
|
419
|
+
}
|
|
420
|
+
// Set up raw mode for keyboard input to capture Escape key
|
|
421
|
+
process.stdin.setRawMode(true);
|
|
422
|
+
process.stdin.on('data', async (data) => {
|
|
423
|
+
// Check for Escape key (27)
|
|
424
|
+
if (data.length === 1 && data[0] === 27) {
|
|
425
|
+
console.log('\nESC key pressed. Disconnecting from server...');
|
|
426
|
+
// Abort current operation and disconnect from server
|
|
427
|
+
if (client && transport) {
|
|
428
|
+
await disconnect();
|
|
429
|
+
console.log('Disconnected. Press Enter to continue.');
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
console.log('Not connected to server.');
|
|
433
|
+
}
|
|
434
|
+
// Re-display the prompt
|
|
435
|
+
process.stdout.write('> ');
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
// Handle Ctrl+C
|
|
439
|
+
process.on('SIGINT', async () => {
|
|
440
|
+
console.log('\nReceived SIGINT. Cleaning up...');
|
|
441
|
+
await cleanup();
|
|
442
|
+
});
|
|
443
|
+
// Start the interactive client
|
|
444
|
+
main().catch((error) => {
|
|
445
|
+
console.error('Error running MCP client:', error);
|
|
446
|
+
process.exit(1);
|
|
447
|
+
});
|
|
448
|
+
//# sourceMappingURL=simpleStreamableHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleStreamableHttp.js","sourceRoot":"","sources":["../../../../src/examples/client/simpleStreamableHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamableHttpWithSseFallbackClient.d.ts","sourceRoot":"","sources":["../../../../src/examples/client/streamableHttpWithSseFallbackClient.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_js_1 = require("../../client/index.js");
|
|
4
|
+
const streamableHttp_js_1 = require("../../client/streamableHttp.js");
|
|
5
|
+
const sse_js_1 = require("../../client/sse.js");
|
|
6
|
+
const types_js_1 = require("../../types.js");
|
|
7
|
+
/**
|
|
8
|
+
* Simplified Backwards Compatible MCP Client
|
|
9
|
+
*
|
|
10
|
+
* This client demonstrates backward compatibility with both:
|
|
11
|
+
* 1. Modern servers using Streamable HTTP transport (protocol version 2025-03-26)
|
|
12
|
+
* 2. Older servers using HTTP+SSE transport (protocol version 2024-11-05)
|
|
13
|
+
*
|
|
14
|
+
* Following the MCP specification for backwards compatibility:
|
|
15
|
+
* - Attempts to POST an initialize request to the server URL first (modern transport)
|
|
16
|
+
* - If that fails with 4xx status, falls back to GET request for SSE stream (older transport)
|
|
17
|
+
*/
|
|
18
|
+
// Command line args processing
|
|
19
|
+
const args = process.argv.slice(2);
|
|
20
|
+
const serverUrl = args[0] || 'http://localhost:3000/mcp';
|
|
21
|
+
async function main() {
|
|
22
|
+
console.log('MCP Backwards Compatible Client');
|
|
23
|
+
console.log('===============================');
|
|
24
|
+
console.log(`Connecting to server at: ${serverUrl}`);
|
|
25
|
+
let client;
|
|
26
|
+
let transport;
|
|
27
|
+
try {
|
|
28
|
+
// Try connecting with automatic transport detection
|
|
29
|
+
const connection = await connectWithBackwardsCompatibility(serverUrl);
|
|
30
|
+
client = connection.client;
|
|
31
|
+
transport = connection.transport;
|
|
32
|
+
// Set up notification handler
|
|
33
|
+
client.setNotificationHandler(types_js_1.LoggingMessageNotificationSchema, (notification) => {
|
|
34
|
+
console.log(`Notification: ${notification.params.level} - ${notification.params.data}`);
|
|
35
|
+
});
|
|
36
|
+
// DEMO WORKFLOW:
|
|
37
|
+
// 1. List available tools
|
|
38
|
+
console.log('\n=== Listing Available Tools ===');
|
|
39
|
+
await listTools(client);
|
|
40
|
+
// 2. Call the notification tool
|
|
41
|
+
console.log('\n=== Starting Notification Stream ===');
|
|
42
|
+
await startNotificationTool(client);
|
|
43
|
+
// 3. Wait for all notifications (5 seconds)
|
|
44
|
+
console.log('\n=== Waiting for all notifications ===');
|
|
45
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
46
|
+
// 4. Disconnect
|
|
47
|
+
console.log('\n=== Disconnecting ===');
|
|
48
|
+
await transport.close();
|
|
49
|
+
console.log('Disconnected from MCP server');
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error('Error running client:', error);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Connect to an MCP server with backwards compatibility
|
|
58
|
+
* Following the spec for client backward compatibility
|
|
59
|
+
*/
|
|
60
|
+
async function connectWithBackwardsCompatibility(url) {
|
|
61
|
+
console.log('1. Trying Streamable HTTP transport first...');
|
|
62
|
+
// Step 1: Try Streamable HTTP transport first
|
|
63
|
+
const client = new index_js_1.Client({
|
|
64
|
+
name: 'backwards-compatible-client',
|
|
65
|
+
version: '1.0.0'
|
|
66
|
+
});
|
|
67
|
+
client.onerror = (error) => {
|
|
68
|
+
console.error('Client error:', error);
|
|
69
|
+
};
|
|
70
|
+
const baseUrl = new URL(url);
|
|
71
|
+
try {
|
|
72
|
+
// Create modern transport
|
|
73
|
+
const streamableTransport = new streamableHttp_js_1.StreamableHTTPClientTransport(baseUrl);
|
|
74
|
+
await client.connect(streamableTransport);
|
|
75
|
+
console.log('Successfully connected using modern Streamable HTTP transport.');
|
|
76
|
+
return {
|
|
77
|
+
client,
|
|
78
|
+
transport: streamableTransport,
|
|
79
|
+
transportType: 'streamable-http'
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Step 2: If transport fails, try the older SSE transport
|
|
84
|
+
console.log(`StreamableHttp transport connection failed: ${error}`);
|
|
85
|
+
console.log('2. Falling back to deprecated HTTP+SSE transport...');
|
|
86
|
+
try {
|
|
87
|
+
// Create SSE transport pointing to /sse endpoint
|
|
88
|
+
const sseTransport = new sse_js_1.SSEClientTransport(baseUrl);
|
|
89
|
+
const sseClient = new index_js_1.Client({
|
|
90
|
+
name: 'backwards-compatible-client',
|
|
91
|
+
version: '1.0.0'
|
|
92
|
+
});
|
|
93
|
+
await sseClient.connect(sseTransport);
|
|
94
|
+
console.log('Successfully connected using deprecated HTTP+SSE transport.');
|
|
95
|
+
return {
|
|
96
|
+
client: sseClient,
|
|
97
|
+
transport: sseTransport,
|
|
98
|
+
transportType: 'sse'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (sseError) {
|
|
102
|
+
console.error(`Failed to connect with either transport method:\n1. Streamable HTTP error: ${error}\n2. SSE error: ${sseError}`);
|
|
103
|
+
throw new Error('Could not connect to server with any available transport');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* List available tools on the server
|
|
109
|
+
*/
|
|
110
|
+
async function listTools(client) {
|
|
111
|
+
try {
|
|
112
|
+
const toolsRequest = {
|
|
113
|
+
method: 'tools/list',
|
|
114
|
+
params: {}
|
|
115
|
+
};
|
|
116
|
+
const toolsResult = await client.request(toolsRequest, types_js_1.ListToolsResultSchema);
|
|
117
|
+
console.log('Available tools:');
|
|
118
|
+
if (toolsResult.tools.length === 0) {
|
|
119
|
+
console.log(' No tools available');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
for (const tool of toolsResult.tools) {
|
|
123
|
+
console.log(` - ${tool.name}: ${tool.description}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.log(`Tools not supported by this server: ${error}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Start a notification stream by calling the notification tool
|
|
133
|
+
*/
|
|
134
|
+
async function startNotificationTool(client) {
|
|
135
|
+
try {
|
|
136
|
+
// Call the notification tool using reasonable defaults
|
|
137
|
+
const request = {
|
|
138
|
+
method: 'tools/call',
|
|
139
|
+
params: {
|
|
140
|
+
name: 'start-notification-stream',
|
|
141
|
+
arguments: {
|
|
142
|
+
interval: 1000, // 1 second between notifications
|
|
143
|
+
count: 5 // Send 5 notifications
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
console.log('Calling notification tool...');
|
|
148
|
+
const result = await client.request(request, types_js_1.CallToolResultSchema);
|
|
149
|
+
console.log('Tool result:');
|
|
150
|
+
result.content.forEach(item => {
|
|
151
|
+
if (item.type === 'text') {
|
|
152
|
+
console.log(` ${item.text}`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.log(` ${item.type} content:`, item);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.log(`Error calling notification tool: ${error}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Start the client
|
|
164
|
+
main().catch((error) => {
|
|
165
|
+
console.error('Error running MCP client:', error);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=streamableHttpWithSseFallbackClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamableHttpWithSseFallbackClient.js","sourceRoot":"","sources":["../../../../src/examples/client/streamableHttpWithSseFallbackClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonResponseStreamableHttp.d.ts","sourceRoot":"","sources":["../../../../src/examples/server/jsonResponseStreamableHttp.ts"],"names":[],"mappings":""}
|