Build This Now
Build This Now
TastenkürzelStatus Line Guide
MCP-GrundlagenMCP Tool SearchContext7 MCP50+ MCP-Server für Claude CodeCursor MCP ServerClaude Code-SucheBrowser-Automatisierung mit MCP für Claude CodeSocial-Media-Automatisierung mit Claude CodeEigenen MCP-Server für Claude Code bauen
speedy_devvkoen_salo
Blog/Toolkit/MCP/Build Your Own MCP Server for Claude Code

Eigenen MCP-Server für Claude Code bauen

Einen eigenen Claude Code MCP-Server in Node.js bauen. Tool-Definitionen, Request-Handler, REST- und Postgres-Muster, plus die Konfiguration, die Claude Code zum Laden braucht.

Hören Sie auf zu konfigurieren. Fangen Sie an zu bauen.

SaaS-Builder-Vorlagen mit KI-Orchestrierung.

Published Mar 8, 2026Toolkit hubMCP index

Problem: Die öffentlichen MCP-Server reden nicht mit den Systemen, die du tatsächlich nutzt. Deine interne API, das Firmen-Postgres, ein eigener Workflow, den sonst niemand anfasst. Damit Claude Code diese erreicht, musst du den Server selbst schreiben.

Quick Win: Fünf Minuten Node.js bringen Claude zum Sprechen mit jeder REST-API:

// my-api-server.js - Connect Claude to your API
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "my-api-server", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "fetch_user_data",
      description: "Get user information from our internal API",
      inputSchema: {
        type: "object",
        properties: {
          userId: { type: "string", description: "User ID to fetch" },
        },
        required: ["userId"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "fetch_user_data") {
    const response = await fetch(
      `https://api.yourcompany.com/users/${args.userId}`,
      {
        headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
      },
    );
    return {
      content: [{ type: "text", text: JSON.stringify(await response.json()) }],
    };
  }
});
 
server.connect(process.stdio);

Speichere die Datei als my-api-server.js. Führe node my-api-server.js zum Testen aus. Das ist eine funktionierende Integration.

Was ein MCP-Server eigentlich ist

Ein MCP-Server ist ein Node.js-Prozess, der Claude Code eine Liste aufrufbarer Tools übergibt. Er läuft eigenständig, getrennt vom Editor, und gibt Claude eine Verbindung zu allem, was du von Node aus erreichst: APIs, Datenbanken, interne Dienste.

Jeder Server liefert vier Dinge:

  • Tool-Definitionen: die Funktionen, die Claude aufrufen darf
  • Tool-Handler: der Code, der läuft, wenn Claude einen aufruft
  • Fehlerbehandlung: nützliche Meldungen, wenn der Aufruf scheitert
  • Authentifizierung: ein sicherer Weg, die dahinterliegenden Systeme zu erreichen

Muster, die die meisten Fälle abdecken

Mit einer REST-API sprechen

Richte Claude auf jeden HTTP-Endpunkt mit einem kleinen Connector:

// Generic API connector pattern
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "api-connector", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "api_get",
      description: "GET request to any endpoint",
      inputSchema: {
        type: "object",
        properties: {
          endpoint: { type: "string", description: "API endpoint path" },
          params: { type: "object", description: "Query parameters" },
        },
        required: ["endpoint"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "api_get") {
    const url = new URL(`${process.env.API_BASE_URL}${args.endpoint}`);
    if (args.params) {
      Object.entries(args.params).forEach(([key, value]) =>
        url.searchParams.append(key, value),
      );
    }
 
    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
    });
 
    return {
      content: [
        { type: "text", text: JSON.stringify(await response.json(), null, 2) },
      ],
    };
  }
});
 
server.connect(process.stdio);

Dieselbe Form funktioniert für Stripe, Shopify, dein internes Dashboard, alles was HTTP spricht.

Mit einer Datenbank sprechen

Tausch den fetch-Aufruf gegen einen Datenbank-Client:

// Database connector for PostgreSQL, MySQL, SQLite
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
const { Client } = require("pg");
 
const server = new Server({ name: "database-connector", version: "1.0.0" });
const client = new Client({ connectionString: process.env.DATABASE_URL });
 
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "query_database") {
    const result = await client.query(request.params.arguments.query);
    return {
      content: [{ type: "text", text: JSON.stringify(result.rows, null, 2) }],
    };
  }
});

Claude kann jetzt SQL ausführen und bei Datenbankarbeit helfen.

Einrichtung und Tests

Starte das Projekt:

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

Dann weise Claude Code in seiner MCP-Konfigurationsdatei auf den Server. Wo diese Datei liegt, hängt davon ab, wie du Claude betreibst:

  • Claude Code CLI: ~/.claude.json (Nutzerebene) oder .mcp.json (Projektebene)
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "my-custom-server": {
      "command": "node",
      "args": ["/path/to/your/server.js"],
      "env": { "API_TOKEN": "your-token" }
    }
  }
}

Starte Claude Code nach dem Speichern neu. Der neue Server lädt beim Start.

Wenn etwas kaputt geht

