/ Annuaire / Playground / mcp-go (SDK)
● Communauté mark3labs ⚡ Instantané

mcp-go (SDK)

par mark3labs · mark3labs/mcp-go

SDK Go pour construire des serveurs MCP — boilerplate minimal, définitions d'outils type-safe, utilisé par la moitié des MCPs Go de qualité production dans la nature.

mcp-go est le SDK Go de facto pour le Model Context Protocol. Il gère le transport (stdio + SSE + HTTP streamable), le framing JSON-RPC, l'enregistrement d'outils/ressources/prompts et la validation des requêtes pour que vous puissiez vous concentrer sur la logique du serveur MCP. Utilisé par le mcp-server de GitHub, dbhub, k8s-mcp et bien d'autres.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

mcp-go-mark3labs.replay ▶ prêt
0/0

Installer

Choisissez votre 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
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.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 utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la 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
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "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
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

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

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : mcp-go (SDK)

Construire un serveur MCP interne pour votre API d'entreprise en moins de 100 LOC

👤 Développeurs Go dans des entreprises souhaitant exposer des outils internes à Claude ⏱ ~45 min intermediate

Quand l'utiliser : Vous avez un service Go et voulez que Claude le call sans écrire de schémas OpenAPI.

Prérequis
  • Go 1.21+ — Installez via brew ou asdf
Déroulement
  1. Scaffolding du serveur
    Create a new Go project. Add mcp-go and define one tool: search_orders(customer_id) that calls our internal /v1/orders API.✓ Copié
    → main.go ~50 lignes, build propre
  2. Tester avec mcp-inspector
    Run the server in stdio mode. Open mcp-inspector and verify the tool shows up.✓ Copié
    → Outil appelable depuis l'inspector
  3. Enregistrer dans Claude
    Add the binary to claude_desktop_config.json. Test from Claude with a real customer ID.✓ Copié
    → Réponse live depuis l'API

Résultat : API Go interne exposée à Claude avec des outils MCP type-safe.

Pièges
  • Les appels longue durée bloquent stdio — Utilisez le transport SSE ou HTTP streamable pour les appels >5s
Combiner avec : mcp-python-sdk

Porter une API REST existante vers MCP sans casser les clients REST

👤 Équipes backend adoptant MCP sans forcer la migration ⏱ ~60 min intermediate

Quand l'utiliser : Vous voulez que REST et MCP coexistent sur les mêmes handlers.

Déroulement
  1. Extraire la logique du handler
    Take the existing /api/v1/search handler. Extract the core function so both gin and mcp-go can call it.✓ Copié
    → Handler splitté — le handler http délègue à une fonction pure
  2. Envelopper dans un outil MCP
    Register the pure func as an mcp-go tool. Map URL params to tool inputs.✓ Copié
    → Même logique, deux surfaces
  3. Binaire unique, deux transports
    Build one binary that runs gin on :8080 and the MCP server over stdio when invoked with --mcp.✓ Copié
    → Binaire multi-mode

Résultat : REST et MCP servis depuis un seul binaire Go avec un cœur partagé.

Héberger un serveur MCP sur internet public avec SSE

👤 Développeurs publiant des MCPs publics (comme git-mcp.io) ⏱ ~90 min advanced

Quand l'utiliser : Vous voulez que les utilisateurs ajoutent votre MCP sans rien installer localement.

Prérequis
  • Un domaine et TLS — Caddy/nginx avec Let's Encrypt
Déroulement
  1. Basculer vers le transport SSE
    Convert the stdio server to SSE. Add CORS for the relevant origins.✓ Copié
    → Serveur acceptant les connexions /sse
  2. Ajouter l'auth par utilisateur
    Validate Bearer token on each connection; reject unknown.✓ Copié
    → 401 sur les mauvais tokens, ok sur les valides
  3. Déployer + tester
    Deploy to fly.io. Add the URL to Claude via mcp-remote.✓ Copié
    → Outil appelable depuis Claude pointant vers l'URL distante

Résultat : Serveur MCP public sur internet avec auth, prêt pour les utilisateurs.

Pièges
  • SSE derrière un load balancer coupe les longues connexions — Configurez les délais d'inactivité >5min sur le LB

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

mcp-go-mark3labs + mcp-python-sdk

Même projet mais deux SDKs pour des surfaces différentes

Use mcp-go for the perf-critical core; mcp-python-sdk for the data-science adjacency.✓ Copié
mcp-go-mark3labs + mcp-registry

Publier votre MCP construit dans le registry officiel

Once your mcp-go server works, submit it to the modelcontextprotocol/registry.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
AddTool name, description, handler Au démarrage du serveur pour chaque outil 0
AddResource uri, name, handler Exposer une ressource lisible 0
AddPrompt name, description, handler Exposer des prompts réutilisables 0
ServeStdio () Mode stdio local (le plus courant) 0
ServeSSE addr, opts Mode réseau/distant 0

Coût et limites

Coût d'exécution

Quota d'API
N/A — bibliothèque
Tokens par appel
N/A
Monétaire
Gratuit (MIT)
Astuce
Épinglez à une version mineure spécifique ; l'API s'est stabilisée en 2025 mais des deltas mineurs arrivent

Sécurité

Permissions, secrets, portée

Stockage des identifiants : Ce dont vos handlers d'outils ont besoin
Sortie de données : Contrôlé par vos handlers

Dépannage

Erreurs courantes et correctifs

Outil non visible pour Claude

Vérifiez que les capacités sont négociées ; les outils doivent être enregistrés avant l'appel ServeStdio

Vérifier : Use mcp-inspector to confirm tool listing
Messages stdio mal formés

N'imprimez pas sur stdout dans vos handlers — c'est le canal JSON-RPC. Utilisez stderr pour les logs.

SSE chute à l'inactivité

Ajoutez des keepalives périodiques ; configurez les délais d'expiration du proxy

Alternatives

mcp-go (SDK) vs autres

AlternativeQuand l'utiliserCompromis
mcp-python-sdk (official)Vous codez en PythonLangage différent ; les deux sont de premier ordre
TypeScript SDK (official)Écosystème Node/Bun adaptéJS en premier ; moins de marge de performance que Go

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills