Como Criar Serviços MCP com Go: Guia Completo para Agentes de IA
O Model Context Protocol (MCP) é um padrão aberto que permite conectar aplicações de IA (como Claude e ChatGPT) a fontes de dados externas, ferramentas e fluxos de trabalho. Imagine o MCP como o "USB-C para IAs": um padrão único que permite que qualquer agente se conecte a qualquer servidor de contexto sem a necessidade de integrações customizadas para cada nova ferramenta.
Neste guia, vamos explorar por que a linguagem Go (Golang) é uma escolha excepcional para construir esses serviços e forneceremos um passo a passo detalhado para você criar o seu primeiro servidor MCP.
Por que usar Go para Serviços MCP?
A escolha da linguagem impacta diretamente a performance e a facilidade de deploy do seu agente. Go se destaca por vários motivos:
- Performance e Eficiência: Go oferece a performance de linguagens compiladas com a simplicidade de linguagens de alto nível. Para serviços que precisam de baixa latência ao responder a um agente, Go é ideal.
- Binários Estáticos: Go compila tudo em um único arquivo binário. Isso simplifica absurdamente o deploy em containers ou servidores, eliminando a necessidade de instalar runtimes pesados (como Node.js ou Python) no ambiente de produção.
- Concorrência Nativa: Com Goroutines e Channels, Go lida com múltiplas requisições de agentes simultaneamente de forma extremamente eficiente.
- Tipagem Forte: O sistema de tipos de Go ajuda a evitar erros comuns em tempo de execução, algo crítico quando você está definindo esquemas de ferramentas que a IA deve seguir rigorosamente.
Passo a Passo: Criando seu Servidor MCP em Go
Para este exemplo, vamos criar um servidor simples de "Saudações" que expõe uma ferramenta para o agente.
1. Pré-requisitos
- Go instalado (versão 1.21 ou superior).
- Um editor de código (VS Code, GoLand, etc.).
2. Inicializando o Projeto
Crie uma nova pasta para o seu projeto e inicialize o módulo Go:
mkdir mcp-go-server
cd mcp-go-server
go mod init mcp-go-server
3. Instalando o SDK Oficial
O MCP possui um SDK oficial para Go que simplifica a implementação do protocolo. Instale-o com:
go get github.com/modelcontextprotocol/go-sdk/mcp
4. Codificando o Servidor
Crie um arquivo chamado main.go e adicione o seguinte código:
package main
import (
"context"
"log"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
// Input define os parâmetros que a IA deve enviar para a ferramenta
type Input struct {
Name string `json:"name" jsonschema:"o nome da pessoa a ser saudada"`
}
// Output define a estrutura de resposta da ferramenta
type Output struct {
Greeting string `json:"greeting" jsonschema:"a saudação a ser entregue ao usuário"`
}
// SayHi é a função lógica da nossa ferramenta
func SayHi(ctx context.Context, req *mcp.CallToolRequest, input Input) (*mcp.CallToolResult, Output, error) {
return nil, Output{Greeting: "Olá, " + input.Name + "! Bem-vindo ao mundo do MCP com Go!"}, nil
}
func main() {
// 1. Criar a instância do servidor com nome e versão
server := mcp.NewServer(&mcp.Implementation{
Name: "GreeterServer",
Version: "v1.0.0",
}, nil)
// 2. Adicionar a ferramenta ao servidor
mcp.AddTool(server, &mcp.Tool{
Name: "greet",
Description: "Envia uma saudação personalizada para o usuário",
}, SayHi)
// 3. Executar o servidor via Stdio (entrada/saída padrão)
// Este é o transporte mais comum para agentes locais
if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil {
log.Fatal(err)
}
}
5. Compilando e Executando
Compile o seu servidor para gerar o binário:
go build -o mcp-server main.go
6. Integrando com o Agente (Ex: Claude Desktop)
Para testar, você deve configurar o seu cliente de IA para usar este binário. No arquivo de configuração do Claude Desktop (claude_desktop_config.json), adicione:
{
"mcpServers": {
"go-greeter": {
"command": "/caminho/para/seu/projeto/mcp-server",
"args": []
}
}
}
Considerações Finais
Agora você tem um servidor MCP funcional escrito em Go! A partir daqui, você pode expandir seu serviço para:
- Conectar-se a bancos de dados SQL.
- Consumir APIs externas de terceiros.
- Ler e manipular arquivos locais para fornecer contexto ao agente.
A combinação de Go com MCP permite que você crie ecossistemas de agentes robustos, rápidos e extremamente fáceis de distribuir. Bons códigos!