The Model Context Protocol (MCP) lets AI assistants call tools, read resources, and use prompts from your server. Use this skill when building or maintaining MCP servers. The SDK API evolves; check Context7 (query-docs for "MCP") or the official MCP documentation for current method names and signatures.
When to Use
Use when: implementing a new MCP server, adding tools or resources, choosing stdio vs HTTP, upgrading the SDK, or debugging MCP registration and transport issues.
How It Works
Core concepts
Tools
Actions the model can invoke (e.g. search, run a command). Register with
registerTool()
or
tool()
depending on SDK version.
Resources
Read-only data the model can fetch (e.g. file contents, API responses). Register with
registerResource()
or
resource()
. Handlers typically receive a
uri
argument.
Prompts
Reusable, parameterised prompt templates the client can surface (e.g. in Claude Desktop). Register with
registerPrompt()
or equivalent.
Transport
stdio for local clients (e.g. Claude Desktop); Streamable HTTP is preferred for remote (Cursor, cloud). Legacy HTTP/SSE is for backward compatibility.
The Node/TypeScript SDK may expose
tool()
/
resource()
or
registerTool()
/
registerResource()
; the official SDK has changed over time. Always verify against the current
MCP docs
or Context7.
Connecting with stdio
For local clients, create a stdio transport and pass it to your server’s connect method. The exact API varies by SDK version (e.g. constructor vs factory). See the official MCP documentation or query Context7 for "MCP stdio server" for the current pattern.
Keep server logic (tools + resources) independent of transport so you can plug in stdio or HTTP in the entrypoint.
Remote (Streamable HTTP)
For Cursor, cloud, or other remote clients, use
Streamable HTTP
(single MCP HTTP endpoint per current spec). Support legacy HTTP/SSE only when backward compatibility is required.
Examples
Install and server setup
npm
install
@modelcontextprotocol/sdk zod
import
{
McpServer
}
from
"@modelcontextprotocol/sdk/server/mcp.js"
;
import
{
z
}
from
"zod"
;
const
server
=
new
McpServer
(
{
name
:
"my-server"
,
version
:
"1.0.0"
}
)
;
Register tools and resources using the API your SDK version provides: some versions use