Zum Inhalt springen

MCP-Server bauen: Anleitung, und wann Sie es lassen

Für CTOs und EntwicklerKI im Entwicklerteam · Aktualisiert

Filip PapranecGründer von Digitaliko

Ein MCP-Server verbindet Ihr System mit KI-Agenten. Illustration: ein Agentenfenster, ein MCP-Server mit drei Tools, Lesen und Vorschlagen erlaubt, Löschen gesperrt, dahinter die Firmenanwendung.Ein MCP-Server verbindet Ihr System mit KI-Agenten. Illustration: ein Agentenfenster, ein MCP-Server mit drei Tools, Lesen und Vorschlagen erlaubt, Löschen gesperrt, dahinter die Firmenanwendung.

Um einen MCP-Server zu bauen, wählen Sie einen Transport, registrieren ein paar Tools mit Name, Beschreibung und Eingabeschema und verbinden ihn mit einem Client wie Claude Code. stdio ist für ein lokales Tool, Streamable HTTP für einen entfernten Server, den viele nutzen. Der Code ist der kleine Teil. Welche Tools Sie anbieten und mit welchen Rechten, entscheidet, ob Sie sie einem Agenten geben können.

Ein MCP-Server ist die Art, wie Ihr System mit KI-Agenten spricht. MCP-Server anderer nutzen wir jeden Tag, und einen haben wir selbst gebaut: einen Prototyp für eine Spedition, deren System wir gebaut haben und betreiben. Er blieb ein Prototyp. Unten steht, wie Sie einen bauen, was wir anders machen würden und wann Sie gar keinen brauchen.

Was ist ein MCP-Server?

Das Model Context Protocol ist ein offener Standard, um KI-Clients mit Tools und Daten zu verbinden. Ein Server bietet Tools (Aktionen), Ressourcen (Daten) und Prompts an. Ein Client, etwa Claude Code, Claude Desktop oder ein selbst gebauter Agent, listet die Tools auf und ruft sie auf, wenn die Aufgabe es verlangt. Die Nachrichten laufen über JSON-RPC.

Ihre Datenbank sieht der Agent nie. Er sieht eine Liste wie diese:

  • find_order: sucht eine Bestellung nach ihrer Nummer. Nur lesend.
  • draft_reply: schreibt einen Antwortentwurf, den ein Mensch freigibt.

Name und Beschreibung sind Ihre Schnittstelle. Das Modell wählt ein Tool, indem es sie liest. Eine vage Beschreibung führt dazu, dass ein Tool im falschen Moment aufgerufen wird.

stdio oder Streamable HTTP: lokal oder entfernt?

Die MCP-Spezifikation definiert zwei Standard-Transporte. Die Wahl entscheidet, wo der Server läuft und wie er sich authentifiziert.

Hier anfangen

stdio (lokal)

  • Der Client startet den Server als Unterprozess.
  • Nachrichten laufen über stdin und stdout.
  • Zugangsdaten kommen aus der Umgebung.
  • Ein Nutzer, ein Rechner. Der einfachste Start.

Streamable HTTP (entfernt)

  • Ein eigenständiger Prozess für viele Clients.
  • Ein HTTP-Endpunkt, zum Beispiel /mcp.
  • Autorisierung auf Basis von OAuth 2.1.
  • Muss den Origin-Header prüfen.

Die Autorisierung folgt dem Transport. Die Autorisierungsspezifikation sagt, dass Implementierungen mit stdio „SHOULD NOT follow this specification, and instead retrieve credentials from the environment“, also das Autorisierungsverfahren nicht nutzen und Zugangsdaten aus der Umgebung holen sollen. Ein entfernter Server ist ein OAuth 2.1 Resource Server und muss prüfen, dass jedes Token, das er bekommt, für ihn ausgestellt wurde.

Wie baut man einen MCP-Server Schritt für Schritt?

  1. Aufgaben wählen

    Ein paar Dinge, die ein Agent mit Ihrem System tun soll. Nicht Ihre ganze API.

  2. Tools schreiben

    Ein klarer Name, eine Beschreibung, nach der das Modell handeln kann, ein Eingabeschema.

  3. Über stdio starten

    Zuerst lokal, mit Zugangsdaten aus der Umgebung.

  4. Client anbinden

    In Claude Code einbinden und die echte Aufgabe probieren, keine Demo.

  5. Zuletzt auf den Server

    Streamable HTTP erst, wenn Autorisierung und Audit-Log stehen.

Ein minimaler Server mit dem offiziellen TypeScript SDK:

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import { z } from 'zod'
import { getOrder } from './api.js'

const server = new McpServer({ name: 'orders', version: '0.1.0' })

server.registerTool(
  'find_order',
  {
    title: 'Find an order',
    description: 'Look up one order by its order number. Read-only.',
    inputSchema: { orderNumber: z.string() },
  },
  async ({ orderNumber }) => {
    const order = await getOrder(orderNumber) // your API, with the caller's rights
    return { content: [{ type: 'text', text: JSON.stringify(order) }] }
  },
)

