Home Glossary
HomeGlossaryMCP SDK
MCP Glossary

MCP SDK

TL;DR

An MCP SDK is a language-specific library that implements the Model Context Protocol so you can build servers and clients without writing JSON-RPC by hand. Official SDKs exist for TypeScript, Python, Kotlin, Rust, C#, and Swift; community SDKs cover Go, Ruby, Java, and more.

In depth

MCP SDKs hide the wire-level details of the protocol and give you ergonomic APIs for the things that matter: registering tools, handling requests, managing transport. Without an SDK, you'd write boilerplate JSON-RPC codecs and lifecycle management. With one, you register a tool in a dozen lines.

The official SDKs are maintained at `github.com/modelcontextprotocol`. Each language has both a server SDK (for building MCP servers) and a client SDK (for embedding MCP clients in your app). They share a common spec so servers and clients across languages are fully interoperable.

TypeScript is the most mature (`@modelcontextprotocol/sdk`), thanks to Anthropic's heavy use in Claude Desktop. Python (`mcp`) is equally well-supported. Rust, Kotlin, C#, and Swift cover the rest of the major language ecosystems.

Community SDKs fill the gaps for Go, Java, Ruby, PHP, and more. All official SDKs are MIT licensed.

Code example

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

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

server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{ name: "hello", description: "Say hi", inputSchema: {...} }]
}));

await server.connect(new StdioServerTransport());

// Python server SDK
from mcp.server import Server
from mcp.server.stdio import stdio_server

server = Server("my-server")

@server.list_tools()
async def list_tools():
    return [Tool(name="hello", description="Say hi", inputSchema={...})]

async with stdio_server() as (read, write):
    await server.run(read, write, init_options)

Examples

  • 1
    `@modelcontextprotocol/sdk` — TypeScript (official)
  • 2
    `mcp` — Python (official, on PyPI)
  • 3
    `modelcontextprotocol-kotlin-sdk` — Kotlin (official)
  • 4
    `rmcp` — Rust (official)
  • 5
    `ModelContextProtocol.Server` — C# (official)

What it's NOT

  • ✗You do NOT need an SDK to build an MCP server — JSON-RPC can be hand-rolled, but it's tedious.
  • ✗SDKs do NOT lock you into a language — MCP is wire-compatible across all SDK languages.
  • ✗Official SDKs are NOT all equally mature — TypeScript and Python lead; others are catching up.
  • ✗An SDK is NOT an MCP server — it's a library for building servers and clients.

Related terms

Model Context Protocol (MCP)MCP ServerMCP ClientJSON-RPC 2.0

See also

  • MCP SDK Repos

Frequently asked questions

Which MCP SDK should I pick?

TypeScript or Python — they're the most mature and widely used. Pick based on your team's language preference.

Can I mix SDKs?

Yes — a TypeScript client can talk to a Python server (and vice versa). MCP is fully language-interoperable.

Are the SDKs free to use?

Yes, all official SDKs are MIT licensed. No per-seat or usage fees.

Build with MCP

Browse 300+ MCP servers, explore recipes, or continue learning the MCP vocabulary.

Browse MarketplaceAll terms