v2 refactor!: remove Zod schema parameter from public-facing APIs (#1606)

This commit is contained in:
Konstantin Konstantinov 2026-03-04 20:34:47 +02:00 • committed by GitHub
commit f88c376c52
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,6 +2,7 @@ import { createInterface } from 'node:readline';
import type {
CallToolRequest,
CallToolResult,
GetPromptRequest,
ListPromptsRequest,
ListResourcesRequest,
@ -10,17 +11,11 @@ import type {
ResourceLink
} from '@modelcontextprotocol/client';
import {
CallToolResultSchema,
Client,
getDisplayName,
GetPromptResultSchema,
InMemoryTaskStore,
ListPromptsResultSchema,
ListResourcesResultSchema,
ListToolsResultSchema,
ProtocolError,
ProtocolErrorCode,
ReadResourceResultSchema,
RELATED_TASK_META_KEY,
StreamableHTTPClientTransport
} from '@modelcontextprotocol/client';
@ -541,13 +536,10 @@ async function connect(url?: string): Promise<void> {
console.log('Client disconnected, cannot fetch resources');
return;
}
const resourcesResult = await client.request(
{
method: 'resources/list',
params: {}
},
ListResourcesResultSchema
);
const resourcesResult = await client.request({
method: 'resources/list',
params: {}
});
console.log('Available resources count:', resourcesResult.resources.length);
} catch {
console.log('Failed to list resources after change notification');
@ -632,7 +624,7 @@ async function listTools(): Promise<void> {
method: 'tools/list',
params: {}
};
const toolsResult = await client.request(toolsRequest, ListToolsResultSchema);
const toolsResult = await client.request(toolsRequest);
console.log('Available tools:');
if (toolsResult.tools.length === 0) {
@ -663,7 +655,7 @@ async function callTool(name: string, args: Record<string, unknown>): Promise<vo
};
console.log(`Calling tool '${name}' with args:`, args);
const result = await client.request(request, CallToolResultSchema);
const result = (await client.request(request)) as CallToolResult;
console.log('Tool result:');
const resourceLinks: ResourceLink[] = [];
@ -767,10 +759,10 @@ async function runNotificationsToolWithResumability(interval: number, count: num
console.log(`Updated resumption token: ${event}`);
};
const result = await client.request(request, CallToolResultSchema, {
const result = (await client.request(request, {
resumptionToken: notificationsToolLastEventId,
onresumptiontoken: onLastEventIdUpdate
});
})) as CallToolResult;
console.log('Tool result:');
for (const item of result.content) {
@ -796,7 +788,7 @@ async function listPrompts(): Promise<void> {
method: 'prompts/list',
params: {}
};
const promptsResult = await client.request(promptsRequest, ListPromptsResultSchema);
const promptsResult = await client.request(promptsRequest);
console.log('Available prompts:');
if (promptsResult.prompts.length === 0) {
console.log(' No prompts available');
@ -825,7 +817,7 @@ async function getPrompt(name: string, args: Record<string, unknown>): Promise<v
}
};
const promptResult = await client.request(promptRequest, GetPromptResultSchema);
const promptResult = await client.request(promptRequest);
console.log('Prompt template:');
for (const [index, msg] of promptResult.messages.entries()) {
console.log(` [${index + 1}] ${msg.role}: ${msg.content.type === 'text' ? msg.content.text : JSON.stringify(msg.content)}`);
@ -846,7 +838,7 @@ async function listResources(): Promise<void> {
method: 'resources/list',
params: {}
};
const resourcesResult = await client.request(resourcesRequest, ListResourcesResultSchema);
const resourcesResult = await client.request(resourcesRequest);
console.log('Available resources:');
if (resourcesResult.resources.length === 0) {
@ -874,7 +866,7 @@ async function readResource(uri: string): Promise<void> {
};
console.log(`Reading resource: ${uri}`);
const result = await client.request(request, ReadResourceResultSchema);
const result = await client.request(request);
console.log('Resource contents:');
for (const content of result.contents) {
@ -948,7 +940,8 @@ async function callToolTask(name: string, args: Record<string, unknown>): Promis
case 'result': {
console.log('Task completed!');
console.log('Tool result:');
for (const item of message.result.content) {
const toolResult = message.result as CallToolResult;
for (const item of toolResult.content) {
if (item.type === 'text') {
console.log(` ${item.text}`);
}