await server.connect(new StdioServerTransport())

Anbindung an Claude Code:

claude mcp add orders -- node dist/server.js

Bei stdio tappt fast jeder in eine Falle. Die Spezifikation sagt, der Server „MUST NOT write anything to its stdout that is not a valid MCP message“: Auf stdout darf nichts außer MCP-Nachrichten landen. Ein vergessenes console.log zerreißt die Verbindung. Loggen Sie auf stderr.

Dann testen Sie mit dem echten Client und der echten Aufgabe. Wählt der Agent das falsche Tool, schauen Sie zuerst auf die Beschreibung, erst danach auf den Code.

Was haben wir aus unserem eigenen MCP-Prototyp gelernt?

Unser Prototyp war ein lokaler stdio-Server auf dem offiziellen SDK, aufgesetzt auf einer Open-Source-Vorlage. Er hatte ein einziges Lese-Tool und rief die bestehende interne API des Systems mit einem Platzhalter-Login auf. Das reichte, um einen Agenten aus echten Daten antworten zu sehen. Für den täglichen Einsatz reichte es nicht.

Ein KI-Client ruft einen MCP-Server auf. Der Server bietet Lese- und Vorschlags-Tools an, Löschen und Senden nicht. Er ruft Ihre eigene API auf, die vor der Datenbank Anmeldung und Rollen prüft und ein Audit-Log führt.Ein KI-Client ruft einen MCP-Server auf. Der Server bietet Lese- und Vorschlags-Tools an, Löschen und Senden nicht. Er ruft Ihre eigene API auf, die vor der Datenbank Anmeldung und Rollen prüft und ein Audit-Log führt.

Was wir anders machen würden:

  • Zuerst die API. Ein MCP-Server ist eine dünne Schicht über einer API. Unserer stützte sich auf Endpunkte, die für die Bildschirme der App gebaut waren. Zuerst sollte eine saubere API mit eigenen Zugriffsregeln stehen. Wie wir darüber denken, steht in Pohoda API: Anbindung an Ihr System und wer sie pflegt.
  • Echter Login ab dem ersten Tag. Ein Platzhalter-Login reicht für einen Nachmittag. Er ist das Erste, was zu ersetzen ist, denn er entscheidet, was der Agent sehen darf.
  • Die Aufgabe vor dem Server. Wir haben den Server gebaut, bevor wir wussten, welche Aufgabe ein Agent damit jeden Tag erledigen soll. Die richtige Reihenfolge ist die Aufgabe, dann die Tools, die sie braucht, und erst dann der Server.

Ehrlich gesagt: Einen entfernten MCP-Server haben wir noch nicht in Produktion betrieben. Alles hier über Streamable HTTP und OAuth stammt aus der Spezifikation, nicht aus eigenen Vorfällen.

Welche Tools sollte ein Agent bekommen?

Beginnen Sie nur lesend und fügen Sie Rechte einzeln hinzu. Unser Standard:

Art des ToolsBeispielUnser Standard
LesenBestellung finden, offene Transporte auflistenanbieten, beschränkt auf die Daten des Nutzers
VorschlagenAntwort entwerfen, Preis vorschlagenanbieten, ein Mensch gibt frei
Schreibeneinen Datensatz ändernnur mit Freigabe und Audit-Log
Löschen oder Sendenlöschen, Kunden anschreiben, zahlennicht anbieten

Es gilt dieselbe Regel wie für unsere eigenen Agenten. Mergen, Senden und Deployen bleiben bei einem Menschen, erzwungen unterhalb des Agenten, nicht durch einen Satz in seinem Prompt. Wie das in Claude Code funktioniert, steht in Claude Code Hooks, die still nichts tun.

Wenn ich eine andere Lösung sähe, stabiler, übersichtlicher und berechenbarer, würde ich keinen Agenten bauen.

Filip Papranec
Filip Papranec
Gründer von Digitaliko

Wann sollten Sie keinen MCP-Server bauen?

Ein MCP-Server ist für den Fall, dass ein KI-Agent selbst entscheidet, welche Aktion als Nächstes kommt. Viele Aufgaben brauchen das nie.

Lassen Sie ihn weg, wenn:

  • Nur Ihr eigener Code ihn aufruft. Rufen Sie Ihre API direkt auf.
  • Die Aufgabe eine feste Abfolge ist. Dort schlägt einfache Automatisierung einen Agenten.
  • Es noch keine saubere API gibt. Bauen Sie zuerst die.
  • Niemand das Rechtemodell verantwortet. Für wen darf der Agent handeln, und was darf er tun? Ohne Antwort bieten Sie kein Schreiben an.

Bevor Sie einen MCP-Server ausliefern

