·Uppdaterad 2026-07-26·12 min·MCPKatalogen.se Redaktionen

Bygg din första MCP-server

Steg-för-steg-guide: skapa en MCP-server i TypeScript, exponera verktyg och koppla den till Claude Desktop på under 15 minuter.

TutorialTypeScriptMCP

Att bygga en egen MCP-server är förvånansvärt lite kod. I den här guiden bygger vi en enkel server som exponerar två verktyg — get_time och convert_currency — och registrerar den i Claude Desktop. Hela flödet tar cirka 15 minuter.

Förberedelser

  • Node.js 20+ (kör node --version).
  • En installation av Claude Desktop (eller Cursor).
  • Grundläggande vana vid TypeScript.

Skapa projektet

mkdir mcp-min-forsta && cd mcp-min-forsta
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript tsx @types/node
npx tsc --init

Öppna tsconfig.json och sätt "module": "NodeNext", "target": "ES2022", "outDir": "dist". Skapa en src-mapp och en fil src/index.ts.

Skriv servern

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "mcp-min-forsta",
  version: "0.1.0",
});

server.tool(
  "get_time",
  "Returnerar aktuell tid i angiven tidszon.",
  { timezone: z.string().default("Europe/Stockholm") },
  async ({ timezone }) => ({
    content: [
      {
        type: "text",
        text: new Date().toLocaleString("sv-SE", { timeZone: timezone }),
      },
    ],
  }),
);

server.tool(
  "convert_currency",
  "Konverterar mellan valutor via öppna ECB-kurser.",
  { amount: z.number(), from: z.string(), to: z.string() },
  async ({ amount, from, to }) => {
    const res = await fetch(`https://api.frankfurter.app/latest?amount=${amount}&from=${from}&to=${to}`);
    const json = await res.json();
    return { content: [{ type: "text", text: JSON.stringify(json) }] };
  },
);

const transport = new StdioServerTransport();
await server.connect(transport);

Notera hur enkelt det är: varje verktyg är en anropbar funktion med ett Zod-schema. SDK:et sköter JSON-RPC, felhantering och discovery åt oss.

Kör servern lokalt

npx tsx src/index.ts

Processen väntar tyst på JSON-RPC på stdin. För att verifiera att verktygen registrerats kan du använda @modelcontextprotocol/inspector — en webbaserad debug-klient som visar tools, resources och senaste anrop.

npx @modelcontextprotocol/inspector npx tsx src/index.ts

Koppla in Claude Desktop

Öppna Claude Desktop → Settings → Developer → Edit Config. Lägg till din server:

{
  "mcpServers": {
    "min-forsta": {
      "command": "npx",
      "args": ["-y", "tsx", "/absolut/sökväg/mcp-min-forsta/src/index.ts"]
    }
  }
}

Starta om Claude Desktop. Verktygsikonen längst ner i chattfönstret ska nu visa två nya verktyg. Fråga Claude ”Vad är klockan i Tokyo?” — modellen anropar get_time automatiskt.

Lägg till resources och prompts

Verktyg är bara en tredjedel av MCP. Utöka servern med server.resource() för läsbara data och server.prompt() för färdiga prompt-mallar. Ett vanligt mönster är att exponera dokumentation som resource och analys-prompts som slash-kommandon.

Publicera på npm

När servern fungerar lokalt är sista steget publicering. Kompilera med tsc, sätt "bin" i package.json och kör npm publish. Andra kan då köra din server direkt med npx -y ditt-paket-namn.

Vanliga frågor

Måste jag skriva servern i TypeScript?+

Nej. Officiella SDK:er finns även för Python, Kotlin, Java, C# och Swift. TypeScript är dock det mest välskötta ekosystemet just nu.

Kan MCP-servrar köras som fjärrtjänster?+

Ja. Utöver stdio stöder MCP streaming HTTP med Server-Sent Events. Fjärrservrar bör alltid skyddas med OAuth eller signerade tokens.

Hur felsöker jag min server?+

Använd @modelcontextprotocol/inspector för att se JSON-RPC-trafiken i realtid. Claude Desktops loggar finns i ~/Library/Logs/Claude på macOS.

Nordens MCP-katalog

Utforska verifierade MCP-servrar

Alla servrar i katalogen är verifierade mot GitHub och npm — bara officiella och underhållna projekt listas.

Öppna katalogen →