docs: comprehensive feature documentation for SEP-1730 Tier 1 (#1548)
This commit is contained in:
parent
2084a22074
commit
342ea394ca
1 changed files with 742 additions and 5 deletions
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue