Skip to content

Commit 88c5400

Browse files
committed
chore: format CLAUDE.md
1 parent 8563ed7 commit 88c5400

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

CLAUDE.md

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ The SDK is organized into three main layers:
3636
2. **Protocol Layer** (`src/shared/protocol.ts`) - The abstract `Protocol` class that handles JSON-RPC message routing, request/response correlation, capability negotiation, and transport management. Both `Client` and `Server` extend this class.
3737

3838
3. **High-Level APIs**:
39-
- `Client` (`src/client/index.ts`) - Low-level client extending Protocol with typed methods for all MCP operations
40-
- `Server` (`src/server/index.ts`) - Low-level server extending Protocol with request handler registration
41-
- `McpServer` (`src/server/mcp.ts`) - High-level server API with simplified resource/tool/prompt registration
39+
- `Client` (`src/client/index.ts`) - Low-level client extending Protocol with typed methods for all MCP operations
40+
- `Server` (`src/server/index.ts`) - Low-level server extending Protocol with request handler registration
41+
- `McpServer` (`src/server/mcp.ts`) - High-level server API with simplified resource/tool/prompt registration
4242

4343
### Transport System
4444

@@ -65,23 +65,27 @@ Transports (`src/shared/transport.ts`) provide the communication layer:
6565
### Experimental Features
6666

6767
Located in `src/experimental/`:
68+
6869
- **Tasks**: Long-running task support with polling/resumption (`src/experimental/tasks/`)
6970

7071
### Zod Compatibility
7172

7273
The SDK uses `zod/v4` internally but supports both v3 and v4 APIs. Compatibility utilities:
74+
7375
- `src/server/zod-compat.ts` - Schema parsing helpers that work across versions
7476
- `src/server/zod-json-schema-compat.ts` - Converts Zod schemas to JSON Schema
7577

7678
### Validation
7779

7880
Pluggable JSON Schema validation (`src/validation/`):
81+
7982
- `ajv-provider.ts` - Default Ajv-based validator
8083
- `cfworker-provider.ts` - Cloudflare Workers-compatible alternative
8184

8285
### Examples
8386

8487
Runnable examples in `src/examples/`:
88+
8589
- `server/` - Various server configurations (stateful, stateless, OAuth, etc.)
8690
- `client/` - Client examples (basic, OAuth, parallel calls, etc.)
8791
- `shared/` - Shared utilities like in-memory event store
@@ -105,11 +109,11 @@ When code calls `client.callTool()` or `server.createMessage()`:
105109

106110
1. **High-level method** (e.g., `Client.callTool()`) calls `this.request()`
107111
2. **`Protocol.request()`**:
108-
- Assigns unique message ID
109-
- Checks capabilities via `assertCapabilityForMethod()` (abstract, implemented by Client/Server)
110-
- Creates response handler promise
111-
- Calls `transport.send()` with JSON-RPC request
112-
- Waits for response handler to resolve
112+
- Assigns unique message ID
113+
- Checks capabilities via `assertCapabilityForMethod()` (abstract, implemented by Client/Server)
114+
- Creates response handler promise
115+
- Calls `transport.send()` with JSON-RPC request
116+
- Waits for response handler to resolve
113117
3. **Transport** serializes and sends over wire (HTTP, stdio, etc.)
114118
4. **`Protocol._onresponse()`** resolves the promise when response arrives
115119

@@ -120,9 +124,9 @@ When a request arrives from the remote side:
120124
1. **Transport** receives message, calls `transport.onmessage()`
121125
2. **`Protocol.connect()`** routes to `_onrequest()`, `_onresponse()`, or `_onnotification()`
122126
3. **`Protocol._onrequest()`**:
123-
- Looks up handler in `_requestHandlers` map (keyed by method name)
124-
- Creates `RequestHandlerExtra` with `signal`, `sessionId`, `sendNotification`, `sendRequest`
125-
- Invokes handler, sends JSON-RPC response back via transport
127+
- Looks up handler in `_requestHandlers` map (keyed by method name)
128+
- Creates `RequestHandlerExtra` with `signal`, `sessionId`, `sendNotification`, `sendRequest`
129+
- Invokes handler, sends JSON-RPC response back via transport
126130
4. **Handler** was registered via `setRequestHandler(Schema, handler)`
127131

128132
### Handler Registration
@@ -144,6 +148,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
144148
### Request Handler Extra
145149

146150
The `extra` parameter in handlers (`RequestHandlerExtra`) provides:
151+
147152
- `signal`: AbortSignal for cancellation
148153
- `sessionId`: Transport session identifier
149154
- `authInfo`: Validated auth token info (if authenticated)
@@ -190,27 +195,32 @@ client.setRequestHandler(CreateMessageRequestSchema, async (request, extra) => {
190195
## Key Patterns
191196

192197
### Request Handler Registration (Low-Level Server)
198+
193199
```typescript
194200
server.setRequestHandler(SomeRequestSchema, async (request, extra) => {
195-
// extra contains sessionId, authInfo, sendNotification, etc.
196-
return { /* result */ };
201+
// extra contains sessionId, authInfo, sendNotification, etc.
202+
return {
203+
/* result */
204+
};
197205
});
198206
```
199207

200208
### Tool Registration (High-Level McpServer)
209+
201210
```typescript
202-
mcpServer.tool("tool-name", { param: z.string() }, async ({ param }, extra) => {
203-
return { content: [{ type: "text", text: "result" }] };
211+
mcpServer.tool('tool-name', { param: z.string() }, async ({ param }, extra) => {
212+
return { content: [{ type: 'text', text: 'result' }] };
204213
});
205214
```
206215

207216
### Transport Connection
217+
208218
```typescript
209219
// Server
210220
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID() });
211221
await server.connect(transport);
212222

213223
// Client
214-
const transport = new StreamableHTTPClientTransport(new URL("http://localhost:3000/mcp"));
224+
const transport = new StreamableHTTPClientTransport(new URL('http://localhost:3000/mcp'));
215225
await client.connect(transport);
216226
```

0 commit comments

Comments
 (0)