Soll Ihr System mit KI-Agenten arbeiten?

Wir bauen KI-Agenten und das, was darunter nötig ist, von der sauberen API bis zum MCP-Server obendrauf, im Rahmen von KI-Agent für Unternehmen. Für ein Team, das Agenten im eigenen Entwicklungsprozess will, gibt es AI-native SDLC für Entwicklerteams. Seit 2023 haben wir 15+ Produktionsprojekte geliefert.

Wir melden uns innerhalb von zwei Arbeitstagen und wählen gemeinsam, was wir zuerst lösen.

Wenn Sie lieber zuerst sprechen möchten, buchen Sie ein 15-Minuten-Meeting mit Filip.

Welche Aufgabe in Ihrem System würden Sie einem Agenten als Erstes geben?

Kurz gesagt

  • Ein MCP-Server bietet KI-Agenten die Tools Ihres Systems an: jedes mit Name, Beschreibung und Eingabeschema.
  • Lokal über stdio mit Zugangsdaten aus der Umgebung beginnen. Auf einen Server erst mit OAuth-basierter Autorisierung.
  • Der Code ist klein. Die eigentliche Arbeit: welche Tools Sie anbieten und mit welchen Rechten.
  • Zuerst Lesen, dann Vorschläge, Schreiben mit Freigabe, Löschen und Senden nie.
  • Sind die Schritte immer gleich, brauchen Sie weder Agent noch MCP-Server.

Häufige Fragen

Was ist ein MCP-Server?

Ein Programm, das einem KI-Client über das Model Context Protocol Tools, Daten und Prompts anbietet. Der Agent sieht jedes Tool mit Name, Beschreibung und Eingabeschema und entscheidet selbst, wann er es aufruft. Ihr System bleibt hinter Ihrem eigenen Code.

stdio oder Streamable HTTP?

stdio, wenn der Server auf demselben Rechner läuft wie der Client, etwa ein lokales Tool für Claude Code. Streamable HTTP, wenn er entfernt für mehrere Nutzer läuft. Ein entfernter Server braucht echte Autorisierung.

Wie füge ich einen MCP-Server zu Claude Code hinzu?

Lokal: claude mcp add <name> -- <befehl>. Entfernt: claude mcp add --transport http <name> <url>. Server, die das ganze Team bekommen soll, gehören in .mcp.json im Repository.

Wie sichere ich einen MCP-Server ab?

Lokal lesen Sie Zugangsdaten aus der Umgebung. Entfernt halten Sie sich an die Autorisierungsspezifikation von MCP, die auf OAuth 2.1 aufbaut, und prüfen, dass jedes Token für Ihren Server ausgestellt wurde. Bieten Sie so wenige Tools wie möglich an, zuerst nur lesende.

Braucht mein Produkt einen MCP-Server?

Nur wenn KI-Agenten mit Ihrem System arbeiten und selbst wählen sollen, was sie tun. Ruft nur Ihr eigener Code es auf oder sind die Schritte immer gleich, ist ein direkter API-Aufruf oder ein geplanter Job einfacher und leichter zu testen.

Fragen Sie eine KI zu diesem Artikel

Die KI nutzt dabei auch unsere anderen Artikel und Erfahrung aus echten Projekten.

ChatGPTClaudePerplexity
Engineering

Weitere Artikel

KI im Entwicklerteam

Claude Code Best Practices fürs Team: 7, die halten

Die meisten Claude Code Tipps stammen von Einzelnutzern. Diese sieben sind Teampraktiken: eine kurze CLAUDE.md, die die CI kurz hält, ein gemeinsames Plugin, Permissions und Hooks im Repository, ein Issue zu einem PR, ein Test, der zuerst rot ist, und ein Reviewer, der den Code nicht geschrieben hat.

KI im Entwicklerteam

Claude Code Skills und Plugins: ein Set für jedes Repo

Claude Code Skills sind Anweisungen in SKILL.md, die der Agent lädt, wenn eine Aufgabe sie braucht. Ein Plugin liefert Skills, Agenten und Hooks als eine Einheit. Wie wir ein Plugin in jedem Repository betreiben und was dabei kaputtging.

KI im Entwicklerteam

Claude Code Subagents und Worktrees: wann was

Claude Code Subagents teilen Arbeit innerhalb einer Session, Worktrees trennen Dateiänderungen. Unsere Regel aus der täglichen Arbeit mit parallelen Agenten: Subagents lesen nur, jede Änderung bekommt ihren eigenen Worktree und PR. Was kaputtging und wie Sie starten.

Zeit, mit dem Planen aufzuhören und das Problem zu lösen.

Kontakt

  • Digitaliko s.r.o.
    Šípková 377/17
    958 03 Malé Uherce, Slowakei
  • Melden Sie sich bei uns
    info@digitaliko.com
    +421 950 595 506
    WhatsApp