/ Directorio / Playground / mcp-go (SDK)
● Comunidad mark3labs ⚡ Instantáneo

mcp-go (SDK)

por mark3labs · mark3labs/mcp-go

SDK de Go para construir servidores MCP — mínimo boilerplate, definiciones de herramientas con tipos seguros, usado por la mitad de los MCPs de producción en Go.

mcp-go es el SDK de Go de facto para el Model Context Protocol. Gestiona el transporte (stdio + SSE + HTTP streamable), el encuadre JSON-RPC, el registro de herramientas/recursos/prompts y la validación de solicitudes para que puedas concentrarte en la lógica del servidor MCP. Usado por el mcp-server de GitHub, dbhub, k8s-mcp y muchos otros.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

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

Instalar

Elige tu cliente

~/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
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.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 usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

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

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "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
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

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

Continue usa un array de objetos de servidor en lugar de un mapa.

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

Añádelo a context_servers. Zed recarga en caliente al guardar.

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

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: mcp-go (SDK)

Construir un servidor MCP interno para la API de tu empresa en menos de 100 LOC

👤 Desarrolladores Go en empresas que quieren exponer herramientas internas a Claude ⏱ ~45 min intermediate

Cuándo usarlo: Tienes un servicio en Go y quieres que Claude lo llame sin escribir esquemas OpenAPI.

Requisitos previos
  • Go 1.21+ — Instala con brew o asdf
Flujo
  1. Crear el scaffold del servidor
    Crea un nuevo proyecto Go. Agrega mcp-go y define una herramienta: search_orders(customer_id) que llame a nuestra API interna /v1/orders.✓ Copiado
    → main.go de ~50 líneas, compila limpio
  2. Probar con mcp-inspector
    Ejecuta el servidor en modo stdio. Abre mcp-inspector y verifica que la herramienta aparezca.✓ Copiado
    → Herramienta callable desde el inspector
  3. Registrar en Claude
    Agrega el binario a claude_desktop_config.json. Prueba desde Claude con un customer ID real.✓ Copiado
    → Respuesta en vivo desde la API

Resultado: API interna en Go expuesta a Claude con herramientas MCP de tipos seguros.

Errores comunes
  • Las llamadas de larga duración bloquean stdio — Usa SSE o transporte HTTP streamable para llamadas de más de 5 segundos
Combinar con: mcp-python-sdk

Portar una API REST existente a MCP sin romper los clientes REST

👤 Equipos de backend que adoptan MCP sin forzar migración ⏱ ~60 min intermediate

Cuándo usarlo: Quieres que REST y MCP coexistan en los mismos handlers.

Flujo
  1. Extraer la lógica del handler
    Toma el handler existente /api/v1/search. Extrae la función principal para que tanto gin como mcp-go puedan llamarla.✓ Copiado
    → Handler dividido — el handler HTTP delega a una función pura
  2. Envolver en herramienta MCP
    Registra la función pura como herramienta mcp-go. Mapea los parámetros URL a los inputs de la herramienta.✓ Copiado
    → Misma lógica, dos superficies
  3. Binario único, dos transportes
    Construye un binario que ejecute gin en :8080 y el servidor MCP sobre stdio cuando se invoca con --mcp.✓ Copiado
    → Binario multi-modo

Resultado: REST y MCP servidos desde un único binario Go con núcleo compartido.

Hospedar un servidor MCP en internet público con SSE

👤 Desarrolladores publicando MCPs públicos (como git-mcp.io) ⏱ ~90 min advanced

Cuándo usarlo: Quieres que los usuarios agreguen tu MCP sin instalar nada localmente.

Requisitos previos
  • Un dominio y TLS — Caddy/nginx con Let's Encrypt
Flujo
  1. Cambiar a transporte SSE
    Convierte el servidor stdio a SSE. Agrega CORS para los orígenes relevantes.✓ Copiado
    → El servidor acepta conexiones /sse
  2. Agregar autenticación por usuario
    Valida Bearer token en cada conexión; rechaza los desconocidos.✓ Copiado
    → 401 en tokens inválidos, ok en válidos
  3. Desplegar y probar
    Despliega en fly.io. Agrega la URL a Claude mediante mcp-remote.✓ Copiado
    → Herramienta callable desde Claude apuntando a la URL remota

Resultado: Servidor MCP en internet público con autenticación, listo para usuarios.

Errores comunes
  • SSE detrás de un balanceador de carga corta conexiones largas — Configura timeouts de inactividad >5min en el LB

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

mcp-go-mark3labs + mcp-python-sdk

Mismo proyecto pero dos SDKs para diferentes superficies

mcp-go-mark3labs + mcp-registry

Publicar tu MCP construido en el registro oficial

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
AddTool name, description, handler Al inicio del servidor para cada herramienta 0
AddResource uri, name, handler Exponer un recurso legible 0
AddPrompt name, description, handler Exponer prompts reutilizables 0
ServeStdio () Modo stdio local (el más común) 0
ServeSSE addr, opts Modo red/remoto 0

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
N/A — biblioteca
Tokens por llamada
N/A
Monetario
Gratuito (MIT)
Consejo
Fija una versión minor específica; la API se estabilizó en 2025 pero hay pequeñas diferencias entre versiones

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Lo que tus handlers de herramientas necesiten
Salida de datos: Controlado por tus handlers

Resolución de problemas

Errores comunes y soluciones

Herramienta no visible para Claude

Verifica que las capacidades estén negociadas; las herramientas deben registrarse antes de la llamada ServeStdio

Verificar: Usa mcp-inspector para confirmar el listado de herramientas
Mensajes stdio malformados

No imprimas en stdout en tus handlers — ese es el canal JSON-RPC. Usa stderr para logs.

SSE cae en inactividad

Agrega keepalives periódicos; configura los timeouts del proxy

Alternativas

mcp-go (SDK) vs otros

AlternativaCuándo usarlaContrapartida
mcp-python-sdk (oficial)Estás construyendo en PythonIdioma diferente; ambos son de primera clase
TypeScript SDK (oficial)Ecosistema Node/Bun es mejor opciónJS primero; menos margen de rendimiento que Go

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills