docs: comprehensive feature documentation for SEP-1730 Tier 1 (#1548)

This commit is contained in:
Felix Weinberger 2026-02-17 16:22:16 +00:00 • committed by GitHub
commit 342ea394ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -58,3 +58,53 @@ These examples show how to:
- Perform dynamic client registration if needed.
- Acquire access tokens.
- Attach OAuth credentials to Streamable HTTP requests.
## stdio transport
Use `StdioClientTransport` to connect to a server that runs as a local child process:
```typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'node',
args: ['server.js'],
env: { NODE_ENV: 'production' },
cwd: '/path/to/server'
});
const client = new Client({ name: 'my-client', version: '1.0.0' });
await client.connect(transport);
// connect() calls transport.start() automatically, spawning the child process
```
The transport communicates over the child process's stdin/stdout using JSON-RPC. The `stderr` option controls where the child's stderr goes (defaults to `'inherit'`).
## Roots
Roots let a client expose filesystem locations to the server, so the server knows which directories or files are relevant. Declare the `roots` capability and register a handler:
```typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { ListRootsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
const client = new Client({ name: 'my-client', version: '1.0.0' }, { capabilities: { roots: { listChanged: true } } });
client.setRequestHandler(ListRootsRequestSchema, async () => {
return {
roots: [
{ uri: 'file:///home/user/project', name: 'My Project' },
{ uri: 'file:///home/user/data', name: 'Data Directory' }
]
};
});
```
When the set of roots changes, notify the server so it can re-query:
```typescript
await client.sendRootsListChanged();
```
Root URIs must use the `file://` scheme. The `listChanged: true` capability flag is required to send change notifications.