Zum Hauptinhalt springen
MCP Server selber bauen: Schritt-für-Schritt mit TypeScript
Zurück zum Blog
KI & Automatisierung 3. April 2026 8 min Lesezeitvon Matthias Meyer

MCP Server selber bauen: Schritt-für-Schritt mit TypeScript

Ein MCP Server in unter 30 Minuten: Vom Setup über Tool-Definition bis zum Deployment. Mit dem offiziellen Anthropic SDK und praktischen Code-Beispielen.

Ein MCP Server ist ein Programm, das KI-Modellen strukturierte Tools bereitstellt — ueber das standardisierte Model Context Protocol. Mit dem offiziellen TypeScript SDK von Anthropic laesst sich ein funktionsfaehiger MCP Server in unter 30 Minuten bauen. Dieser Artikel zeigt jeden Schritt: vom Setup bis zum Deployment.

MCP (Model Context Protocol) hat sich seit November 2024 zum De-facto-Standard fuer KI-Tool-Integration entwickelt. Ueber 10.000 MCP Server existieren bereits. Aber die meisten Entwickler nutzen fertige Server — und verpassen dabei das Potenzial, eigene Tools genau fuer ihre Anforderungen zu bauen.

Was brauche ich um einen MCP Server zu bauen?

Ein MCP Server benoetigt drei Dinge: Node.js (ab Version 18), das offizielle @modelcontextprotocol/sdk Package und einen MCP-kompatiblen Client zum Testen (Claude Desktop, Claude Code oder Cursor).

Die Grundstruktur ist simpel:

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

Das SDK bietet zwei Transport-Optionen: stdio (lokaler Server, liest von stdin/stdout) und HTTP mit SSE (remote Server, laeuft als Web-Service). Fuer den Einstieg empfehlen wir stdio — es funktioniert sofort ohne Netzwerk-Setup.

Wie definiere ich Tools im MCP-Schema?

Tools sind das Herzstuck jedes MCP Servers. Ein Tool hat einen Namen, eine Beschreibung (die das KI-Modell liest um zu entscheiden ob es das Tool nutzen will) und ein Input-Schema mit Zod-Validierung.

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: "mein-server",
  version: "1.0.0",
});

server.tool(
  "wetter_abfragen",
  "Aktuelle Wetterdaten fuer eine Stadt abrufen",
  { stadt: z.string().describe("Name der Stadt") },
  async ({ stadt }) => {
    const res = await fetch(
      `https://wttr.in/${encodeURIComponent(stadt)}?format=j1`
    );
    const data = await res.json();
    const temp = data.current_condition[0].temp_C;
    return {
      content: [{ type: "text", text: `${stadt}: ${temp}°C` }],
    };
  }
);

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

Wichtig: Die Beschreibung des Tools entscheidet, ob die KI es aufruft. Schreiben Sie sie aus der Perspektive des Modells: "Aktuelle Wetterdaten fuer eine Stadt abrufen" ist besser als "Wetter-API-Wrapper".

Wie verbinde ich den Server mit Claude Desktop?

Nach dem Build (npx tsc) muss der Server in der Claude Desktop Config registriert werden. Die Datei liegt unter:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mein-server": {
      "command": "node",
      "args": ["/pfad/zu/mein-mcp-server/dist/index.js"]
    }
  }
}

Starten Sie Claude Desktop neu. Im Chat erscheint ein Werkzeug-Symbol — Ihr Tool ist jetzt verfuegbar. Testen Sie mit: "Wie ist das Wetter in Berlin?"

Fuer Claude Code geht es noch einfacher:

claude mcp add mein-server node /pfad/zu/dist/index.js

Welche Best Practices gelten fuer MCP Server in Produktion?

Der Schritt vom Prototyp zur Produktion erfordert fuenf Massnahmen:

  1. Error Handling: MCP Tools duerfen nicht abstuerzen. Fangen Sie jeden Fehler und geben Sie eine verstaendliche Fehlermeldung zurueck. Die KI kann mit "API nicht erreichbar" arbeiten, mit einem Stack Trace nicht.

  2. Input-Validierung: Zod validiert automatisch, aber definieren Sie enge Schemas. z.string().max(100) statt z.string(). KI-Modelle senden manchmal unerwartete Eingaben.

  3. Timeouts: Externe API-Calls brauchen Timeouts. AbortSignal.timeout(10_000) verhindert haengende Requests.

  4. Logging: Nutzen Sie server.sendLoggingMessage() statt console.log. So landen Logs im MCP-Client und nicht im Transport-Stream.

  5. Rate Limiting: Wenn Ihr Server externe APIs nutzt, implementieren Sie serverseitiges Rate Limiting. KI-Modelle rufen Tools aggressiver auf als menschliche User.

Wie deploye ich einen MCP Server remote?

Fuer remote Deployment wechseln Sie von stdio auf HTTP+SSE Transport:

import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
import express from "express";

const app = express();
app.get("/sse", async (req, res) => {
  const transport = new SSEServerTransport("/messages", res);
  await server.connect(transport);
});
app.post("/messages", async (req, res) => {
  await transport.handlePostMessage(req, res);
});
app.listen(3100);

Clients verbinden sich dann per URL statt per Kommando. In Claude Desktop:

{
  "mcpServers": {
    "mein-server": {
      "url": "https://mein-server.example.com/sse"
    }
  }
}

Sicherheit: Remote MCP Server brauchen Authentifizierung. Das Protokoll unterstuetzt OAuth 2.1 — oder Sie nutzen API Keys im Header. Ohne Auth ist Ihr Server oeffentlich zugaenglich.

Fazit

Ein eigener MCP Server gibt Ihnen volle Kontrolle darueber, welche Tools Ihre KI nutzen kann. Die Einstiegshuerde ist niedrig (ein npm-Package, eine Datei), das Potenzial ist hoch. Starten Sie mit einem einfachen Tool, testen Sie es in Claude Desktop, und erweitern Sie schrittweise.

Weiterführend: Was ist das MCP-Protokoll? | MCP Server Architektur im Detail | MCP Tools installieren — Tutorial

Matthias Meyer

Matthias Meyer

Gründer & KI-Architekt

Full-Stack-Entwickler mit über 10 Jahren Erfahrung in Webdesign und KI-Systemen. Baut AI-Ready Websites und KI-Automatisierungen für KMU und Agenturen.

mcptutorialtypescriptsdkserverbuild
MCP Server selber bauen: Schritt-für-Schritt mit TypeScript