From 65d092f17666d80426f2f08bc343ef3b3653e385 Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Mon, 11 Nov 2024 10:27:40 +0000 Subject: [PATCH] Proper README, based on the Python SDK's --- README.md | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a9371ba8..0f2d8331 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,110 @@ # mcp-typescript -TypeScript implementation of the Model Context Protocol + +TypeScript implementation of the Model Context Protocol (MCP), providing both client and server capabilities for integrating with LLM surfaces. + +## Overview + +The Model Context Protocol allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction. This TypeScript SDK implements the full MCP specification, making it easy to: + +- Build MCP clients that can connect to any MCP server +- Create MCP servers that expose resources, prompts and tools +- Use standard transports like stdio, SSE, and WebSocket +- Handle all MCP protocol messages and lifecycle events + +## Installation + +```bash +npm install @modelcontextprotocol/sdk +``` + +## Quick Start + +### Creating a Client + +```typescript +import { Client } from "@modelcontextprotocol/sdk/client"; +import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio"; + +const transport = new StdioClientTransport({ + command: "path/to/server", +}); + +const client = new Client({ + name: "example-client", + version: "1.0.0", +}); + +await client.connect(transport); + +// List available resources +const resources = await client.request( + { method: "resources/list" }, + ListResourcesResultSchema +); + +// Read a specific resource +const resourceContent = await client.request( + { + method: "resources/read", + params: { + uri: "file:///example.txt" + } + }, + ReadResourceResultSchema +); +``` + +### Creating a Server + +```typescript +import { Server } from "@modelcontextprotocol/sdk/server"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio"; + +const server = new Server({ + name: "example-server", + version: "1.0.0", +}); + +server.setRequestHandler(ListResourcesRequestSchema, async () => { + return { + resources: [ + { + uri: "file:///example.txt", + name: "Example Resource", + }, + ], + }; +}); + +server.setRequestHandler(ReadResourceRequestSchema, async (request) => { + if (request.params.uri === "file:///example.txt") { + return { + contents: [ + { + uri: "file:///example.txt", + mimeType: "text/plain", + text: "This is the content of the example resource.", + }, + ], + }; + } else { + throw new Error("Resource not found"); + } +}); + +const transport = new StdioServerTransport(); +await server.connect(transport); +``` + +## Documentation + +- [MCP Specification](https://modelcontextprotocol.github.io) +- [Example Servers](https://github.com/modelcontextprotocol/example-servers) + +## Contributing + +Issues and pull requests are welcome on GitHub at https://github.com/modelcontextprotocol/typescript-sdk. + +## License + +This project is licensed under the MIT License—see the [LICENSE](LICENSE) file for details.