Mirror of https://github.com/modelcontextprotocol/typescript-sdk — The official TypeScript SDK for Model Context Protocol servers and clients
  • TypeScript 97.3%
  • JavaScript 2.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Chris Dickinson d55f966562
feat(client/sse): add {EventSource,Request}Init options param
This enables users of the SSE client to optionally send cookie-based credentials
to the event source MCP server using `EventSourceInit` [1] parameters and set
the outgoing request headers for the POST call.

[1]: https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource#options
2024-12-30 23:11:00 -08:00
.github/workflows Restrict publishing to 'release' environment 2024-11-12 10:20:38 +00:00
src feat(client/sse): add {EventSource,Request}Init options param 2024-12-30 23:11:00 -08:00
.gitattributes Ignore package-lock.json in diffs 2024-10-28 10:23:57 +00:00
.gitignore Don't commit 'dist' anymore 2024-10-23 16:16:08 +01:00
.npmrc Add npmrc to always point to npm for public packages 2024-10-31 15:42:58 +00:00
CODE_OF_CONDUCT.md Add code of conduct 2024-11-18 15:37:46 +00:00
CONTRIBUTING.md Add CONTRIBUTING.md 2024-11-20 15:20:30 +00:00
eslint.config.mjs Initial import 2024-09-24 21:53:34 +01:00
jest.config.js Initial import 2024-09-24 21:53:34 +01:00
LICENSE Update LICENSE 2024-11-18 22:23:48 +00:00
package-lock.json chore: adjust node version 2024-12-17 11:31:35 +08:00
package.json Merge pull request #94 from nekomeowww/dev/exclude-tests 2024-12-17 16:50:54 +00:00
README.md Fix imports 2024-11-27 10:37:04 -06:00
SECURITY.md Update SECURITY.md 2024-11-19 16:48:27 +00:00
tsconfig.json Initial import 2024-09-24 21:53:34 +01:00
tsconfig.prod.json chore: satisfies npm-pkg-lint & publint 2024-12-15 15:16:47 +08:00

MCP TypeScript SDK NPM Version

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 and SSE
  • Handle all MCP protocol messages and lifecycle events

Installation

npm install @modelcontextprotocol/sdk

Quick Start

Creating a Client

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "path/to/server",
});

const client = new Client({
  name: "example-client",
  version: "1.0.0",
}, {
  capabilities: {}
});

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

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({
  name: "example-server",
  version: "1.0.0",
}, {
  capabilities: {
    resources: {}
  }
});

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

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 file for details.