Quick Start

Get started quickly with Model Context Protocols implementation

This guide provides a practical approach to implementing Model Context Protocol in your applications. Follow these steps to quickly set up a basic MCP server and client.

Installation

npm install @modelcontextprotocol/sdk

Setting Up Your First MCP Server

Create a new project

Start by setting up a new project for your MCP server.

mkdir my-mcp-server
cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk

Create your server file

Create a basic server that exposes a simple resource.

// server.ts
import { Server } from "@modelcontextprotocol/sdk/server";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio";
 
async function main() {
  // Create a new MCP server
  const server = new Server({
    name: "example-server",
    version: "1.0.0"
  }, {
    capabilities: {
      resources: {}
    }
  });
  
  // Handle resource listing requests
  server.setRequestHandler("listResources", async () => {
    return {
      resources: [
        {
          uri: "example://greeting",
          name: "Greeting"
        }
      ]
    };
  });
  
  // Handle resource retrieval requests
  server.setRequestHandler("getResource", async (request) => {
    if (request.uri === "example://greeting") {
      return {
        content: "Hello from MCP!"
      };
    }
    throw new Error(`Unknown resource: ${request.uri}`);
  });
  
  // Connect the server using stdio transport
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.log("Server started");
}
 
main().catch(console.error);

Test your server

Test your MCP server by connecting to it with a simple client.

// client.ts
import { Client } from "@modelcontextprotocol/sdk/client";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio";
import { spawn } from "child_process";
 
async function main() {
  // Start the server process
  const serverProcess = spawn("node", ["server.js"]);
  
  // Create a client transport connected to the server
  const transport = new StdioClientTransport({
    input: serverProcess.stdout,
    output: serverProcess.stdin
  });
  
  // Create and initialize the client
  const client = new Client();
  await client.connect(transport);
  
  // List available resources
  const resourceList = await client.request("listResources", {});
  console.log("Available resources:", resourceList);
  
  // Get a specific resource
  const greeting = await client.request("getResource", { uri: "example://greeting" });
  console.log("Greeting:", greeting.content);
  
  // Clean up
  await client.shutdown();
  serverProcess.kill();
}
 
main().catch(console.error);

Common Use Cases

Best Practices

When developing MCP servers, follow these best practices:

  1. Validate inputs - Always validate and sanitize inputs from clients
  2. Handle errors - Provide clear error messages and proper error codes
  3. Implement permissions - Control access to sensitive resources
  4. Version your API - Include version information in your server metadata

How is this guide?

On this page