MCP-Server im Eigenbetrieb: Agenten mit eigenem Wissen füttern
Coding-Agenten sind so gut wie ihr Kontext. MCP — das Model Context Protocol — ist die standardisierte Schnittstelle, über die Agenten Werkzeuge und Wissen beziehen. Die öffentlichen MCP-Server sind nützlich. Die selbstgebauten, die auf eigene Systeme zeigen, sind strategisch.
Was ein MCP-Server tut
Ein MCP-Server ist ein kleiner Dienst, der Ressourcen (Daten) und Tools (Aktionen) bereitstellt. Der Agent — Claude Code, Codex, oder ein eigener — spricht mit ihm über JSON-RPC.
Agent ⟷ MCP-Client ⟷ MCP-Server ⟷ Interne Systeme
Das Protokoll ist simpel. Die Intelligenz steckt darin, was der Server bereitstellt.
Unsere MCP-Server
Grounded Docs. Der Server, den wir am meisten nutzen. Er liest die Dokumentationen unserer eingesetzten Software — Stalwart, Zammad, Qdrant, vLLM — und stellt sie dem Agenten als semantisch durchsuchbare Ressource zur Verfügung. Der Agent muss nicht raten, welche Konfigurationsoption es gibt. Er schlägt nach.
ERP-Winline-Connector. Ein MCP-Server, der Lesezugriff auf unser ERP hat: Kundenstamm, offene Posten, Lagerbestände. Der Agent kann damit Code generieren, der auf echten Datenstrukturen basiert — nicht auf erfundenen Beispieltabellen.
Translogica-Status. Transportaufträge, Sendungsverfolgung, aktuelle Positionen. Der MCP-Server liefert sie dem Agenten, wenn er Workflow-Code für die Logistik schreibt.
Bauen: kein Hexenwerk
Ein MCP-Server ist in Python überschaubar:
from mcp.server import Server, stdio_server
from mcp.types import Tool, TextContent
server = Server("erp-connector")
@server.list_tools()
async def list_tools():
return [Tool(name="get_offene_posten", description="Offene Posten eines Kunden abfragen", inputSchema={...})]
@server.call_tool()
async def call_tool(name, arguments):
if name == "get_offene_posten":
kdnr = arguments["kundennummer"]
daten = winline_db.query(f"SELECT ... WHERE kdnr = ?", kdnr)
return [TextContent(type="text", text=str(daten))]
Der Server läuft als Prozess, der Agent verbindet sich beim Start. Keine Firewall-Freischaltung, kein exponierter Port — die Kommunikation läuft über stdin/stdout.
Sicherheit: Das Prinzip der minimalen Rechte
Ein MCP-Server bekommt nur das, was er braucht. Der ERP-Connector hat Lesezugriff auf ausgewählte Views — keine Schreibrechte, kein Direktzugriff auf die Produktivdatenbank. Der Agent kann abfragen, nicht verändern.
Fazit
Öffentliche MCP-Server sind gut. Selbstgebaute sind der Unterschied zwischen einem Agenten, der generischen Code produziert, und einem, der Ihren Betrieb versteht. Die Investition ist ein Nachmittag pro System — und zahlt sich in jedem weiteren Coding-Task aus.