/ Verzeichnis / Playground / mcp-go (SDK)
● Community mark3labs ⚡ Sofort

mcp-go (SDK)

von mark3labs · mark3labs/mcp-go

Go-SDK zum Erstellen von MCP-Servern — minimaler Boilerplate, typsichere Tool-Definitionen, von der Hälfte der produktionsreifen Go-MCPs in der freien Wildbahn verwendet.

mcp-go ist das De-facto-Go-SDK für das Model Context Protocol. Es übernimmt Transport (stdio + SSE + streamable HTTP), JSON-RPC-Framing, Tool/Resource/Prompt-Registrierung und Request-Validierung damit du dich auf die MCP-Server-Logik konzentrieren kannst. Wird von GitHubs mcp-server, dbhub, k8s-mcp und vielen anderen verwendet.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

mcp-go-mark3labs.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-go-mark3labs",
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-go-mark3labs": {
      "command": {
        "path": "go",
        "args": [
          "install",
          "github.com/mark3labs/mcp-go/cmd/example@latest"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add mcp-go-mark3labs -- go install github.com/mark3labs/mcp-go/cmd/example@latest

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: mcp-go (SDK)

Einen internen MCP-Server für eure Firmen-API in unter 100 LOC bauen

👤 Go-Entwickler bei Firmen, die interne Tools für Claude zugänglich machen wollen ⏱ ~45 min intermediate

Wann einsetzen: Du hast einen Go-Service und möchtest Claude dazu bringen ihn aufzurufen ohne OpenAPI-Schemas schreiben zu müssen.

Voraussetzungen
  • Go 1.21+ — Via brew oder asdf installieren
Ablauf
  1. Server aufsetzen
    Create a new Go project. Add mcp-go and define one tool: search_orders(customer_id) that calls our internal /v1/orders API.✓ Kopiert
    → main.go ~50 Zeilen, baut sauber
  2. Mit mcp-inspector testen
    Run the server in stdio mode. Open mcp-inspector and verify the tool shows up.✓ Kopiert
    → Tool über Inspector aufrufbar
  3. In Claude registrieren
    Add the binary to claude_desktop_config.json. Test from Claude with a real customer ID.✓ Kopiert
    → Live-Antwort von der API

Ergebnis: Interne Go-API für Claude mit typsicheren MCP-Tools zugänglich gemacht.

Fallstricke
  • Langläufige Aufrufe blockieren stdio — SSE oder streamable HTTP Transport für Aufrufe >5s verwenden
Kombinieren mit: mcp-python-sdk

Eine bestehende REST-API zu MCP portieren ohne REST-Clients zu brechen

👤 Backend-Teams, die MCP adoptieren ohne Migration zu erzwingen ⏱ ~60 min intermediate

Wann einsetzen: Du möchtest REST und MCP auf denselben Handlern koexistieren lassen.

Ablauf
  1. Handler-Logik extrahieren
    Take the existing /api/v1/search handler. Extract the core function so both gin and mcp-go can call it.✓ Kopiert
    → Handler aufgeteilt — HTTP-Handler delegiert an pure func
  2. In MCP-Tool einwickeln
    Register the pure func as an mcp-go tool. Map URL params to tool inputs.✓ Kopiert
    → Gleiche Logik, zwei Oberflächen
  3. Einzelnes Binary, zwei Transporte
    Build one binary that runs gin on :8080 and the MCP server over stdio when invoked with --mcp.✓ Kopiert
    → Multi-Modus-Binary

Ergebnis: REST und MCP aus einem Go-Binary mit gemeinsamem Kern bedient.

Einen MCP-Server im öffentlichen Internet mit SSE hosten

👤 Entwickler, die öffentliche MCPs veröffentlichen (wie git-mcp.io) ⏱ ~90 min advanced

Wann einsetzen: Du möchtest, dass Nutzer deinen MCP hinzufügen können ohne lokal etwas zu installieren.

Voraussetzungen
  • Eine Domain und TLS — Caddy/nginx mit Let's Encrypt
Ablauf
  1. Auf SSE-Transport wechseln
    Convert the stdio server to SSE. Add CORS for the relevant origins.✓ Kopiert
    → Server akzeptiert /sse-Verbindungen
  2. Pro-Benutzer-Authentifizierung hinzufügen
    Validate Bearer token on each connection; reject unknown.✓ Kopiert
    → 401 bei schlechten Token, ok bei gültigen
  3. Bereitstellen und testen
    Deploy to fly.io. Add the URL to Claude via mcp-remote.✓ Kopiert
    → Tool von Claude aufrufbar der auf Remote-URL zeigt

Ergebnis: Öffentlicher MCP-Server mit Authentifizierung bereit für Nutzer.

Fallstricke
  • SSE hinter Load Balancer bricht lange Verbindungen ab — Idle-Timeouts >5min auf dem Load Balancer konfigurieren

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

mcp-go-mark3labs + mcp-python-sdk

Gleiches Projekt aber zwei SDKs für verschiedene Oberflächen

mcp-go-mark3labs + mcp-registry

Gebauten MCP im offiziellen Registry veröffentlichen

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
AddTool name, description, handler Beim Server-Start für jedes Tool 0
AddResource uri, name, handler Eine lesbare Resource exponieren 0
AddPrompt name, description, handler Wiederverwendbare Prompts exponieren 0
ServeStdio () Lokaler stdio-Modus (am häufigsten) 0
ServeSSE addr, opts Netzwerk/Remote-Modus 0

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Nicht zutreffend — Bibliothek
Tokens pro Aufruf
Nicht zutreffend
Kosten in €
Kostenlos (MIT)
Tipp
Auf eine bestimmte Minor-Version pinnen; die API stabilisierte sich 2025 aber kleinere Änderungen kommen vor

Sicherheit

Rechte, Secrets, Reichweite

Credential-Speicherung: Was auch immer deine Tool-Handler brauchen
Datenabfluss: Von deinen Handlern kontrolliert

Fehlerbehebung

Häufige Fehler und Lösungen

Tool für Claude nicht sichtbar

Prüfen ob Capabilities ausgehandelt werden; Tools müssen vor ServeStdio-Aufruf registriert sein

Prüfen: mcp-inspector zum Bestätigen der Tool-Auflistung verwenden
stdio-Nachrichten fehlerhaft

In Handlern nicht auf stdout schreiben — das ist der JSON-RPC-Kanal. stderr für Logs verwenden.

SSE bricht bei Inaktivität ab

Periodische Keepalives hinzufügen; Proxy-Timeouts konfigurieren

Alternativen

mcp-go (SDK) vs. andere

AlternativeWann stattdessenKompromiss
mcp-python-sdk (official)Du entwickelst in PythonAndere Sprache; beide sind erstklassig
TypeScript SDK (official)Node/Bun-Ökosystem passtJS-first; weniger Performance-Spielraum als Go

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen