Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/client.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,10 @@ To discover URI templates for dynamic resources, use {@linkcode @modelcontextpro

### Subscribing to resource changes

If the server supports resource subscriptions, use {@linkcode @modelcontextprotocol/client!client/client.Client#subscribeResource | subscribeResource()} to receive notifications when a resource changes, then re-read it:
If the server supports resource subscriptions, use {@linkcode @modelcontextprotocol/client!client/client.Client#subscribe | client.subscribe()} on 2026-06+ connections, or {@linkcode @modelcontextprotocol/client!client/legacyClient.LegacyClient#subscribeResource | client.legacy.subscribeResource()} on pre-2026 connections, to receive notifications when a resource changes, then re-read it:

```ts source="../examples/client/src/clientGuide.examples.ts#subscribeResource_basic"
await client.subscribeResource({ uri: 'config://app' });
await client.legacy.subscribeResource({ uri: 'config://app' });

client.setNotificationHandler('notifications/resources/updated', async notification => {
if (notification.params.uri === 'config://app') {
Expand All @@ -311,7 +311,7 @@ client.setNotificationHandler('notifications/resources/updated', async notificat
});

// Later: stop receiving updates
await client.unsubscribeResource({ uri: 'config://app' });
await client.legacy.unsubscribeResource({ uri: 'config://app' });
```

## Prompts
Expand Down Expand Up @@ -485,7 +485,7 @@ client.setRequestHandler('roots/list', async () => {
});
```

When the available roots change, notify the server with {@linkcode @modelcontextprotocol/client!client/client.Client#sendRootsListChanged | client.sendRootsListChanged()}.
When the available roots change, notify the server with {@linkcode @modelcontextprotocol/client!client/legacyClient.LegacyClient#sendRootsListChanged | client.legacy.sendRootsListChanged()}.

## Error handling

Expand Down Expand Up @@ -578,7 +578,7 @@ When using SSE-based streaming, the server can assign event IDs. Pass `onresumpt
```ts source="../examples/client/src/clientGuide.examples.ts#resumptionToken_basic"
let lastToken: string | undefined;

const result = await client.request(
const result = await client.legacy.request(
{
method: 'tools/call',
params: { name: 'long-running-task', arguments: {} }
Expand Down
6 changes: 3 additions & 3 deletions examples/client/src/clientGuide.examples.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ async function readResource_basic(client: Client) {
/** Example: Subscribe to resource changes. */
async function subscribeResource_basic(client: Client) {
//#region subscribeResource_basic
await client.subscribeResource({ uri: 'config://app' });
await client.legacy.subscribeResource({ uri: 'config://app' });

client.setNotificationHandler('notifications/resources/updated', async notification => {
if (notification.params.uri === 'config://app') {
Expand All @@ -268,7 +268,7 @@ async function subscribeResource_basic(client: Client) {
});

// Later: stop receiving updates
await client.unsubscribeResource({ uri: 'config://app' });
await client.legacy.unsubscribeResource({ uri: 'config://app' });
//#endregion subscribeResource_basic
}

Expand Down Expand Up @@ -527,7 +527,7 @@ async function resumptionToken_basic(client: Client) {
//#region resumptionToken_basic
let lastToken: string | undefined;

const result = await client.request(
const result = await client.legacy.request(
{
method: 'tools/call',
params: { name: 'long-running-task', arguments: {} }
Expand Down
2 changes: 1 addition & 1 deletion examples/client/src/customMethodExample.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ client.setNotificationHandler('acme/searchProgress', { params: SearchProgressPar

await client.connect(new StdioClientTransport({ command: 'node', args: ['../server/dist/customMethodExample.js'] }));

const result = await client.request({ method: 'acme/search', params: { query: 'mcp', limit: 3 } }, SearchResult);
const result = await client.legacy.request({ method: 'acme/search', params: { query: 'mcp', limit: 3 } }, SearchResult);
console.log('items:', result.items);

await client.close();
2 changes: 1 addition & 1 deletion examples/client/src/elicitationUrlExample.ts
Original file line number Diff line number Diff line change
Expand Up @@ -663,7 +663,7 @@ async function listTools(): Promise<void> {
method: 'tools/list',
params: {}
};
const toolsResult = await client.request(toolsRequest);
const toolsResult = await client.legacy.request(toolsRequest);

console.log('Available tools:');
if (toolsResult.tools.length === 0) {
Expand Down
2 changes: 1 addition & 1 deletion examples/client/src/parallelToolCallsClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ async function listTools(client: Client): Promise<void> {
method: 'tools/list',
params: {}
};
const toolsResult = await client.request(toolsRequest);
const toolsResult = await client.legacy.request(toolsRequest);

console.log('Available tools:');
if (toolsResult.tools.length === 0) {
Expand Down
2 changes: 1 addition & 1 deletion examples/client/src/simpleOAuthClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ class InteractiveOAuthClient {
params: {}
};

const result = await this.client.request(request);
const result = await this.client.legacy.request(request);

if (result.tools && result.tools.length > 0) {
console.log('\n📋 Available tools:');
Expand Down
12 changes: 6 additions & 6 deletions examples/client/src/simpleStreamableHttp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ async function connect(url?: string): Promise<void> {
console.log('Client disconnected, cannot fetch resources');
return;
}
const resourcesResult = await client.request({
const resourcesResult = await client.legacy.request({
method: 'resources/list',
params: {}
});
Expand Down Expand Up @@ -559,7 +559,7 @@ async function listTools(): Promise<void> {
method: 'tools/list',
params: {}
};
const toolsResult = await client.request(toolsRequest);
const toolsResult = await client.legacy.request(toolsRequest);

console.log('Available tools:');
if (toolsResult.tools.length === 0) {
Expand Down Expand Up @@ -704,7 +704,7 @@ async function listPrompts(): Promise<void> {
method: 'prompts/list',
params: {}
};
const promptsResult = await client.request(promptsRequest);
const promptsResult = await client.legacy.request(promptsRequest);
console.log('Available prompts:');
if (promptsResult.prompts.length === 0) {
console.log(' No prompts available');
Expand Down Expand Up @@ -733,7 +733,7 @@ async function getPrompt(name: string, args: Record<string, unknown>): Promise<v
}
};

const promptResult = await client.request(promptRequest);
const promptResult = await client.legacy.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)}`);
Expand All @@ -754,7 +754,7 @@ async function listResources(): Promise<void> {
method: 'resources/list',
params: {}
};
const resourcesResult = await client.request(resourcesRequest);
const resourcesResult = await client.legacy.request(resourcesRequest);

console.log('Available resources:');
if (resourcesResult.resources.length === 0) {
Expand Down Expand Up @@ -782,7 +782,7 @@ async function readResource(uri: string): Promise<void> {
};

console.log(`Reading resource: ${uri}`);
const result = await client.request(request);
const result = await client.legacy.request(request);

console.log('Resource contents:');
for (const content of result.contents) {
Expand Down
2 changes: 1 addition & 1 deletion examples/client/src/ssePollingClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ async function main(): Promise<void> {
console.log('[Client] Server will disconnect mid-task to demonstrate polling');
console.log('');

const result = await client.request(
const result = await client.legacy.request(
{
method: 'tools/call',
params: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ async function listTools(client: Client): Promise<void> {
method: 'tools/list',
params: {}
};
const toolsResult = await client.request(toolsRequest);
const toolsResult = await client.legacy.request(toolsRequest);

console.log('Available tools:');
if (toolsResult.tools.length === 0) {
Expand Down
8 changes: 4 additions & 4 deletions examples/server/src/elicitationUrlExample.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const getServer = () => {

// Create and track the elicitation
const elicitationId = generateTrackedElicitation(sessionId, elicitationId =>
mcpServer.server.createElicitationCompletionNotifier(elicitationId)
mcpServer.server.legacy.createElicitationCompletionNotifier(elicitationId)
);
throw new UrlElicitationRequiredError([
{
Expand Down Expand Up @@ -89,7 +89,7 @@ const getServer = () => {

// Create and track the elicitation
const elicitationId = generateTrackedElicitation(sessionId, elicitationId =>
mcpServer.server.createElicitationCompletionNotifier(elicitationId)
mcpServer.server.legacy.createElicitationCompletionNotifier(elicitationId)
);

// Simulate OAuth callback and token exchange after 5 seconds
Expand Down Expand Up @@ -583,8 +583,8 @@ const mcpPostHandler = async (req: Request, res: Response) => {
// there is no session to send to. Prefer ctx.mcpReq.elicitInput
// inside a tool/prompt handler when possible.
sessionsNeedingElicitation[sessionId] = {
elicitationSender: params => server.server.elicitInput(params),
createCompletionNotifier: elicitationId => server.server.createElicitationCompletionNotifier(elicitationId)
elicitationSender: params => server.server.legacy.elicitInput(params),
createCompletionNotifier: elicitationId => server.server.legacy.createElicitationCompletionNotifier(elicitationId)
};
}
});
Expand Down
Loading
Loading