Server nicht gefunden: Der Konfigurations-Pfad oder das JSON ist falsch. Überprüfe den Dateipfad doppelt. Nutze einen absoluten Pfad für command.

Tool-Timeout: Lang laufende Calls blockieren das Tool. Wickle sie in deinen eigenen Timeout, damit sie sauber scheitern.

Authentifizierung fehlgeschlagen: Die Umgebungsvariablen in der Konfiguration erreichen den Server nicht. Prüfe, ob sie richtig geschrieben und vorhanden sind.

Dinge, die sich von Anfang an lohnen

  • Jeder externe Aufruf kommt in ein try-catch, damit Fehler als Text auftauchen, nicht als Absturz
  • Tokens leben in Umgebungsvariablen, nie im Quellcode
  • Rate-limitierte APIs brauchen ihren eigenen Throttle, damit Claude dein Kontingent nicht verbrennt
  • console.log-Ausgaben tauchen in Claudes Logs auf, nutze das also frei zum Debuggen

Nächste Schritte

Such dir eine Sache zum Einbinden aus und bau von dort:

  1. Mit einer API starten: der, die du jeden Tag anfasst
  2. Das REST-Muster kopieren: der Connector oben ist das Template
  3. Bestätigen, dass es geladen ist: frag Claude "What MCP tools are available?" und dein neues Tool sollte erscheinen
  4. Gute Tool-Beschreibungen schreiben: MCP Tool Search nutzt sie, um zu entscheiden, wann dein Server geladen wird
  5. Weiterlesen: der MCP-Grundlagen-Guide und die Liste der beliebten MCP-Server zeigen, was als nächstes zu bauen ist

Ein eigener MCP-Server macht Claude Code zum Client für deinen eigenen Stack. Ein Server pro Woche und die Liste der Dinge, die Claude erreichen kann, wird leise länger.

Continue in MCP

  • 50+ MCP-Server für Claude Code
    50+ Claude Code MCP-Server, Editor-Integrationen, Nutzungsmonitore, Orchestratoren, Datenbankverbinder, Browser-Treiber und Starter-Kits, die sich heute einzubinden lohnen.
  • Browser-Automatisierung mit MCP für Claude Code
    Playwright oder Puppeteer per MCP in Claude Code einbinden und echte Browser mit natürlicher Sprache steuern: Scraping, QA, Regression-Klicks, kein Selector-Aufwand.
  • Context7 MCP
    Context7 MCP in Claude Code einbinden, damit Prompts aktuelle Bibliotheks-Docs zur Abfragezeit laden und veraltete Trainingsdaten, erfundene APIs und umbenannte Funktionen eliminieren.
  • Cursor MCP Server
    MCP-Server in Cursor IDE konfigurieren. Wo .cursor/mcp.json liegt, das JSON-Format, das Cursor erwartet, und die ersten Server für Suche, Git und Browser.
  • MCP-Grundlagen
    Model Context Protocol Grundlagen: Server-Prozesse stellen Claude Code Werkzeuge, APIs und Dienste über ein gemeinsames Übertragungsformat zur Verfügung. Konfiguration, Transportwege und der erste Server.
  • MCP Tool Search
    MCP Tool Search lädt Claude Code-Tool-Definitionen erst bei Bedarf nach, sobald sie 10 % des Kontextfensters überschreiten, und gibt dabei zehntausende Token von ungenutzten MCP-Servern zurück.

More from Toolkit

  • Tastenkürzel
    Claude Code keybindings.json konfigurieren: 17 Kontexte, Tastenkombinations-Syntax, Chord-Sequenzen, Modifier-Kombinationen und wie du jeden Standard-Shortcut sofort deaktivierst.
  • Status Line Guide
    Richte eine Claude Code Status Line ein, die Modellname, Git-Branch, Sitzungskosten und Kontextnutzung anzeigt. settings.json-Konfiguration, JSON-Eingabe, Bash-, Python- und Node.js-Skripte.
  • KI-SEO und GEO-Optimierung
    Ein Überblick über Generative Engine Optimization: Wie du dafür sorgst, dass deine Inhalte in ChatGPT-, Claude- und Perplexity-Antworten zitiert werden, statt nur bei Google zu ranken.
  • Claude Code vs Cursor in 2026
    Ein direkter Vergleich von Claude Code und Cursor in 2026: Agentenmodelle, Kontextfenster, Preisstufen und welches Tool zu welchem Entwickler-Workflow passt.

Hören Sie auf zu konfigurieren. Fangen Sie an zu bauen.

SaaS-Builder-Vorlagen mit KI-Orchestrierung.

On this page

Was ein MCP-Server eigentlich ist
Muster, die die meisten Fälle abdecken
Mit einer REST-API sprechen
Mit einer Datenbank sprechen
Einrichtung und Tests
Wenn etwas kaputt geht
Dinge, die sich von Anfang an lohnen
Nächste Schritte

Hören Sie auf zu konfigurieren. Fangen Sie an zu bauen.

SaaS-Builder-Vorlagen mit KI-Orchestrierung.