/ Diretório / Playground / mcp-go (SDK)
● Comunidade mark3labs ⚡ Instantâneo

mcp-go (SDK)

por mark3labs · mark3labs/mcp-go

SDK Go para criação de servidores MCP — mínimo de boilerplate, definições de ferramentas type-safe, usado por metade dos MCPs Go de produção por aí.

mcp-go é o SDK Go de facto para o Model Context Protocol. Cuida do transporte (stdio + SSE + streamable HTTP), framing JSON-RPC, registro de ferramentas/recursos/prompts e validação de requisições para que você possa focar na lógica do servidor MCP. Usado pelo mcp-server do GitHub, dbhub, k8s-mcp e muitos outros.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

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

Instalar

Escolha seu 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
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.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 o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a 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
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "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
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

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

O Continue usa um array de objetos de servidor em vez de um map.

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

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

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

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: mcp-go (SDK)

Criar um servidor MCP interno para a API da sua empresa em menos de 100 linhas

👤 Devs Go em empresas que querem expor ferramentas internas ao Claude ⏱ ~45 min intermediate

Quando usar: Você tem um serviço Go e quer que o Claude o chame sem escrever schemas OpenAPI.

Pré-requisitos
  • Go 1.21+ — Instale via brew ou asdf
Fluxo
  1. Criar o scaffold do servidor
    Create a new Go project. Add mcp-go and define one tool: search_orders(customer_id) that calls our internal /v1/orders API.✓ Copiado
    → main.go com ~50 linhas, build limpo
  2. Testar com mcp-inspector
    Run the server in stdio mode. Open mcp-inspector and verify the tool shows up.✓ Copiado
    → Ferramenta chamável pelo inspector
  3. Registrar no Claude
    Add the binary to claude_desktop_config.json. Test from Claude with a real customer ID.✓ Copiado
    → Resposta ao vivo da API

Resultado: API Go interna exposta ao Claude com ferramentas MCP type-safe.

Armadilhas
  • Chamadas de longa duração bloqueiam o stdio — Use transporte SSE ou streamable HTTP para chamadas com mais de 5s
Combine com: mcp-python-sdk

Portar uma API REST existente para MCP sem quebrar os clientes REST

👤 Times de backend adotando MCP sem forçar migração ⏱ ~60 min intermediate

Quando usar: Você quer REST e MCP coexistindo nos mesmos handlers.

Fluxo
  1. Extrair a lógica do handler
    Take the existing /api/v1/search handler. Extract the core function so both gin and mcp-go can call it.✓ Copiado
    → Handler dividido — http handler delega para função pura
  2. Envolver em ferramenta MCP
    Register the pure func as an mcp-go tool. Map URL params to tool inputs.✓ Copiado
    → Mesma lógica, duas superfícies
  3. Binário único, dois transportes
    Build one binary that runs gin on :8080 and the MCP server over stdio when invoked with --mcp.✓ Copiado
    → Binário multi-modo

Resultado: REST e MCP servidos a partir de um único binário Go com núcleo compartilhado.

Hospedar um servidor MCP na internet pública com SSE

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

Quando usar: Você quer que usuários adicionem seu MCP sem instalar nada localmente.

Pré-requisitos
  • Um domínio e TLS — Caddy/nginx com Let's Encrypt
Fluxo
  1. Mudar para transporte SSE
    Convert the stdio server to SSE. Add CORS for the relevant origins.✓ Copiado
    → Servidor aceita conexões /sse
  2. Adicionar autenticação por usuário
    Validate Bearer token on each connection; reject unknown.✓ Copiado
    → 401 em tokens inválidos, ok em tokens válidos
  3. Implantar e testar
    Deploy to fly.io. Add the URL to Claude via mcp-remote.✓ Copiado
    → Ferramenta chamável pelo Claude apontando para URL remota

Resultado: Servidor MCP na internet pública com autenticação, pronto para usuários.

Armadilhas
  • SSE atrás de load balancer derruba conexões longas — Configure idle timeouts acima de 5min no LB

Combinações

Combine com outros MCPs para 10× de alavancagem

mcp-go-mark3labs + mcp-python-sdk

Mesmo projeto mas dois SDKs para superfícies diferentes

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

Publicar seu MCP construído no registro oficial

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

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
AddTool name, description, handler Na inicialização do servidor para cada ferramenta 0
AddResource uri, name, handler Expor um recurso legível 0
AddPrompt name, description, handler Expor prompts reutilizáveis 0
ServeStdio () Modo stdio local (mais comum) 0
ServeSSE addr, opts Modo de rede/remoto 0

Custo e limites

O que custa rodar

Cota de API
N/A — biblioteca
Tokens por chamada
N/A
Monetário
Gratuito (MIT)
Dica
Fixe em uma versão minor específica; a API se estabilizou em 2025 mas deltas menores acontecem

Segurança

Permissões, segredos, alcance

Armazenamento de credenciais: O que seus handlers de ferramentas precisarem
Saída de dados: Controlado pelos seus handlers

Solução de problemas

Erros comuns e correções

Ferramenta não visível ao Claude

Verifique se as capacidades foram negociadas; as ferramentas devem ser registradas antes da chamada ServeStdio

Verificar: Use mcp-inspector para confirmar a listagem de ferramentas
Mensagens stdio malformadas

Não imprima no stdout nos seus handlers — esse é o canal JSON-RPC. Use stderr para logs.

SSE cai no idle

Adicione keepalives periódicos; configure timeouts do proxy

Alternativas

mcp-go (SDK) vs. outros

AlternativaQuando usarTroca
mcp-python-sdk (oficial)Você está desenvolvendo em PythonLinguagem diferente; ambos são de primeira classe
TypeScript SDK (oficial)Ecossistema Node/BunPrimeiro em JS; menor margem de performance que Go

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills