From ea5fe6d11558397ae7c7a699d7b347897d89e9ed Mon Sep 17 00:00:00 2001 From: Zack Lee Date: Thu, 21 Nov 2024 11:24:39 -0500 Subject: [PATCH] removed api reference --- .../client-api/connection-management.mdx | 355 -------------- .../client-api/resource-consumption.mdx | 418 ---------------- api-reference/client-api/tool-invocation.mdx | 329 ------------- api-reference/error-handling.mdx | 241 --------- api-reference/message-types.mdx | 267 ---------- api-reference/protocol-overview.mdx | 86 ---- api-reference/python/class-reference.mdx | 340 ------------- api-reference/python/type-hints.mdx | 359 -------------- api-reference/server-api/event-handling.mdx | 330 ------------- .../server-api/resource-management.mdx | 385 --------------- .../server-api/tool-implementation.mdx | 462 ------------------ api-reference/typescript/class-reference.mdx | 418 ---------------- api-reference/typescript/type-definitions.mdx | 461 ----------------- docs/tools/inspector.mdx | 4 + images/mcp-inspector.png | Bin 0 -> 300631 bytes mint.json | 59 +-- style.css | 15 - 17 files changed, 7 insertions(+), 4522 deletions(-) delete mode 100644 api-reference/client-api/connection-management.mdx delete mode 100644 api-reference/client-api/resource-consumption.mdx delete mode 100644 api-reference/client-api/tool-invocation.mdx delete mode 100644 api-reference/error-handling.mdx delete mode 100644 api-reference/message-types.mdx delete mode 100644 api-reference/protocol-overview.mdx delete mode 100644 api-reference/python/class-reference.mdx delete mode 100644 api-reference/python/type-hints.mdx delete mode 100644 api-reference/server-api/event-handling.mdx delete mode 100644 api-reference/server-api/resource-management.mdx delete mode 100644 api-reference/server-api/tool-implementation.mdx delete mode 100644 api-reference/typescript/class-reference.mdx delete mode 100644 api-reference/typescript/type-definitions.mdx create mode 100644 images/mcp-inspector.png delete mode 100644 style.css diff --git a/api-reference/client-api/connection-management.mdx b/api-reference/client-api/connection-management.mdx deleted file mode 100644 index ee99918..0000000 --- a/api-reference/client-api/connection-management.mdx +++ /dev/null @@ -1,355 +0,0 @@ ---- -title: "Connection management" -description: "Learn how to establish and manage MCP client connections" ---- - -## Overview - -The MCP client API provides flexible connection management options with support for different transport types. This guide covers establishing connections, handling connection events, and managing connection lifecycles. - -## Creating a client - -First, create an MCP client instance with your application's information. - - -```typescript TypeScript -import { Client } from "@modelcontextprotocol/sdk"; - -const client = new Client({ - name: "my-application", - version: "1.0.0" -}); -``` - -```python Python -from mcp import Client - -client = Client( - name="my-application", - version="1.0.0" -) -``` - - -## Transport types - -MCP supports multiple transport types for different use cases. Choose the appropriate transport based on your needs. - -### WebSocket transport - -Use WebSocket transport for real-time bidirectional communication. - - -```typescript TypeScript -import { WebSocketClientTransport } from "@modelcontextprotocol/sdk"; - -const transport = new WebSocketClientTransport( - new URL("ws://localhost:3000") -); - -await client.connect(transport); -``` - -```python Python -from mcp.transports import WebSocketTransport - -transport = WebSocketTransport( - url="ws://localhost:3000" -) - -await client.connect(transport) -``` - - -### SSE transport - -Server-Sent Events transport is suitable for scenarios where the server pushes data to the client. - - -```typescript TypeScript -import { SSEClientTransport } from "@modelcontextprotocol/sdk"; - -const transport = new SSEClientTransport( - new URL("http://localhost:3000/events") -); - -await client.connect(transport); -``` - -```python Python -from mcp.transports import SSETransport - -transport = SSETransport( - url="http://localhost:3000/events" -) - -await client.connect(transport) -``` - - -### Stdio transport - -For local server processes, use the stdio transport to communicate via standard input/output. - - -```typescript TypeScript -import { StdioClientTransport } from "@modelcontextprotocol/sdk"; - -const transport = new StdioClientTransport({ - command: "/path/to/server", - args: ["--arg1", "--arg2"], - env: { "KEY": "value" } -}); - -await client.connect(transport); -``` - -```python Python -from mcp.transports import StdioTransport - -transport = StdioTransport( - command="/path/to/server", - args=["--arg1", "--arg2"], - env={"KEY": "value"} -) - -await client.connect(transport) -``` - - -## Connection lifecycle - -### Event handling - -Set up event handlers to manage the connection lifecycle. - - -```typescript TypeScript -client.onclose = () => { - console.log("Connection closed"); -}; - -client.onerror = (error) => { - console.error("Connection error:", error); -}; - -// Transport-specific events -transport.onclose = () => { - console.log("Transport closed"); -}; - -transport.onerror = (error) => { - console.error("Transport error:", error); -}; -``` - -```python Python -@client.on_close -async def handle_close(): - print("Connection closed") - -@client.on_error -async def handle_error(error): - print(f"Connection error: {error}") - -# Transport-specific events -@transport.on_close -async def handle_transport_close(): - print("Transport closed") - -@transport.on_error -async def handle_transport_error(error): - print(f"Transport error: {error}") -``` - - -### Connection states - -Monitor and manage connection states throughout your application's lifecycle. - - -```typescript TypeScript -// Check if connected -if (client.transport) { - console.log("Client is connected"); -} - -// Get server capabilities after connection -const capabilities = client.getServerCapabilities(); -const serverVersion = client.getServerVersion(); - -// Clean up connection -await client.close(); -``` - -```python Python -# Check if connected -if client.transport: - print("Client is connected") - -# Get server capabilities after connection -capabilities = client.get_server_capabilities() -server_version = client.get_server_version() - -# Clean up connection -await client.close() -``` - - -## Error handling - -Implement robust error handling for connection-related issues. - - -```typescript TypeScript -try { - await client.connect(transport); -} catch (error) { - if (error.code === ErrorCode.ConnectionClosed) { - // Handle connection closure - } else if (error.code === ErrorCode.InvalidRequest) { - // Handle invalid request - } else { - // Handle other errors - } -} -``` - -```python Python -try: - await client.connect(transport) -except ConnectionClosedError: - # Handle connection closure - pass -except InvalidRequestError: - # Handle invalid request - pass -except McpError as e: - # Handle other errors - pass -``` - - -## Best practices - - - - Always close connections when they're no longer needed to free up resources - - - Implement comprehensive error handling for all connection states - - - Set up appropriate event handlers before establishing connections - - - Use try/finally blocks to ensure proper cleanup of resources - - - -## Connection examples - -Here are some common connection patterns: - - - - - ```typescript TypeScript - async function connectWithRetry( - client: Client, - transport: Transport, - maxAttempts = 3 - ) { - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - try { - await client.connect(transport); - return; - } catch (error) { - if (attempt === maxAttempts) throw error; - await new Promise(resolve => setTimeout(resolve, 1000 * attempt)); - } - } - } - ``` - - ```python Python - async def connect_with_retry( - client: Client, - transport: Transport, - max_attempts: int = 3 - ): - for attempt in range(max_attempts): - try: - await client.connect(transport) - return - except Exception as e: - if attempt == max_attempts - 1: - raise - await asyncio.sleep(attempt + 1) - ``` - - - - - - ```typescript TypeScript - async function connectWithTimeout( - client: Client, - transport: Transport, - timeoutMs = 5000 - ) { - const timeoutPromise = new Promise((_, reject) => { - setTimeout(() => reject(new Error("Connection timeout")), timeoutMs); - }); - - await Promise.race([ - client.connect(transport), - timeoutPromise - ]); - } - ``` - - ```python Python - async def connect_with_timeout( - client: Client, - transport: Transport, - timeout: float = 5.0 - ): - async with asyncio.timeout(timeout): - await client.connect(transport) - ``` - - - - -## Troubleshooting - - - - - Verify the server is running and accessible - - Check if the port is correct and available - - Ensure firewalls aren't blocking the connection - - - - - Verify credentials if required - - Check if environment variables are properly set - - Ensure transport configuration is correct - - - - - Implement reconnection logic - - Check network stability - - Monitor server health - - - -## Transport selection guide - -Choose the appropriate transport based on your use case: - -| Transport | Use Case | Advantages | Considerations | -|-----------|----------|------------|----------------| -| WebSocket | Real-time bidirectional | Full-duplex, low latency | Requires WebSocket server | -| SSE | Server push updates | Simple, firewall-friendly | One-way server push | -| Stdio | Local process communication | Simple, reliable | Limited to local processes | \ No newline at end of file diff --git a/api-reference/client-api/resource-consumption.mdx b/api-reference/client-api/resource-consumption.mdx deleted file mode 100644 index 2cac05d..0000000 --- a/api-reference/client-api/resource-consumption.mdx +++ /dev/null @@ -1,418 +0,0 @@ ---- -title: "Resource consumption" -description: "Learn how to consume resources from MCP servers" ---- - -MCP servers can expose resources that clients can access. This guide explains how to list available resources, read their contents, and subscribe to resource updates using both Python and TypeScript. - -## Listing resources - -To get a list of available resources from an MCP server: - - - -```typescript list_resources.ts -import { Client } from "@modelcontextprotocol/sdk"; - -const client = new Client({ - name: "my-client", - version: "1.0.0", -}); - -// Connect to the server -await client.connect(transport); - -// List available resources -const result = await client.request( - { - method: "resources/list" - }, - ListResourcesResultSchema -); - -// Available resources -for (const resource of result.resources) { - console.log(`Found resource: ${resource.name} (${resource.uri})`); -} -``` - -```python list_resources.py -from modelcontextprotocol.client import Client - -client = Client( - name="my-client", - version="1.0.0" -) - -# Connect to the server -await client.connect(transport) - -# List available resources -result = await client.request({ - "method": "resources/list" -}) - -# Available resources -for resource in result["resources"]: - print(f"Found resource: {resource['name']} ({resource['uri']})") -``` - - - -## Reading resources - -Once you have a resource URI, you can read its contents: - - - -```typescript read_resource.ts -// Read a specific resource -const result = await client.request( - { - method: "resources/read", - params: { - uri: "file:///example.txt" - } - }, - ReadResourceResultSchema -); - -// Process the contents -for (const content of result.contents) { - if ("text" in content) { - console.log("Text content:", content.text); - } else if ("blob" in content) { - // Handle binary data (base64 encoded) - const binaryData = Buffer.from(content.blob, "base64"); - console.log("Binary content length:", binaryData.length); - } -} -``` - -```python read_resource.py -# Read a specific resource -result = await client.request({ - "method": "resources/read", - "params": { - "uri": "file:///example.txt" - } -}) - -# Process the contents -for content in result["contents"]: - if "text" in content: - print("Text content:", content["text"]) - elif "blob" in content: - # Handle binary data (base64 encoded) - import base64 - binary_data = base64.b64decode(content["blob"]) - print("Binary content length:", len(binary_data)) -``` - - - -## Resource templates - -Some servers provide resource templates that can be used to construct resource URIs dynamically: - - - -```typescript list_templates.ts -const result = await client.request( - { - method: "resources/templates/list" - }, - ListResourceTemplatesResultSchema -); - -for (const template of result.resourceTemplates) { - console.log(`Template: ${template.name}`); - console.log(`URI template: ${template.uriTemplate}`); -} -``` - -```python list_templates.py -result = await client.request({ - "method": "resources/templates/list" -}) - -for template in result["resourceTemplates"]: - print(f"Template: {template['name']}") - print(f"URI template: {template['uriTemplate']}") -``` - - - -## Subscribing to updates - -You can subscribe to receive notifications when resources change: - - - -```typescript subscribe_resource.ts -// Subscribe to changes -await client.request( - { - method: "resources/subscribe", - params: { - uri: "file:///example.txt" - } - }, - EmptyResultSchema -); - -// Set up notification handler -client.setNotificationHandler( - ResourceUpdatedNotificationSchema, - async (notification) => { - console.log(`Resource updated: ${notification.params.uri}`); - - // Re-read the resource - const result = await client.request( - { - method: "resources/read", - params: { - uri: notification.params.uri - } - }, - ReadResourceResultSchema - ); - - // Process updated contents... - } -); - -// Later, unsubscribe when done -await client.request( - { - method: "resources/unsubscribe", - params: { - uri: "file:///example.txt" - } - }, - EmptyResultSchema -); -``` - -```python subscribe_resource.py -# Subscribe to changes -await client.request({ - "method": "resources/subscribe", - "params": { - "uri": "file:///example.txt" - } -}) - -# Set up notification handler -@client.notification_handler("notifications/resources/updated") -async def handle_update(notification): - print(f"Resource updated: {notification['params']['uri']}") - - # Re-read the resource - result = await client.request({ - "method": "resources/read", - "params": { - "uri": notification["params"]["uri"] - } - }) - - # Process updated contents... - -# Later, unsubscribe when done -await client.request({ - "method": "resources/unsubscribe", - "params": { - "uri": "file:///example.txt" - } -}) -``` - - - -## Handling pagination - -When listing resources, servers may paginate results. Here's how to handle pagination: - - - -```typescript pagination.ts -let cursor: string | undefined = undefined; - -do { - const result = await client.request( - { - method: "resources/list", - params: { cursor } - }, - ListResourcesResultSchema - ); - - // Process current page of resources - for (const resource of result.resources) { - console.log(`Resource: ${resource.name}`); - } - - // Update cursor for next page - cursor = result.nextCursor; -} while (cursor !== undefined); -``` - -```python pagination.py -cursor = None - -while True: - result = await client.request({ - "method": "resources/list", - "params": { "cursor": cursor } - }) - - # Process current page of resources - for resource in result["resources"]: - print(f"Resource: {resource['name']}") - - # Update cursor for next page - cursor = result.get("nextCursor") - if cursor is None: - break -``` - - - -## Error handling - -When working with resources, handle potential errors appropriately: - - - -```typescript error_handling.ts -import { McpError, ErrorCode } from "@modelcontextprotocol/sdk"; - -try { - const result = await client.request( - { - method: "resources/read", - params: { - uri: "file:///nonexistent.txt" - } - }, - ReadResourceResultSchema - ); -} catch (error) { - if (error instanceof McpError) { - switch (error.code) { - case ErrorCode.InvalidRequest: - console.error("Invalid resource URI"); - break; - case ErrorCode.MethodNotFound: - console.error("Server doesn't support resource reading"); - break; - default: - console.error(`Resource error: ${error.message}`); - } - } -} -``` - -```python error_handling.py -from modelcontextprotocol.errors import McpError, ErrorCode - -try: - result = await client.request({ - "method": "resources/read", - "params": { - "uri": "file:///nonexistent.txt" - } - }) -except McpError as error: - if error.code == ErrorCode.INVALID_REQUEST: - print("Invalid resource URI") - elif error.code == ErrorCode.METHOD_NOT_FOUND: - print("Server doesn't support resource reading") - else: - print(f"Resource error: {error.message}") -``` - - - -## Best practices - -When consuming resources from MCP servers: - - - - Always unsubscribe from resources when you're done with them - - - Implement proper error handling for all resource operations - - - Check MIME types before processing resource contents - - - Always handle pagination when listing resources - - - -## Type safety - -To ensure type safety when working with resources: - - - -```typescript type_safety.ts -import { - Resource, - ResourceContents, - TextResourceContents, - BlobResourceContents -} from "@modelcontextprotocol/sdk"; - -function isTextContent( - content: ResourceContents -): content is TextResourceContents { - return "text" in content; -} - -function isBlobContent( - content: ResourceContents -): content is BlobResourceContents { - return "blob" in content; -} - -// Use type guards when processing contents -for (const content of result.contents) { - if (isTextContent(content)) { - // TypeScript knows this is text content - const text: string = content.text; - } else if (isBlobContent(content)) { - // TypeScript knows this is binary content - const blob: string = content.blob; - } -} -``` - -```python type_safety.py -from typing import TypedDict, Union, Literal - -class TextContent(TypedDict): - type: Literal["text"] - text: str - uri: str - mimeType: str - -class BlobContent(TypedDict): - type: Literal["blob"] - blob: str - uri: str - mimeType: str - -ResourceContent = Union[TextContent, BlobContent] - -def process_content(content: ResourceContent) -> None: - if content["type"] == "text": - text: str = content["text"] - else: - blob: str = content["blob"] -``` - - \ No newline at end of file diff --git a/api-reference/client-api/tool-invocation.mdx b/api-reference/client-api/tool-invocation.mdx deleted file mode 100644 index 7c12613..0000000 --- a/api-reference/client-api/tool-invocation.mdx +++ /dev/null @@ -1,329 +0,0 @@ ---- -title: "Tool invocation" -description: "Learn how to invoke tools through the MCP client API" ---- - -MCP allows clients to invoke tools exposed by servers. Tools are discrete operations that servers can perform on behalf of clients, similar to function calls. - -## Getting available tools - -Before invoking tools, you'll need to get a list of available tools from the server. - - -```typescript TypeScript -import { Client } from "@modelcontextprotocol/sdk/client"; -import { ListToolsResultSchema } from "@modelcontextprotocol/sdk/types"; - -// Assuming client is already connected -const result = await client.request( - { - method: "tools/list" - }, - ListToolsResultSchema -); - -// Tools are now available in result.tools -for (const tool of result.tools) { - console.log(`Found tool: ${tool.name}`); - console.log(`Description: ${tool.description}`); -} -``` - -```python Python -from mcp.client import Client -from mcp.types import ListToolsRequest - -# Assuming client is already connected -result = await client.request( - ListToolsRequest(method="tools/list"), - ListToolsResultSchema -) - -# Tools are now available in result.tools -for tool in result.tools: - print(f"Found tool: {tool.name}") - print(f"Description: {tool.description}") -``` - - -## Tool invocation - -To invoke a tool, you'll use the `tools/call` method with the tool name and any required arguments. - - -```typescript TypeScript -import { CallToolRequest, CallToolResultSchema } from "@modelcontextprotocol/sdk/types"; - -const result = await client.request( - { - method: "tools/call", - params: { - name: "example_tool", - arguments: { - param1: "value1", - param2: 42 - } - } - }, - CallToolResultSchema -); - -// Tool result is available in result.toolResult -console.log("Tool result:", result.toolResult); -``` - -```python Python -from mcp.types import CallToolRequest, CallToolResult - -result = await client.request( - CallToolRequest( - method="tools/call", - params={ - "name": "example_tool", - "arguments": { - "param1": "value1", - "param2": 42 - } - } - ), - CallToolResult -) - -# Tool result is available in result.tool_result -print("Tool result:", result.tool_result) -``` - - -## Progress tracking - -For long-running tools, you can track progress using progress notifications. - - -```typescript TypeScript -const result = await client.request( - { - method: "tools/call", - params: { - name: "long_running_tool", - arguments: { - duration: 10 - } - } - }, - CallToolResultSchema, - (progress) => { - console.log(`Progress: ${progress.progress}/${progress.total ?? '?'}`); - } -); -``` - -```python Python -def progress_callback(progress): - print(f"Progress: {progress.progress}/{progress.total or '?'}") - -result = await client.request( - CallToolRequest( - method="tools/call", - params={ - "name": "long_running_tool", - "arguments": { - "duration": 10 - } - } - ), - CallToolResult, - on_progress=progress_callback -) -``` - - -## Error handling - -Tool invocations may fail for various reasons. Always handle potential errors appropriately. - - -```typescript TypeScript -try { - const result = await client.request( - { - method: "tools/call", - params: { - name: "risky_tool", - arguments: { - important_param: "value" - } - } - }, - CallToolResultSchema - ); -} catch (error) { - if (error instanceof McpError) { - console.error(`Tool error (${error.code}): ${error.message}`); - if (error.data) { - console.error("Additional error data:", error.data); - } - } else { - console.error("Unexpected error:", error); - } -} -``` - -```python Python -from mcp.errors import McpError - -try: - result = await client.request( - CallToolRequest( - method="tools/call", - params={ - "name": "risky_tool", - "arguments": { - "important_param": "value" - } - } - ), - CallToolResult - ) -except McpError as e: - print(f"Tool error ({e.code}): {e.message}") - if e.data: - print("Additional error data:", e.data) -except Exception as e: - print("Unexpected error:", e) -``` - - -## Complete example - -Here's a complete example showing how to discover and use tools with proper error handling. - - -```typescript TypeScript -import { Client } from "@modelcontextprotocol/sdk/client"; -import { - ListToolsResultSchema, - CallToolResultSchema, - McpError -} from "@modelcontextprotocol/sdk/types"; - -async function invokeTools(client: Client) { - try { - // Get available tools - const toolsList = await client.request( - { method: "tools/list" }, - ListToolsResultSchema - ); - - // Find a specific tool - const tool = toolsList.tools.find(t => t.name === "example_tool"); - if (!tool) { - console.error("Tool not found"); - return; - } - - // Invoke the tool with progress tracking - const result = await client.request( - { - method: "tools/call", - params: { - name: tool.name, - arguments: { - // Tool-specific arguments - param1: "value1" - } - } - }, - CallToolResultSchema, - (progress) => { - console.log( - `Progress: ${progress.progress}/${progress.total ?? '?'}` - ); - } - ); - - console.log("Tool result:", result.toolResult); - } catch (error) { - if (error instanceof McpError) { - console.error(`Tool error (${error.code}): ${error.message}`); - } else { - console.error("Unexpected error:", error); - } - } -} -``` - -```python Python -from mcp.client import Client -from mcp.types import ListToolsRequest, CallToolRequest -from mcp.errors import McpError - -async def invoke_tools(client: Client): - try: - # Get available tools - tools_list = await client.request( - ListToolsRequest(method="tools/list"), - ListToolsResultSchema - ) - - # Find a specific tool - tool = next( - (t for t in tools_list.tools if t.name == "example_tool"), - None - ) - if not tool: - print("Tool not found") - return - - # Invoke the tool with progress tracking - result = await client.request( - CallToolRequest( - method="tools/call", - params={ - "name": tool.name, - "arguments": { - # Tool-specific arguments - "param1": "value1" - } - } - ), - CallToolResult, - on_progress=lambda p: print( - f"Progress: {p.progress}/{p.total or '?'}" - ) - ) - - print("Tool result:", result.tool_result) - except McpError as e: - print(f"Tool error ({e.code}): {e.message}") - except Exception as e: - print("Unexpected error:", e) -``` - - -## Best practices - -When working with tools: - - - - Always check tool availability before invoking - - - Implement comprehensive error handling - - - Use progress callbacks for long-running operations - - - Validate arguments against the tool's input schema - - - -## Common errors - -| Error Code | Description | Resolution | -|------------|-------------|------------| -| -32601 | Method not found | Verify the tool name exists | -| -32602 | Invalid params | Check the tool's input schema | -| -32603 | Internal error | Server-side error, check server logs | -| -1 | Connection closed | Check connection status | \ No newline at end of file diff --git a/api-reference/error-handling.mdx b/api-reference/error-handling.mdx deleted file mode 100644 index 1cf9e9a..0000000 --- a/api-reference/error-handling.mdx +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: 'Error handling' -description: 'How to handle and respond to errors in the Model Context Protocol' ---- - -MCP follows JSON-RPC 2.0's error handling patterns while adding specific error codes and best practices for MCP implementations. - -## Error response structure - -When an error occurs, servers must respond with an error object instead of a result: - -```json -{ - "jsonrpc": "2.0", - "id": 1, - "error": { - "code": -32601, - "message": "Method not found", - "data": { - // Optional additional error details - } - } -} -``` - -### Required fields - - - A number indicating the error type - - - A concise, single-sentence description - - - Optional object with additional details - - - -## Standard error codes - -MCP uses both standard JSON-RPC error codes and MCP-specific codes. - -### JSON-RPC standard codes - -| Code | Name | Description | Example | -|------|------|-------------|----------| -| -32700 | Parse error | Invalid JSON received | Malformed JSON in request | -| -32600 | Invalid request | Request object invalid | Missing required fields | -| -32601 | Method not found | Method doesn't exist | Calling undefined endpoint | -| -32602 | Invalid params | Invalid method parameters | Wrong parameter types | -| -32603 | Internal error | Internal JSON-RPC error | Unexpected server error | - -### MCP-specific codes - -| Code | Name | Description | -|------|------|-------------| -| -1 | Connection closed | Connection was terminated | -| Additional codes TBD | | | - -## Common error scenarios - - - - Errors that can occur during the connection initialization phase: - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "error": { - "code": -32600, - "message": "Unsupported protocol version", - "data": { - "requestedVersion": "2023-01-01", - "supportedVersions": ["2024-10-07"] - } - } - } - ``` - - - - Errors when accessing resources: - - ```json - { - "jsonrpc": "2.0", - "id": 2, - "error": { - "code": -32601, - "message": "Resource not found", - "data": { - "uri": "file:///nonexistent.txt" - } - } - } - ``` - - - - Errors during tool execution: - - ```json - { - "jsonrpc": "2.0", - "id": 3, - "error": { - "code": -32602, - "message": "Invalid tool parameters", - "data": { - "tool": "query", - "invalidParams": ["sql"] - } - } - } - ``` - - - -## Error handling best practices - - - - Choose the most specific error code that applies to the situation. Prefer standard JSON-RPC codes when applicable. - - - Error messages should be: - - Concise (single sentence) - - Descriptive - - Action-oriented when possible - - - Add relevant details in the `data` field to help diagnose and resolve the issue: - ```json - { - "error": { - "code": -32602, - "message": "Invalid resource URI format", - "data": { - "uri": "invalid://uri", - "expectedFormat": "file:///path/to/resource", - "validSchemes": ["file", "http", "https"] - } - } - } - ``` - - - Implement proper cleanup and recovery for connection-related errors: - ```typescript - try { - await client.connect(transport); - } catch (error) { - if (error.code === -1) { - // Handle connection closed - await cleanup(); - await reconnect(); - } - } - ``` - - - -## Client-side error handling - -Recommendations for MCP clients: - - - - Implement timeouts for requests and handle them gracefully: - ```typescript - const response = await Promise.race([ - client.request(request), - new Promise((_, reject) => - setTimeout(() => reject(new Error('Timeout')), 5000) - ) - ]); - ``` - - - Implement exponential backoff for reconnection attempts: - ```typescript - async function reconnect(attempts = 0) { - try { - await client.connect(transport); - } catch (error) { - if (attempts < maxAttempts) { - await delay(Math.min(1000 * Math.pow(2, attempts), 30000)); - await reconnect(attempts + 1); - } - } - } - ``` - - - -## Server-side error handling - -Best practices for MCP servers: - - - - When possible, continue operating with reduced functionality rather than failing completely - - - Always clean up resources when errors occur, especially for long-running operations - - - Log errors with appropriate context for debugging while keeping sensitive information secure - - - Implement rate limiting and return appropriate error responses when limits are exceeded - - - -## Type-safe error handling - -When using TypeScript with MCP: - -```typescript -import { McpError, ErrorCode } from "@modelcontextprotocol/sdk"; - -try { - await server.handleRequest(request); -} catch (error) { - if (error instanceof McpError) { - switch (error.code) { - case ErrorCode.ConnectionClosed: - // Handle connection closed - break; - case ErrorCode.MethodNotFound: - // Handle unknown method - break; - default: - // Handle other MCP errors - } - } else { - // Handle unexpected errors - } -} -``` \ No newline at end of file diff --git a/api-reference/message-types.mdx b/api-reference/message-types.mdx deleted file mode 100644 index 5690c7b..0000000 --- a/api-reference/message-types.mdx +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: 'Message types' -description: 'Understanding the different types of messages in the Model Context Protocol' ---- - -The Model Context Protocol (MCP) uses JSON-RPC 2.0 as its base protocol and defines several message types for communication between clients and servers. - -## Core message types - -MCP uses three core types of messages for communication: - - - - Messages that expect a response, identified by a unique ID - - - Messages sent in reply to requests, containing results or errors - - - One-way messages that don't expect a response - - - -## Message structure - -All messages in MCP follow the JSON-RPC 2.0 specification and include specific required fields. - - - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "method": "resources/list", - "params": { - // Optional method parameters - } - } - ``` - Required fields: - - `jsonrpc`: Must be "2.0" - - `id`: A unique identifier for the request - - `method`: The name of the method to invoke - - - - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - // Method-specific result data - } - } - ``` - Required fields: - - `jsonrpc`: Must be "2.0" - - `id`: The same ID as the corresponding request - - `result`: The result data (or `error` for error responses) - - - - - ```json - { - "jsonrpc": "2.0", - "method": "notifications/initialized", - "params": { - // Optional notification parameters - } - } - ``` - Required fields: - - `jsonrpc`: Must be "2.0" - - `method`: The name of the notification - - - -## Error handling - -When a request cannot be fulfilled, the server responds with an error object instead of a result. - -```json -{ - "jsonrpc": "2.0", - "id": 1, - "error": { - "code": -32601, - "message": "Method not found", - "data": { - // Optional additional error information - } - } -} -``` - -### Standard error codes - -| Code | Message | Description | -|------|---------|-------------| -| -32700 | Parse error | Invalid JSON received | -| -32600 | Invalid request | Request object invalid | -| -32601 | Method not found | Requested method doesn't exist | -| -32602 | Invalid params | Method parameters invalid | -| -32603 | Internal error | Internal JSON-RPC error | - -## Progress tracking - -MCP supports progress tracking for long-running operations through a combination of request parameters and notifications. - - - - Add a progress token in the request: - ```json - { - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "_meta": { - "progressToken": "abc123" - } - } - } - ``` - - - The server sends progress updates as notifications: - ```json - { - "jsonrpc": "2.0", - "method": "notifications/progress", - "params": { - "progressToken": "abc123", - "progress": 50, - "total": 100 - } - } - ``` - - - -## Message content types - -MCP supports different content types for messages exchanged between the client and server. - - -```json Text content -{ - "type": "text", - "text": "This is a text message" -} -``` - -```json Image content -{ - "type": "image", - "data": "base64-encoded-image-data", - "mimeType": "image/png" -} -``` - - -## Special considerations - -When implementing MCP message handling, keep in mind: - -- All messages must be encoded in UTF-8 -- Binary data must be base64 encoded -- Message IDs should be unique within a session -- Error messages should be concise and single-sentence -- Progress notifications are optional and may not be supported by all servers - -## Message flow examples - -Here are some common message flow patterns in MCP: - - - - 1. Client sends request: - ```json - { - "jsonrpc": "2.0", - "id": 1, - "method": "resources/list" - } - ``` - - 2. Server responds with resources: - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "resources": [ - { - "uri": "file:///example.txt", - "name": "Example File", - "mimeType": "text/plain" - } - ] - } - } - ``` - - - - 1. Client sends tool request: - ```json - { - "jsonrpc": "2.0", - "id": 2, - "method": "tools/call", - "params": { - "name": "longRunningTool", - "_meta": { - "progressToken": "token123" - } - } - } - ``` - - 2. Server sends progress notifications: - ```json - { - "jsonrpc": "2.0", - "method": "notifications/progress", - "params": { - "progressToken": "token123", - "progress": 50, - "total": 100 - } - } - ``` - - 3. Server sends final response: - ```json - { - "jsonrpc": "2.0", - "id": 2, - "result": { - "toolResult": "Operation completed successfully" - } - } - ``` - - - -## Best practices - -When working with MCP messages: - - - - Always include appropriate error codes and meaningful error messages - - - Send regular progress updates for long-running operations - - - Validate message content against the appropriate schemas - - - Clean up resources when connections are closed - - \ No newline at end of file diff --git a/api-reference/protocol-overview.mdx b/api-reference/protocol-overview.mdx deleted file mode 100644 index b6677e7..0000000 --- a/api-reference/protocol-overview.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: "Protocol overview" -description: "Learn about the core concepts and architecture of the Model Context Protocol (MCP)" ---- - -The Model Context Protocol (MCP) is a standardized protocol that enables AI applications to securely access external data sources and tools. MCP follows a client-server architecture where AI applications act as clients that can connect to one or more MCP servers. - -## Key features - - - - Connect AI models to any data source or tool through a unified protocol - - - Control what data and capabilities are exposed to AI systems - - - Combine multiple servers together for enhanced functionality - - - Build integrations that work consistently across AI applications - - - -## Core concepts -MCP defines several key primitives that form the foundation of the protocol: - - - Data that can be loaded as context for the AI model. Resources have URIs and can contain text or binary data. - - - Functions that the AI can invoke to perform actions, like writing files or calling APIs. - - - Pre-defined prompt templates that help guide AI interactions in specific ways. - - - Allows servers to request completions from the AI model through the client. - - - -## Protocol flow - -### Connection and initialization -When a client connects to an MCP server, they go through the following initialization sequence: - - - The client establishes a connection to the server using one of the supported transports. - - - The client sends an initialize request containing its capabilities and protocol version. - - - The server responds with its own capabilities and supported protocol version. - - - The client sends an initialized notification to indicate setup is complete. - - - -After initialization, the client can begin using the server's resources, tools, and other capabilities. - -### Transport options -MCP supports multiple transport mechanisms for client-server communication: - - - - Server process reads from stdin and writes to stdout - - Messages are newline-terminated JSON - - Client manages server process lifetime - - State is lost when process exits - - - - - Bidirectional communication over WebSocket protocol - - Client and server negotiate using 'mcp' subprotocol - - Can connect to remote servers - - State persists until disconnect - - - - - Server pushes messages via SSE - - Client sends messages via HTTP POST - - Supports cross-origin restrictions - - State persists until SSE connection closes - - \ No newline at end of file diff --git a/api-reference/python/class-reference.mdx b/api-reference/python/class-reference.mdx deleted file mode 100644 index 8887cde..0000000 --- a/api-reference/python/class-reference.mdx +++ /dev/null @@ -1,340 +0,0 @@ ---- -title: "Python class reference" -description: "Complete Python SDK class documentation" ---- - -## Server class - -The main class for implementing MCP servers in Python. - -```python -from mcp_python.server import Server -``` - -### Constructor - -```python -Server(name: str, version: str = "1.0.0") -``` - -Creates a new MCP server instance. - -**Parameters:** -- `name` (str): Name of the server -- `version` (str, optional): Version of the server. Defaults to "1.0.0" - -### Decorators - -#### Resource handling - -##### @server.list_resources() -```python -@server.list_resources() -async def list_resources() -> List[Resource]: - """Lists available resources.""" -``` - -**Returns:** List of `Resource` objects containing: -- `uri` (str): Resource identifier -- `name` (str): Human-readable name -- `description` (str, optional): Resource description -- `mimeType` (str, optional): MIME type of the resource - -##### @server.read_resource() -```python -@server.read_resource() -async def read_resource(uri: str) -> Union[str, bytes]: - """Reads content of a specific resource.""" -``` - -**Parameters:** -- `uri` (str): Resource URI to read - -**Returns:** Content of the resource as either string or bytes - -##### @server.subscribe_resource() -```python -@server.subscribe_resource() -async def subscribe_resource(uri: str) -> None: - """Handles resource subscription requests.""" -``` - -**Parameters:** -- `uri` (str): Resource URI to subscribe to - -##### @server.unsubscribe_resource() -```python -@server.unsubscribe_resource() -async def unsubscribe_resource(uri: str) -> None: - """Handles resource unsubscribe requests.""" -``` - -**Parameters:** -- `uri` (str): Resource URI to unsubscribe from - -#### Tool support - -##### @server.list_tools() -```python -@server.list_tools() -async def list_tools() -> List[Tool]: - """Lists available tools.""" -``` - -**Returns:** List of `Tool` objects containing: -- `name` (str): Tool identifier -- `description` (str): Human-readable description -- `parameters` (dict): JSON Schema defining tool parameters - -##### @server.call_tool() -```python -@server.call_tool() -async def call_tool(name: str, **kwargs) -> Any: - """Handles tool execution requests.""" -``` - -**Parameters:** -- `name` (str): Tool identifier -- `**kwargs`: Tool-specific parameters - -**Returns:** Tool execution result (any JSON-serializable value) - -#### Prompt management - -##### @server.list_prompts() -```python -@server.list_prompts() -async def list_prompts() -> List[Prompt]: - """Lists available prompts.""" -``` - -**Returns:** List of `Prompt` objects containing: -- `name` (str): Prompt identifier -- `description` (str, optional): Human-readable description -- `parameters` (dict, optional): JSON Schema defining prompt parameters - -##### @server.get_prompt() -```python -@server.get_prompt() -async def get_prompt(name: str, arguments: dict) -> PromptResponse: - """Retrieves specific prompt templates.""" -``` - -**Parameters:** -- `name` (str): Prompt identifier -- `arguments` (dict): Prompt parameters - -**Returns:** `PromptResponse` object containing: -- `messages` (List[Message]): List of prompt messages -- `description` (str, optional): Description of the prompt response - -### Session methods - -Methods available on the server session object: - -#### send_resource_updated() -```python -async def send_resource_updated(uri: str) -> None: - """Notifies clients that a resource has been updated.""" -``` - -#### send_progress_notification() -```python -async def send_progress_notification( - token: str, - progress: int, - total: Optional[int] = None -) -> None: - """Sends progress updates for long-running operations.""" -``` - -#### send_log_message() -```python -async def send_log_message( - level: str, - data: Any, - logger: Optional[str] = None -) -> None: - """Sends log messages to clients.""" -``` - -## Data classes - -### Resource -```python -@dataclass -class Resource: - uri: str - name: str - description: Optional[str] = None - mimeType: Optional[str] = None -``` - -### Tool -```python -@dataclass -class Tool: - name: str - description: str - parameters: dict -``` - -### Prompt -```python -@dataclass -class Prompt: - name: str - description: Optional[str] = None - parameters: Optional[dict] = None -``` - -### Message -```python -@dataclass -class Message: - role: Literal["user", "assistant"] - content: Union[TextContent, ImageContent] -``` - -### PromptResponse -```python -@dataclass -class PromptResponse: - messages: List[Message] - description: Optional[str] = None -``` - -## Example usage - -Here's a complete example demonstrating the main features: - -```python -from mcp_python.server import Server -import anyio - -server = Server("example-server") - -@server.list_resources() -async def list_resources(): - return [ - { - "uri": "example://resource1", - "name": "Example Resource 1", - "description": "An example resource" - } - ] - -@server.read_resource() -async def read_resource(uri): - if uri == "example://resource1": - return "Example resource content" - raise ValueError(f"Unknown resource: {uri}") - -@server.list_tools() -async def list_tools(): - return [ - { - "name": "example-tool", - "description": "An example tool", - "parameters": { - "type": "object", - "properties": { - "param1": {"type": "string"} - } - } - } - ] - -@server.call_tool() -async def call_tool(name, **kwargs): - if name == "example-tool": - return f"Tool executed with params: {kwargs}" - raise ValueError(f"Unknown tool: {name}") - -async def main(): - async with stdio_server() as (read_stream, write_stream): - await server.run( - read_stream, - write_stream, - server.create_initialization_options() - ) - -if __name__ == "__main__": - anyio.run(main) -``` - -## Best practices - -1. **Error Handling**: Always implement proper error handling in your server methods: - ```python - @server.read_resource() - async def read_resource(uri): - try: - return await fetch_resource(uri) - except ResourceNotFoundError as e: - raise ValueError(f"Resource not found: {uri}") from e - ``` - -2. **Type Hints**: Use typing hints for better code clarity: - ```python - @server.list_resources() - async def list_resources() -> List[Resource]: - resources: List[Resource] = [] - return resources - ``` - -3. **Progress Updates**: For long-running operations, send progress updates: - ```python - @server.call_tool() - async def call_tool(name: str, session: ServerSession, **kwargs): - for i in range(100): - await session.send_progress_notification( - "operation-1", - progress=i, - total=100 - ) - ``` - -4. **Resource Updates**: Notify clients when resources change: - ```python - @server.call_tool() - async def call_tool(name: str, session: ServerSession, **kwargs): - # ... perform update ... - await session.send_resource_updated("example://resource1") - ``` - -## Transport options - -### Stdio transport -```python -async with stdio_server() as (read_stream, write_stream): - await server.run(read_stream, write_stream) -``` - -### SSE transport -```python -from mcp_python.transport import SSETransport - -app = FastAPI() -transport = SSETransport() - -@app.get("/sse") -async def sse_endpoint(): - return await transport.handle_sse() - -@app.post("/message") -async def message_endpoint(request: Request): - return await transport.handle_message(request) -``` - -### WebSocket transport -```python -from mcp_python.transport import WebSocketTransport - -app = FastAPI() -transport = WebSocketTransport() - -@app.websocket("/ws") -async def websocket_endpoint(websocket: WebSocket): - await transport.handle_websocket(websocket) -``` \ No newline at end of file diff --git a/api-reference/python/type-hints.mdx b/api-reference/python/type-hints.mdx deleted file mode 100644 index edb07b5..0000000 --- a/api-reference/python/type-hints.mdx +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: "Python type hints" -description: "Python type system documentation" ---- - -## Core types - -### Resource types - -```python -from typing import TypedDict, Optional, Literal, Union, List - -class Resource(TypedDict): - """Represents a resource that can be accessed through MCP.""" - uri: str - name: str - description: Optional[str] - mimeType: Optional[str] - -class ResourceTemplate(TypedDict): - """Template for constructing resource URIs.""" - uriTemplate: str - name: str - description: Optional[str] - mimeType: Optional[str] - -class ResourceContents(TypedDict): - """Contents of a specific resource.""" - uri: str - mimeType: Optional[str] - -class TextResourceContents(ResourceContents): - """Resource contents in text format.""" - text: str - -class BlobResourceContents(ResourceContents): - """Resource contents in binary format.""" - blob: bytes # Base64 encoded -``` - -### Message types - -```python -class TextContent(TypedDict): - """Text content in a message.""" - type: Literal["text"] - text: str - -class ImageContent(TypedDict): - """Image content in a message.""" - type: Literal["image"] - data: str # Base64 encoded - mimeType: str - -MessageContent = Union[TextContent, ImageContent] - -class Message(TypedDict): - """A message in an LLM conversation.""" - role: Literal["user", "assistant"] - content: MessageContent -``` - -### Tool types - -```python -class ToolParameter(TypedDict): - """Parameter definition for a tool.""" - type: str - description: Optional[str] - required: Optional[bool] - -class ToolSchema(TypedDict): - """JSON Schema for tool parameters.""" - type: Literal["object"] - properties: dict[str, ToolParameter] - required: Optional[List[str]] - -class Tool(TypedDict): - """Definition of a tool that can be called through MCP.""" - name: str - description: str - inputSchema: ToolSchema -``` - -### Prompt types - -```python -class PromptArgument(TypedDict): - """Argument definition for a prompt template.""" - name: str - description: Optional[str] - required: Optional[bool] - -class Prompt(TypedDict): - """A prompt template that can be used through MCP.""" - name: str - description: Optional[str] - arguments: Optional[List[PromptArgument]] - -class PromptResponse(TypedDict): - """Response to a prompt request.""" - description: Optional[str] - messages: List[Message] -``` - -### Progress types - -```python -class Progress(TypedDict): - """Progress information for long-running operations.""" - progress: int - total: Optional[int] -``` - -### Logging types - -```python -LogLevel = Literal["debug", "info", "warning", "error"] - -class LogMessage(TypedDict): - """A log message sent through MCP.""" - level: LogLevel - logger: Optional[str] - data: Any # JSON-serializable value -``` - -## Request/Response types - -### Resource requests - -```python -class ListResourcesRequest(TypedDict): - """Request to list available resources.""" - cursor: Optional[str] - -class ListResourcesResponse(TypedDict): - """Response containing available resources.""" - resources: List[Resource] - nextCursor: Optional[str] - -class ReadResourceRequest(TypedDict): - """Request to read a specific resource.""" - uri: str - -class ReadResourceResponse(TypedDict): - """Response containing resource contents.""" - contents: List[Union[TextResourceContents, BlobResourceContents]] - -class SubscribeRequest(TypedDict): - """Request to subscribe to resource updates.""" - uri: str - -class UnsubscribeRequest(TypedDict): - """Request to unsubscribe from resource updates.""" - uri: str -``` - -### Tool requests - -```python -class ListToolsRequest(TypedDict): - """Request to list available tools.""" - cursor: Optional[str] - -class ListToolsResponse(TypedDict): - """Response containing available tools.""" - tools: List[Tool] - nextCursor: Optional[str] - -class CallToolRequest(TypedDict): - """Request to call a specific tool.""" - name: str - arguments: Optional[dict] - -class CallToolResponse(TypedDict): - """Response from a tool call.""" - toolResult: Any # JSON-serializable value -``` - -### Prompt requests - -```python -class ListPromptsRequest(TypedDict): - """Request to list available prompts.""" - cursor: Optional[str] - -class ListPromptsResponse(TypedDict): - """Response containing available prompts.""" - prompts: List[Prompt] - nextCursor: Optional[str] - -class GetPromptRequest(TypedDict): - """Request to get a specific prompt.""" - name: str - arguments: Optional[dict[str, str]] -``` - -## Protocol types - -### Implementation Info - -```python -class Implementation(TypedDict): - """Information about an MCP implementation.""" - name: str - version: str -``` - -### Capabilities - -```python -class ResourceCapabilities(TypedDict): - """Capabilities related to resources.""" - subscribe: Optional[bool] - listChanged: Optional[bool] - -class PromptCapabilities(TypedDict): - """Capabilities related to prompts.""" - listChanged: Optional[bool] - -class ToolCapabilities(TypedDict): - """Capabilities related to tools.""" - listChanged: Optional[bool] - -class ServerCapabilities(TypedDict): - """Complete set of server capabilities.""" - experimental: Optional[dict] - logging: Optional[dict] - prompts: Optional[PromptCapabilities] - resources: Optional[ResourceCapabilities] - tools: Optional[ToolCapabilities] -``` - -## Transport types - -### Stream types - -```python -class ReadStream(Protocol): - """Protocol for reading from a transport.""" - async def read(self) -> bytes: ... - -class WriteStream(Protocol): - """Protocol for writing to a transport.""" - async def write(self, data: bytes) -> None: ... -``` - -### Session types - -```python -class ServerSession(Protocol): - """Protocol for server-side session operations.""" - async def send_resource_updated(self, uri: str) -> None: ... - async def send_progress_notification( - self, token: str, progress: int, total: Optional[int] = None - ) -> None: ... - async def send_log_message( - self, level: LogLevel, data: Any, logger: Optional[str] = None - ) -> None: ... -``` - -## Usage examples - -### Type usage in handlers - -```python -from mcp_python.server import Server -from mcp_python.types import Resource, Tool, PromptResponse, Message - -server = Server("example") - -@server.list_resources() -async def list_resources() -> List[Resource]: - return [ - { - "uri": "example://test", - "name": "Test Resource", - "description": "A test resource", - "mimeType": "text/plain" - } - ] - -@server.list_tools() -async def list_tools() -> List[Tool]: - return [ - { - "name": "test-tool", - "description": "A test tool", - "inputSchema": { - "type": "object", - "properties": { - "param": { - "type": "string", - "description": "A parameter" - } - } - } - } - ] - -@server.get_prompt() -async def get_prompt(name: str, arguments: dict) -> PromptResponse: - return { - "description": "A test prompt", - "messages": [ - { - "role": "user", - "content": { - "type": "text", - "text": f"Test prompt with args: {arguments}" - } - } - ] - } -``` - -### Type checking - -```python -from typing import TypeGuard - -def is_text_content(content: MessageContent) -> TypeGuard[TextContent]: - """Type guard for text content.""" - return content["type"] == "text" - -def process_message(message: Message) -> str: - content = message["content"] - if is_text_content(content): - return content["text"] - return f"Image message with type: {content['mimeType']}" -``` - -## Additional notes - -- All types are compatible with standard Python type checkers (mypy, pyright) -- TypedDict is used extensively to ensure proper structure of JSON-like objects -- Literal types are used to restrict string values to specific options -- Optional fields use the Optional type hint to indicate nullable values -- Protocol classes define interface contracts for pluggable components - -For runtime type checking, you can use the following pattern: - -```python -from typing import cast -from typing_extensions import assert_type - -def validate_resource(data: dict) -> Resource: - """Validate and convert a dict to a Resource type.""" - required_fields = {"uri", "name"} - if not all(field in data for field in required_fields): - raise ValueError("Missing required fields") - - return cast(Resource, { - "uri": str(data["uri"]), - "name": str(data["name"]), - "description": str(data.get("description")) if "description" in data else None, - "mimeType": str(data.get("mimeType")) if "mimeType" in data else None - }) -``` \ No newline at end of file diff --git a/api-reference/server-api/event-handling.mdx b/api-reference/server-api/event-handling.mdx deleted file mode 100644 index f870ebe..0000000 --- a/api-reference/server-api/event-handling.mdx +++ /dev/null @@ -1,330 +0,0 @@ ---- -title: "Event handling" -description: "Handle events and manage state in your MCP server" ---- - -MCP servers process various events including requests, notifications, and connection lifecycle events. This guide explains how to implement event handlers effectively in your server. - -## Request handling - -Request handlers process incoming requests from clients and must return a response. Each handler is associated with a specific method name. - - -```typescript server.ts -import { Server } from "@modelcontextprotocol/sdk/server"; -import { ListToolsRequestSchema, ListToolsResultSchema } from "@modelcontextprotocol/sdk/types"; - -const server = new Server({ - name: "example-server", - version: "1.0.0", -}); - -server.setRequestHandler(ListToolsRequestSchema, async (request) => { - return { - tools: [ - { - name: "example-tool", - description: "An example tool", - inputSchema: { - type: "object", - properties: { - message: { type: "string" }, - }, - }, - }, - ], - }; -}); -``` - -```python server.py -from mcp import Server -from mcp.types import ListToolsRequest, ListToolsResult, Tool - -server = Server(name="example-server", version="1.0.0") - -@server.request_handler("tools/list") -async def handle_list_tools(request: ListToolsRequest) -> ListToolsResult: - return ListToolsResult( - tools=[ - Tool( - name="example-tool", - description="An example tool", - input_schema={ - "type": "object", - "properties": { - "message": {"type": "string"} - } - } - ) - ] - ) -``` - - -## Notification handling - -Notification handlers process one-way messages that don't require responses. They're useful for handling events like resource updates or logging messages. - - -```typescript notifications.ts -import { ResourceUpdatedNotificationSchema } from "@modelcontextprotocol/sdk/types"; - -server.setNotificationHandler(ResourceUpdatedNotificationSchema, async (notification) => { - const { uri } = notification.params; - console.log(`Resource updated: ${uri}`); -}); -``` - -```python notifications.py -from mcp.types import ResourceUpdatedNotification - -@server.notification_handler("notifications/resources/updated") -async def handle_resource_updated(notification: ResourceUpdatedNotification): - uri = notification.params.uri - print(f"Resource updated: {uri}") -``` - - -## Connection lifecycle - -Your server can handle connection lifecycle events through callbacks. This is useful for setup and cleanup operations. - - -```typescript lifecycle.ts -const server = new Server({ - name: "example-server", - version: "1.0.0", -}); - -server.oninitialized = () => { - console.log("Client has completed initialization"); -}; - -server.onclose = () => { - console.log("Connection closed"); - // Perform cleanup -}; -``` - -```python lifecycle.py -server = Server(name="example-server", version="1.0.0") - -@server.on_initialized -async def handle_initialized(): - print("Client has completed initialization") - -@server.on_close -async def handle_close(): - print("Connection closed") - # Perform cleanup -``` - - -## Error handling - -Properly handle errors in your event handlers to provide meaningful feedback to clients. - - -```typescript errors.ts -import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types"; - -server.setRequestHandler(CallToolRequestSchema, async (request) => { - try { - // Attempt to call tool - const result = await callTool(request.params); - return { toolResult: result }; - } catch (error) { - throw new McpError( - ErrorCode.InvalidParams, - "Failed to execute tool", - { details: error.message } - ); - } -}); -``` - -```python errors.py -from mcp.types import CallToolRequest, McpError, ErrorCode - -@server.request_handler("tools/call") -async def handle_call_tool(request: CallToolRequest): - try: - # Attempt to call tool - result = await call_tool(request.params) - return {"toolResult": result} - except Exception as e: - raise McpError( - code=ErrorCode.INVALID_PARAMS, - message="Failed to execute tool", - data={"details": str(e)} - ) -``` - - -## Progress reporting - -For long-running operations, you can report progress back to the client. - - -```typescript progress.ts -server.setRequestHandler(CallToolRequestSchema, async (request) => { - const progressToken = request.params._meta?.progressToken; - - if (progressToken) { - await server.notification({ - method: "notifications/progress", - params: { - progressToken, - progress: 50, - total: 100 - } - }); - } - - // Complete the operation - return { toolResult: "Operation completed" }; -}); -``` - -```python progress.py -@server.request_handler("tools/call") -async def handle_call_tool(request: CallToolRequest): - progress_token = request.params._meta.progress_token if request.params._meta else None - - if progress_token: - await server.notify( - "notifications/progress", - { - "progressToken": progress_token, - "progress": 50, - "total": 100 - } - ) - - # Complete the operation - return {"toolResult": "Operation completed"} -``` - - -## State management - -While MCP servers are generally stateless, you might need to maintain some state between requests. Here's how to manage state safely: - - -```typescript state.ts -class ExampleServer { - private subscriptions: Set = new Set(); - private server: Server; - - constructor() { - this.server = new Server({ - name: "example-server", - version: "1.0.0", - }); - - this.server.setRequestHandler(SubscribeRequestSchema, async (request) => { - const { uri } = request.params; - this.subscriptions.add(uri); - return {}; - }); - - this.server.setRequestHandler(UnsubscribeRequestSchema, async (request) => { - const { uri } = request.params; - this.subscriptions.delete(uri); - return {}; - }); - - this.server.onclose = () => { - this.subscriptions.clear(); - }; - } -} -``` - -```python state.py -class ExampleServer: - def __init__(self): - self.subscriptions = set() - self.server = Server(name="example-server", version="1.0.0") - - @self.server.request_handler("resources/subscribe") - async def handle_subscribe(request: SubscribeRequest): - self.subscriptions.add(request.params.uri) - return {} - - @self.server.request_handler("resources/unsubscribe") - async def handle_unsubscribe(request: UnsubscribeRequest): - self.subscriptions.remove(request.params.uri) - return {} - - @self.server.on_close - async def handle_close(): - self.subscriptions.clear() -``` - - -## Best practices - -When implementing event handlers in your MCP server: - - - - Always validate request parameters before processing - - - Use appropriate error codes and provide helpful error messages - - - Handle long-running operations asynchronously and report progress - - - Clean up resources and state when connections are closed - - - -## Debugging tips - -To help debug your event handlers: - -1. Enable logging in your server: - - -```typescript logging.ts -server.setRequestHandler(SetLevelRequestSchema, async (request) => { - const { level } = request.params; - - server.notification({ - method: "notifications/message", - params: { - level: "debug", - data: `Setting log level to: ${level}` - } - }); - - return {}; -}); -``` - -```python logging.py -@server.request_handler("logging/setLevel") -async def handle_set_level(request: SetLevelRequest): - level = request.params.level - - await server.notify( - "notifications/message", - { - "level": "debug", - "data": f"Setting log level to: {level}" - } - ) - - return {} -``` - - -2. Use the progress reporting mechanism to debug long-running operations -3. Implement comprehensive error handling with detailed error messages -4. Add request/response logging for debugging complex interactions - -Remember that logging and debugging information should be appropriate for the execution environment and should never expose sensitive information. \ No newline at end of file diff --git a/api-reference/server-api/resource-management.mdx b/api-reference/server-api/resource-management.mdx deleted file mode 100644 index 1bcbf1c..0000000 --- a/api-reference/server-api/resource-management.mdx +++ /dev/null @@ -1,385 +0,0 @@ ---- -title: "Resource management" -description: "How to implement resource management in your MCP server" ---- - -Resources in MCP are any type of content that can be loaded as context for an LLM. This guide explains how to implement resource management in your MCP server. - -## Overview - -Resources are identified by URIs and can represent: -- Files on the local filesystem -- Remote data (e.g., database records, API responses) -- Generated content -- Dynamic system state - -## Basic resource implementation - -To implement resources in your MCP server, you need to handle two main requests: -- `resources/list`: Lists available resources -- `resources/read`: Reads the content of a specific resource - - - -```typescript server.ts -import { Server } from "@modelcontextprotocol/sdk/server"; -import { - ListResourcesRequestSchema, - ReadResourceRequestSchema -} from "@modelcontextprotocol/sdk/types"; - -const server = new Server({ - name: "example-server", - version: "1.0.0", -}); - -// Handle resource listing -server.setRequestHandler(ListResourcesRequestSchema, async () => { - return { - resources: [ - { - uri: "file:///example.txt", - name: "Example File", - mimeType: "text/plain", - description: "An example text file resource" - } - ] - }; -}); - -// Handle resource reading -server.setRequestHandler(ReadResourceRequestSchema, async (request) => { - const uri = request.params.uri; - - // Read and return the resource content - return { - contents: [ - { - uri: uri, - mimeType: "text/plain", - text: "Example content" - } - ] - }; -}); -``` - -```python server.py -from mcp import Server -from mcp.types import Resource, ResourceContents - -server = Server( - name="example-server", - version="1.0.0" -) - -# Handle resource listing -@server.request_handler("resources/list") -async def list_resources(request): - return { - "resources": [ - { - "uri": "file:///example.txt", - "name": "Example File", - "mimeType": "text/plain", - "description": "An example text file resource" - } - ] - } - -# Handle resource reading -@server.request_handler("resources/read") -async def read_resource(request): - uri = request.params["uri"] - - # Read and return the resource content - return { - "contents": [ - { - "uri": uri, - "mimeType": "text/plain", - "text": "Example content" - } - ] - } -``` - - - -## Resource content types - -MCP supports two types of resource contents: -- Text content: For plain text and other text-based formats -- Binary content: For images and other binary data (encoded as base64) - - - -```typescript content-types.ts -// Text content example -const textContent = { - uri: "file:///document.txt", - mimeType: "text/plain", - text: "This is the text content" -}; - -// Binary content example -const binaryContent = { - uri: "file:///image.png", - mimeType: "image/png", - blob: Buffer.from("...").toString("base64") -}; - -server.setRequestHandler(ReadResourceRequestSchema, async (request) => { - return { - contents: [ - // Return either text or binary content based on the resource - request.params.uri.endsWith(".txt") ? textContent : binaryContent - ] - }; -}); -``` - -```python content-types.py -import base64 - -# Text content example -text_content = { - "uri": "file:///document.txt", - "mimeType": "text/plain", - "text": "This is the text content" -} - -# Binary content example -binary_content = { - "uri": "file:///image.png", - "mimeType": "image/png", - "blob": base64.b64encode(b"...").decode() -} - -@server.request_handler("resources/read") -async def read_resource(request): - return { - "contents": [ - # Return either text or binary content based on the resource - text_content if request.params["uri"].endswith(".txt") else binary_content - ] - } -``` - - - -## Resource templates - -Resource templates allow servers to define patterns for dynamic resources using URI templates (RFC 6570). - - - -```typescript templates.ts -server.setRequestHandler(ListResourcesRequestSchema, async () => { - return { - resources: [ - // Static resources - { - uri: "file:///static.txt", - name: "Static File" - } - ], - resourceTemplates: [ - // Dynamic resources - { - uriTemplate: "user://{userId}/profile", - name: "User Profile", - description: "Access user profile data", - mimeType: "application/json" - } - ] - }; -}); -``` - -```python templates.py -@server.request_handler("resources/list") -async def list_resources(request): - return { - "resources": [ - # Static resources - { - "uri": "file:///static.txt", - "name": "Static File" - } - ], - "resourceTemplates": [ - # Dynamic resources - { - "uriTemplate": "user://{userId}/profile", - "name": "User Profile", - "description": "Access user profile data", - "mimeType": "application/json" - } - ] - } -``` - - - -## Resource updates - -MCP supports notifying clients about resource changes through subscriptions and notifications. - - - -```typescript updates.ts -import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types"; - -// Track subscribed resources -const subscriptions = new Set(); - -// Handle subscription requests -server.setRequestHandler(SubscribeRequestSchema, async (request) => { - const uri = request.params.uri; - subscriptions.add(uri); - return {}; -}); - -// Handle unsubscribe requests -server.setRequestHandler(UnsubscribeRequestSchema, async (request) => { - const uri = request.params.uri; - subscriptions.delete(uri); - return {}; -}); - -// Notify about resource updates -function notifyResourceUpdate(uri: string) { - if (subscriptions.has(uri)) { - server.notification({ - method: "notifications/resources/updated", - params: { uri } - }); - } -} -``` - -```python updates.py -# Track subscribed resources -subscriptions = set() - -# Handle subscription requests -@server.request_handler("resources/subscribe") -async def subscribe(request): - uri = request.params["uri"] - subscriptions.add(uri) - return {} - -# Handle unsubscribe requests -@server.request_handler("resources/unsubscribe") -async def unsubscribe(request): - uri = request.params["uri"] - subscriptions.remove(uri) - return {} - -# Notify about resource updates -async def notify_resource_update(uri: str): - if uri in subscriptions: - await server.notification( - method="notifications/resources/updated", - params={"uri": uri} - ) -``` - - - -## Pagination - -For servers with many resources, MCP supports pagination using cursors. - - - -```typescript pagination.ts -const PAGE_SIZE = 10; - -server.setRequestHandler(ListResourcesRequestSchema, async (request) => { - const cursor = request.params?.cursor; - let startIndex = 0; - - if (cursor) { - startIndex = parseInt(Buffer.from(cursor, 'base64').toString()); - } - - const resources = getAllResources(); - const pageResources = resources.slice(startIndex, startIndex + PAGE_SIZE); - - // Calculate next cursor if there are more resources - const nextCursor = startIndex + PAGE_SIZE < resources.length - ? Buffer.from(String(startIndex + PAGE_SIZE)).toString('base64') - : undefined; - - return { - resources: pageResources, - nextCursor - }; -}); -``` - -```python pagination.py -PAGE_SIZE = 10 - -@server.request_handler("resources/list") -async def list_resources(request): - cursor = request.params.get("cursor") - start_index = 0 - - if cursor: - start_index = int(base64.b64decode(cursor)) - - resources = get_all_resources() - page_resources = resources[start_index:start_index + PAGE_SIZE] - - # Calculate next cursor if there are more resources - next_cursor = (base64.b64encode(str(start_index + PAGE_SIZE).encode()).decode() - if start_index + PAGE_SIZE < len(resources) else None) - - return { - "resources": page_resources, - "nextCursor": next_cursor - } -``` - - - -## Best practices - -When implementing resource management: - - - - Use meaningful URI schemes and hierarchical paths for resource organization - - - Return appropriate error codes for missing or inaccessible resources - - - Always specify accurate MIME types for resource contents - - - Implement proper cleanup for subscriptions when connections close - - - -## Resource security - -When exposing resources: - -- Validate all URI parameters and resource paths -- Implement appropriate access controls -- Sanitize and validate all resource content -- Consider rate limiting for resource-intensive operations -- Use secure transport mechanisms (e.g., HTTPS) for remote resources - -## Common pitfalls - -- Failing to handle URI encoding/decoding properly -- Not cleaning up subscriptions when connections close -- Returning inconsistent MIME types -- Missing error handling for invalid resource requests -- Not implementing pagination for large resource collections -- Memory leaks from unmanaged resource subscriptions \ No newline at end of file diff --git a/api-reference/server-api/tool-implementation.mdx b/api-reference/server-api/tool-implementation.mdx deleted file mode 100644 index b98b3c2..0000000 --- a/api-reference/server-api/tool-implementation.mdx +++ /dev/null @@ -1,462 +0,0 @@ ---- -title: "Tool implementation" -description: "Learn how to implement tools in your MCP server" ---- - -Tools are one of the core features of MCP, allowing servers to expose functionality that can be invoked by clients or AI models. This guide explains how to implement tools in your MCP server. - -## Tool definition - -Tools are defined by implementing the `Tool` interface, which describes the tool's name, description, and input schema. - - -```typescript Tool interface in TypeScript -interface Tool { - // The name of the tool - name: string; - - // A human-readable description - description?: string; - - // JSON Schema defining the expected parameters - inputSchema: { - type: "object"; - properties?: Record; - }; -} -``` - -```python Tool interface in Python -@dataclass -class Tool: - # The name of the tool - name: str - - # A human-readable description - description: Optional[str] = None - - # JSON Schema defining the expected parameters - input_schema: Dict[str, Any] = field(default_factory=lambda: { - "type": "object", - "properties": {} - }) -``` - - -## Basic implementation - -Here's a simple example of implementing a tool that adds two numbers: - - -```typescript calculator.ts -import { Server } from "@modelcontextprotocol/sdk/server"; -import { ListToolsRequestSchema, CallToolRequestSchema } from "@modelcontextprotocol/sdk/types"; - -const server = new Server({ - name: "calculator-server", - version: "1.0.0", -}); - -// Define and register available tools -server.setRequestHandler(ListToolsRequestSchema, async () => { - return { - tools: [ - { - name: "add", - description: "Add two numbers together", - inputSchema: { - type: "object", - properties: { - a: { type: "number", description: "First number" }, - b: { type: "number", description: "Second number" } - }, - required: ["a", "b"] - } - } - ] - }; -}); - -// Implement tool execution -server.setRequestHandler(CallToolRequestSchema, async (request) => { - if (request.params.name === "add") { - const a = request.params.arguments?.a as number; - const b = request.params.arguments?.b as number; - - return { - toolResult: a + b - }; - } - - throw new Error("Tool not found"); -}); -``` - -```python calculator.py -from dataclasses import dataclass -from typing import Dict, Any -from mcp_sdk import Server, Tool - -server = Server( - name="calculator-server", - version="1.0.0" -) - -# Define the tool -add_tool = Tool( - name="add", - description="Add two numbers together", - input_schema={ - "type": "object", - "properties": { - "a": {"type": "number", "description": "First number"}, - "b": {"type": "number", "description": "Second number"} - }, - "required": ["a", "b"] - } -) - -@server.handle_list_tools -async def handle_list_tools(request): - return { - "tools": [add_tool] - } - -@server.handle_call_tool -async def handle_call_tool(request): - if request.params.name == "add": - a = request.params.arguments["a"] - b = request.params.arguments["b"] - return { - "toolResult": a + b - } - - raise ValueError("Tool not found") -``` - - -## Progress reporting - -For long-running operations, tools can report progress back to the client: - - -```typescript long-operation.ts -server.setRequestHandler(ListToolsRequestSchema, async () => { - return { - tools: [ - { - name: "longOperation", - description: "A time-consuming operation with progress updates", - inputSchema: { - type: "object", - properties: { - duration: { - type: "number", - description: "Duration in seconds" - } - } - } - } - ] - }; -}); - -server.setRequestHandler(CallToolRequestSchema, async (request) => { - if (request.params.name === "longOperation") { - const duration = request.params.arguments?.duration as number ?? 10; - const steps = 10; - const stepDuration = duration / steps; - const progressToken = request.params._meta?.progressToken; - - for (let i = 1; i <= steps; i++) { - await new Promise(resolve => setTimeout(resolve, stepDuration * 1000)); - - if (progressToken) { - server.notification({ - method: "notifications/progress", - params: { - progress: i, - total: steps, - progressToken - } - }); - } - } - - return { toolResult: "Operation completed" }; - } - - throw new Error("Tool not found"); -}); -``` - -```python long_operation.py -import asyncio -from mcp_sdk import Server, Tool - -long_operation_tool = Tool( - name="longOperation", - description="A time-consuming operation with progress updates", - input_schema={ - "type": "object", - "properties": { - "duration": { - "type": "number", - "description": "Duration in seconds" - } - } - } -) - -@server.handle_list_tools -async def handle_list_tools(request): - return { - "tools": [long_operation_tool] - } - -@server.handle_call_tool -async def handle_call_tool(request): - if request.params.name == "longOperation": - duration = request.params.arguments.get("duration", 10) - steps = 10 - step_duration = duration / steps - progress_token = request.params._meta.get("progressToken") - - for i in range(1, steps + 1): - await asyncio.sleep(step_duration) - - if progress_token: - await server.notification({ - "method": "notifications/progress", - "params": { - "progress": i, - "total": steps, - "progressToken": progress_token - } - }) - - return {"toolResult": "Operation completed"} - - raise ValueError("Tool not found") -``` - - -## Error handling - -Tools should handle errors gracefully and return appropriate error information: - - -```typescript error-handling.ts -server.setRequestHandler(CallToolRequestSchema, async (request) => { - if (request.params.name === "riskyOperation") { - try { - // Attempt the operation - const result = await performRiskyOperation(request.params.arguments); - return { toolResult: result }; - } catch (error) { - if (error instanceof ValidationError) { - throw new McpError( - ErrorCode.InvalidParams, - "Invalid parameters provided", - error.details - ); - } - - if (error instanceof OperationError) { - throw new McpError( - ErrorCode.InternalError, - "Operation failed", - { - reason: error.message, - retryable: error.isRetryable - } - ); - } - - throw error; - } - } -}); -``` - -```python error_handling.py -from mcp_sdk import McpError, ErrorCode - -@server.handle_call_tool -async def handle_call_tool(request): - if request.params.name == "riskyOperation": - try: - # Attempt the operation - result = await perform_risky_operation(request.params.arguments) - return {"toolResult": result} - except ValidationError as e: - raise McpError( - code=ErrorCode.INVALID_PARAMS, - message="Invalid parameters provided", - data=e.details - ) - except OperationError as e: - raise McpError( - code=ErrorCode.INTERNAL_ERROR, - message="Operation failed", - data={ - "reason": str(e), - "retryable": e.is_retryable - } - ) -``` - - -## Best practices - -When implementing tools, follow these guidelines: - - - - Provide detailed descriptions that help AI models understand when and how to use the tool - - - Use JSON Schema to define and validate input parameters thoroughly - - - Send regular progress updates for operations that take more than a few seconds - - - Return specific error codes and helpful error messages - - - -### Tool naming conventions - -- Use camelCase for tool names in TypeScript/JavaScript -- Use snake_case for tool names in Python -- Keep names concise but descriptive -- Use verbs for action-oriented tools (e.g., `convertCurrency`, `fetchWeather`) -- Use nouns for data-oriented tools (e.g., `userProfile`, `systemStatus`) - -### Input schema best practices - -- Be explicit about required vs optional parameters -- Include descriptions for all parameters -- Use appropriate JSON Schema types and formats -- Consider adding validation constraints (min, max, pattern, etc.) - -Example of a well-defined input schema: - - -```typescript schema-example.ts -const toolSchema = { - type: "object", - properties: { - query: { - type: "string", - description: "Search query string", - minLength: 1, - maxLength: 100 - }, - limit: { - type: "integer", - description: "Maximum number of results", - minimum: 1, - maximum: 100, - default: 10 - }, - includeArchived: { - type: "boolean", - description: "Include archived items in results", - default: false - } - }, - required: ["query"] -}; -``` - -```python schema_example.py -tool_schema = { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "Search query string", - "minLength": 1, - "maxLength": 100 - }, - "limit": { - "type": "integer", - "description": "Maximum number of results", - "minimum": 1, - "maximum": 100, - "default": 10 - }, - "include_archived": { - "type": "boolean", - "description": "Include archived items in results", - "default": False - } - }, - "required": ["query"] -} -``` - - -## Testing tools - -Here's how to test your tool implementations: - - -```typescript tool-test.ts -import { TestServer } from "@modelcontextprotocol/sdk/testing"; - -describe("Calculator tools", () => { - let server: TestServer; - - beforeEach(() => { - server = new TestServer(); - // Initialize your tools - }); - - it("should add two numbers", async () => { - const response = await server.callTool("add", { - a: 5, - b: 3 - }); - - expect(response.toolResult).toBe(8); - }); - - it("should handle invalid inputs", async () => { - await expect( - server.callTool("add", { - a: "not a number", - b: 3 - }) - ).rejects.toThrow(); - }); -}); -``` - -```python tool_test.py -import pytest -from mcp_sdk.testing import TestServer - -@pytest.fixture -async def server(): - server = TestServer() - # Initialize your tools - return server - -async def test_add_numbers(server): - response = await server.call_tool("add", { - "a": 5, - "b": 3 - }) - assert response.tool_result == 8 - -async def test_invalid_input(server): - with pytest.raises(ValueError): - await server.call_tool("add", { - "a": "not a number", - "b": 3 - }) -``` - \ No newline at end of file diff --git a/api-reference/typescript/class-reference.mdx b/api-reference/typescript/class-reference.mdx deleted file mode 100644 index 3f93aad..0000000 --- a/api-reference/typescript/class-reference.mdx +++ /dev/null @@ -1,418 +0,0 @@ ---- -title: "TypeScript class reference" -description: "Complete TypeScript SDK class documentation" ---- - -## Client classes - -### Client - -The main class for implementing MCP clients in TypeScript. - -```typescript -import { Client } from "@modelcontextprotocol/sdk/client"; -``` - -#### Constructor -```typescript -constructor(clientInfo: Implementation) -``` - -**Parameters:** -- `clientInfo`: Implementation object containing: - - `name`: string - Name of the client - - `version`: string - Version of the client - -#### Methods - -##### connect() -```typescript -async connect(transport: Transport): Promise -``` -Connects to a server using the provided transport. - -##### request() -```typescript -async request( - request: ClientRequest, - resultSchema: T, - onprogress?: ProgressCallback -): Promise> -``` -Sends a request to the server and waits for a response. - -##### notification() -```typescript -async notification(notification: ClientNotification): Promise -``` -Sends a one-way notification to the server. - -##### close() -```typescript -async close(): Promise -``` -Closes the connection to the server. - -##### getServerCapabilities() -```typescript -getServerCapabilities(): ServerCapabilities | undefined -``` -Returns the server's capabilities after connection. - -##### getServerVersion() -```typescript -getServerVersion(): Implementation | undefined -``` -Returns the server's version information after connection. - -### Transport classes - -#### StdioClientTransport -```typescript -import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio"; -``` - -##### Constructor -```typescript -constructor(params: StdioServerParameters) -``` - -**Parameters:** -- `params`: Object containing: - - `command`: string - Command to execute - - `args?`: string[] - Command arguments - - `env?`: object - Environment variables - -#### SSEClientTransport -```typescript -import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse"; -``` - -##### Constructor -```typescript -constructor(url: URL) -``` - -#### WebSocketClientTransport -```typescript -import { WebSocketClientTransport } from "@modelcontextprotocol/sdk/client/websocket"; -``` - -##### Constructor -```typescript -constructor(url: URL) -``` - -## Server classes - -### Server - -The main class for implementing MCP servers in TypeScript. - -```typescript -import { Server } from "@modelcontextprotocol/sdk/server"; -``` - -#### Constructor -```typescript -constructor(serverInfo: Implementation) -``` - -**Parameters:** -- `serverInfo`: Implementation object containing: - - `name`: string - Name of the server - - `version`: string - Version of the server - -#### Methods - -##### connect() -```typescript -async connect(transport: Transport): Promise -``` -Starts listening for client connections. - -##### setRequestHandler() -```typescript -setRequestHandler}>>( - requestSchema: T, - handler: (request: z.infer) => ServerResult | Promise -): void -``` -Registers a handler for specific request types. - -##### setNotificationHandler() -```typescript -setNotificationHandler}>>( - notificationSchema: T, - handler: (notification: z.infer) => void | Promise -): void -``` -Registers a handler for specific notification types. - -##### notification() -```typescript -async notification(notification: ServerNotification): Promise -``` -Sends a notification to the client. - -##### close() -```typescript -async close(): Promise -``` -Closes all connections. - -##### getClientCapabilities() -```typescript -getClientCapabilities(): ClientCapabilities | undefined -``` -Returns the client's capabilities after connection. - -##### getClientVersion() -```typescript -getClientVersion(): Implementation | undefined -``` -Returns the client's version information after connection. - -### Transport classes - -#### StdioServerTransport -```typescript -import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio"; -``` - -##### Constructor -```typescript -constructor(stdin?: Readable, stdout?: Writable) -``` - -#### SSEServerTransport -```typescript -import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse"; -``` - -##### Constructor -```typescript -constructor(endpoint: string, res: ServerResponse) -``` - -## Examples - -### Client implementation - -```typescript -import { Client } from "@modelcontextprotocol/sdk/client"; -import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio"; -import { - ListResourcesResultSchema, - ReadResourceResultSchema, - ListToolsResultSchema, - CallToolResultSchema -} from "@modelcontextprotocol/sdk/types"; - -async function main() { - // Create client - const client = new Client({ - name: "example-client", - version: "1.0.0" - }); - - // Connect to server - const transport = new StdioClientTransport({ - command: "./server", - args: ["--config", "config.json"] - }); - await client.connect(transport); - - try { - // List resources - const resources = await client.request( - { method: "resources/list" }, - ListResourcesResultSchema - ); - console.log("Available resources:", resources); - - // Read resource - const content = await client.request( - { - method: "resources/read", - params: { uri: "example://resource" } - }, - ReadResourceResultSchema - ); - console.log("Resource content:", content); - - // List tools - const tools = await client.request( - { method: "tools/list" }, - ListToolsResultSchema - ); - console.log("Available tools:", tools); - - // Call tool with progress - const result = await client.request( - { - method: "tools/call", - params: { - name: "example-tool", - arguments: { param1: "value1" } - } - }, - CallToolResultSchema, - (progress) => { - console.log(`Progress: ${progress.progress}/${progress.total}`); - } - ); - console.log("Tool result:", result); - } finally { - await client.close(); - } -} -``` - -### Server implementation - -```typescript -import { Server } from "@modelcontextprotocol/sdk/server"; -import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio"; -import { - ListResourcesRequestSchema, - ReadResourceRequestSchema, - ListToolsRequestSchema, - CallToolRequestSchema -} from "@modelcontextprotocol/sdk/types"; - -async function main() { - // Create server - const server = new Server({ - name: "example-server", - version: "1.0.0" - }); - - // Handle resource listing - server.setRequestHandler(ListResourcesRequestSchema, async () => { - return { - resources: [ - { - uri: "example://resource", - name: "Example Resource", - description: "An example resource" - } - ] - }; - }); - - // Handle resource reading - server.setRequestHandler(ReadResourceRequestSchema, async (request) => { - if (request.params.uri === "example://resource") { - return { - contents: [ - { - uri: request.params.uri, - mimeType: "text/plain", - text: "Example content" - } - ] - }; - } - throw new Error("Resource not found"); - }); - - // Handle tool listing - server.setRequestHandler(ListToolsRequestSchema, async () => { - return { - tools: [ - { - name: "example-tool", - description: "An example tool", - inputSchema: { - type: "object", - properties: { - param1: { type: "string" } - } - } - } - ] - }; - }); - - // Handle tool calls - server.setRequestHandler(CallToolRequestSchema, async (request) => { - const { name, arguments: args } = request.params; - - // Send progress updates - for (let i = 0; i < 5; i++) { - await server.notification({ - method: "notifications/progress", - params: { - progress: i + 1, - total: 5, - progressToken: request.params._meta?.progressToken - } - }); - await new Promise(resolve => setTimeout(resolve, 1000)); - } - - return { - toolResult: `Executed ${name} with args: ${JSON.stringify(args)}` - }; - }); - - // Start server - const transport = new StdioServerTransport(); - await server.connect(transport); -} -``` - -## Best practices - -1. **Error Handling** -```typescript -server.setRequestHandler(ReadResourceRequestSchema, async (request) => { - try { - const content = await readResource(request.params.uri); - return { contents: [content] }; - } catch (error) { - if (error instanceof ResourceNotFoundError) { - throw new McpError(404, `Resource not found: ${request.params.uri}`); - } - throw error; - } -}); -``` - -2. **Progress Updates** -```typescript -async function longRunningOperation( - progressToken?: string | number -): Promise { - for (let i = 0; i < total; i++) { - await server.notification({ - method: "notifications/progress", - params: { - progress: i, - total, - progressToken - } - }); - } -} -``` - -3. **Resource Updates** -```typescript -async function updateResource(uri: string): Promise { - // Update resource - await server.notification({ - method: "notifications/resources/updated", - params: { uri } - }); -} -``` - -4. **Cleanup** -```typescript -process.on("SIGINT", async () => { - await server.close(); - process.exit(0); -}); -``` \ No newline at end of file diff --git a/api-reference/typescript/type-definitions.mdx b/api-reference/typescript/type-definitions.mdx deleted file mode 100644 index f028fd3..0000000 --- a/api-reference/typescript/type-definitions.mdx +++ /dev/null @@ -1,461 +0,0 @@ ---- -title: "TypeScript type definitions" -description: "TypeScript type system documentation" ---- - -## Core protocol types - -### JSON-RPC types - -```typescript -export const JSONRPC_VERSION = "2.0"; - -/** A uniquely identifying ID for a request in JSON-RPC */ -export type RequestId = string | number; - -/** A request that expects a response */ -export interface JSONRPCRequest { - jsonrpc: typeof JSONRPC_VERSION; - id: RequestId; - method: string; - params?: Record; -} - -/** A notification which does not expect a response */ -export interface JSONRPCNotification { - jsonrpc: typeof JSONRPC_VERSION; - method: string; - params?: Record; -} - -/** A successful (non-error) response to a request */ -export interface JSONRPCResponse { - jsonrpc: typeof JSONRPC_VERSION; - id: RequestId; - result: unknown; -} - -/** A response to a request that indicates an error occurred */ -export interface JSONRPCError { - jsonrpc: typeof JSONRPC_VERSION; - id: RequestId; - error: { - code: number; - message: string; - data?: unknown; - }; -} - -export type JSONRPCMessage = - | JSONRPCRequest - | JSONRPCNotification - | JSONRPCResponse - | JSONRPCError; -``` - -### Message content types - -```typescript -/** Text provided to or from an LLM */ -export interface TextContent { - type: "text"; - text: string; -} - -/** An image provided to or from an LLM */ -export interface ImageContent { - type: "image"; - data: string; // Base64-encoded - mimeType: string; -} - -/** Describes a message issued to or received from an LLM API */ -export interface SamplingMessage { - role: "user" | "assistant"; - content: TextContent | ImageContent; -} - -/** Progress information for long-running operations */ -export interface Progress { - progress: number; - total?: number; -} - -export type ProgressCallback = (progress: Progress) => void; -``` - -### Resource types - -```typescript -/** The contents of a specific resource */ -export interface ResourceContents { - uri: string; - mimeType?: string; -} - -/** Text-based resource contents */ -export interface TextResourceContents extends ResourceContents { - text: string; -} - -/** Binary resource contents */ -export interface BlobResourceContents extends ResourceContents { - blob: string; // Base64-encoded -} - -/** A known resource that the server is capable of reading */ -export interface Resource { - uri: string; - name: string; - description?: string; - mimeType?: string; -} - -/** A template description for resources available on the server */ -export interface ResourceTemplate { - uriTemplate: string; - name: string; - description?: string; - mimeType?: string; -} -``` - -### Tool types - -```typescript -/** Definition for a tool the client can call */ -export interface Tool { - name: string; - description?: string; - inputSchema: { - type: "object"; - properties?: Record; - }; -} -``` - -### Prompt types - -```typescript -/** Describes an argument that a prompt can accept */ -export interface PromptArgument { - name: string; - description?: string; - required?: boolean; -} - -/** A prompt or prompt template that the server offers */ -export interface Prompt { - name: string; - description?: string; - arguments?: PromptArgument[]; -} -``` - -## Request/response types - -### Resource requests - -```typescript -export interface ListResourcesRequest { - method: "resources/list"; - params?: { - cursor?: string; - }; -} - -export interface ListResourcesResult { - resources: Resource[]; - nextCursor?: string; -} - -export interface ReadResourceRequest { - method: "resources/read"; - params: { - uri: string; - }; -} - -export interface ReadResourceResult { - contents: Array; -} - -export interface SubscribeRequest { - method: "resources/subscribe"; - params: { - uri: string; - }; -} - -export interface UnsubscribeRequest { - method: "resources/unsubscribe"; - params: { - uri: string; - }; -} -``` - -### Tool requests - -```typescript -export interface ListToolsRequest { - method: "tools/list"; - params?: { - cursor?: string; - }; -} - -export interface ListToolsResult { - tools: Tool[]; - nextCursor?: string; -} - -export interface CallToolRequest { - method: "tools/call"; - params: { - name: string; - arguments?: Record; - _meta?: { - progressToken?: string | number; - }; - }; -} - -export interface CallToolResult { - toolResult: unknown; -} -``` - -### Prompt requests - -```typescript -export interface ListPromptsRequest { - method: "prompts/list"; - params?: { - cursor?: string; - }; -} - -export interface ListPromptsResult { - prompts: Prompt[]; - nextCursor?: string; -} - -export interface GetPromptRequest { - method: "prompts/get"; - params: { - name: string; - arguments?: Record; - }; -} - -export interface GetPromptResult { - description?: string; - messages: SamplingMessage[]; -} -``` - -## Protocol types - -### Implementation info - -```typescript -export interface Implementation { - name: string; - version: string; -} -``` - -### Capability types - -```typescript -export interface ResourceCapabilities { - subscribe?: boolean; - listChanged?: boolean; -} - -export interface PromptCapabilities { - listChanged?: boolean; -} - -export interface ToolCapabilities { - listChanged?: boolean; -} - -export interface ServerCapabilities { - experimental?: Record; - logging?: Record; - prompts?: PromptCapabilities; - resources?: ResourceCapabilities; - tools?: ToolCapabilities; -} - -export interface ClientCapabilities { - experimental?: Record; - sampling?: Record; -} -``` - -### Notification types - -```typescript -export interface ResourceUpdatedNotification { - method: "notifications/resources/updated"; - params: { - uri: string; - }; -} - -export interface ProgressNotification { - method: "notifications/progress"; - params: Progress & { - progressToken: string | number; - }; -} - -export interface LogMessageNotification { - method: "notifications/message"; - params: { - level: "debug" | "info" | "warning" | "error"; - logger?: string; - data: unknown; - }; -} - -export type ServerNotification = - | ResourceUpdatedNotification - | ProgressNotification - | LogMessageNotification; -``` - -## Error types - -```typescript -export enum ErrorCode { - // SDK error codes - ConnectionClosed = -1, - - // Standard JSON-RPC error codes - ParseError = -32700, - InvalidRequest = -32600, - MethodNotFound = -32601, - InvalidParams = -32602, - InternalError = -32603, -} - -export class McpError extends Error { - constructor( - public readonly code: number, - message: string, - public readonly data?: unknown - ) { - super(`MCP error ${code}: ${message}`); - } -} -``` - -## Transport types - -```typescript -export interface Transport { - start(): Promise; - send(message: JSONRPCMessage): Promise; - close(): Promise; - onclose?: () => void; - onerror?: (error: Error) => void; - onmessage?: (message: JSONRPCMessage) => void; -} - -export interface StdioServerParameters { - command: string; - args?: string[]; - env?: Record; -} -``` - -## Usage examples - -### Type guards - -```typescript -function isTextContent(content: - TextContent | ImageContent -): content is TextContent { - return content.type === "text"; -} - -function isResourceUpdatedNotification( - notification: ServerNotification -): notification is ResourceUpdatedNotification { - return notification.method === "notifications/resources/updated"; -} -``` - -### Type assertions - -```typescript -function assertResource(data: unknown): asserts data is Resource { - if (typeof data !== "object" || data === null) { - throw new TypeError("Expected object"); - } - - const resource = data as Partial; - if (typeof resource.uri !== "string") { - throw new TypeError("Expected string uri"); - } - if (typeof resource.name !== "string") { - throw new TypeError("Expected string name"); - } -} -``` - -### Using generics - -```typescript -async function handleResourceContent( - content: T -): Promise { - if ("text" in content) { - return content.text; - } - if ("blob" in content) { - return atob(content.blob); - } - throw new Error("Invalid resource content"); -} -``` - -### Working with union types - -```typescript -function processMessage(message: SamplingMessage): string { - const { content } = message; - switch (content.type) { - case "text": - return content.text; - case "image": - return `Image: ${content.mimeType}`; - default: - const _exhaustiveCheck: never = content; - throw new Error("Unknown content type"); - } -} -``` - -## Type utilities - -```typescript -/** Helper type to extract request params from method name */ -type RequestParams = Extract< - ClientRequest, - { method: T } ->["params"]; - -/** Helper type to extract result type from schema */ -type SchemaType = z.infer; - -/** Helper type for request handlers */ -type RequestHandler = ( - request: T -) => Promise>; -``` \ No newline at end of file diff --git a/docs/tools/inspector.mdx b/docs/tools/inspector.mdx index ecd2392..ace90b0 100644 --- a/docs/tools/inspector.mdx +++ b/docs/tools/inspector.mdx @@ -22,6 +22,10 @@ npx @modelcontextprotocol/inspector path/to/server.js arg1 arg2 ## Feature overview + + + + The Inspector provides several features for interacting with your MCP server: ### Server connection pane diff --git a/images/mcp-inspector.png b/images/mcp-inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..94834e8a5f3ca42ea1c9c5ac87c77bbac5a09072 GIT binary patch literal 300631 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

#%7 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–c=jP6SXwyZCiFr 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 ImkyW&@0@ya+&IPb!Ji|0J*f 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 U`9Q}t3G}neY>(;P9UjsD2FPISIRF3v literal 0 HcmV?d00001 diff --git a/mint.json b/mint.json index fb4384b..7e12e6a 100644 --- a/mint.json +++ b/mint.json @@ -17,12 +17,6 @@ "name": "GitHub", "url": "https://github.com/modelcontextprotocol" }, - "tabs": [ - { - "name": "API Reference", - "url": "api-reference" - } - ], "anchors": [ { "name": "Python SDK", @@ -43,24 +37,15 @@ "navigation": [ { "group": "Get Started", - "pages": [ - "introduction", - "quickstart" - ] + "pages": ["introduction", "quickstart"] }, { "group": "Your First MCP Server", - "pages": [ - "docs/first-server/python", - "docs/first-server/typescript" - ] + "pages": ["docs/first-server/python", "docs/first-server/typescript"] }, { "group": "Development Tools", - "pages": [ - "docs/tools/debugging", - "docs/tools/inspector" - ] + "pages": ["docs/tools/debugging", "docs/tools/inspector"] }, { "group": "Concepts", @@ -72,44 +57,6 @@ "docs/concepts/sampling", "docs/concepts/transports" ] - }, - { - "group": "API Reference", - "pages": [ - "api-reference/protocol-overview", - "api-reference/message-types", - "api-reference/error-handling" - ] - }, - { - "group": "Server APIs", - "pages": [ - "api-reference/server-api/resource-management", - "api-reference/server-api/tool-implementation", - "api-reference/server-api/event-handling" - ] - }, - { - "group": "Client APIs", - "pages": [ - "api-reference/client-api/connection-management", - "api-reference/client-api/resource-consumption", - "api-reference/client-api/tool-invocation" - ] - }, - { - "group": "Python SDK", - "pages": [ - "api-reference/python/class-reference", - "api-reference/python/type-hints" - ] - }, - { - "group": "TypeScript SDK", - "pages": [ - "api-reference/typescript/class-reference", - "api-reference/typescript/type-definitions" - ] } ], "footerSocials": { diff --git a/style.css b/style.css deleted file mode 100644 index cb4b40c..0000000 --- a/style.css +++ /dev/null @@ -1,15 +0,0 @@ -.stroke-path { - stroke: black; - stroke-width: 12; - stroke-linecap: round; -} - -@media (prefers-color-scheme: dark) { - .stroke-path { - stroke: white; - } - - #clip0_19_13 rect { - fill: transparent; - } -} \ No newline at end of file