Pular para o conteúdo
Skillpedia
APIs e servidores (backend)40 mil · #5175

go-mcp-server-generator

Ajuda seu agente a criar um servidor em Go. Ele monta a estrutura do projeto, as dependências e a implementação básica usando o SDK oficial.

O que ela faz

Este agente cria um projeto de servidor em Go para o Protocolo de Contexto de Modelo (MCP). Ele configura a estrutura básica, adiciona as ferramentas necessárias e prepara o servidor para funcionar.

Quando usar

  • ✓Quando você precisa criar um novo servidor MCP em Go.
  • ✓Ao iniciar um projeto que usa o SDK oficial do MCP.
  • ✓Para ter um ponto de partida estruturado para um servidor MCP.

Exemplo do que pedir para a IA

“Crie um servidor MCP em Go chamado 'meu-servidor-mcp' com as ferramentas 'calculadora' e 'verificador-de-texto'.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/go-mcp-server-generator/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/go-mcp-server-generator/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele usa o SDK oficial do Go para MCP e gera arquivos como 'main.go', 'go.mod' e pastas para ferramentas e configuração. Ele também inclui um README com instruções.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill go-mcp-server-generator

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/go-mcp-server-generator/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Gerador de Projetos de Servidor Go MCP

Gere um projeto de servidor Model Context Protocol (MCP) completo e pronto para produção em Go.

Requisitos do Projeto

Você criará um servidor MCP em Go com:

  1. Estrutura do Projeto: Layout adequado de módulo Go
  2. Dependências: SDK oficial do MCP e pacotes necessários
  3. Configuração do Servidor: Servidor MCP configurado com transportes
  4. Ferramentas: Pelo menos 2-3 ferramentas úteis com entradas/saídas tipadas
  5. Tratamento de Erros: Tratamento de erros adequado e uso de contexto
  6. Documentação: README com instruções de configuração e uso
  7. Testes: Estrutura básica de testes

Estrutura do Template

myserver/
├── go.mod
├── go.sum
├── main.go
├── tools/
│   ├── tool1.go
│   └── tool2.go
├── resources/
│   └── resource1.go
├── config/
│   └── config.go
├── README.md
└── main_test.go

Template go.mod

module github.com/yourusername/{{PROJECT_NAME}}

go 1.23

require (
    github.com/modelcontextprotocol/go-sdk v1.0.0
)

Template main.go

package main

import (
    "context"
    "log"
    "os"
    "os/signal"
    "syscall"

    "github.com/modelcontextprotocol/go-sdk/mcp"
    "github.com/yourusername/{{PROJECT_NAME}}/config"
    "github.com/yourusername/{{PROJECT_NAME}}/tools"
)

func main() {
    cfg := config.Load()
    
    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()

    // Handle graceful shutdown
    sigCh := make(chan os.Signal, 1)
    signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
    go func() {
        <-sigCh
        log.Println("Shutting down...")
        cancel()
    }()

    // Create server
    server := mcp.NewServer(
        &mcp.Implementation{
            Name:    cfg.ServerName,
            Version: cfg.Version,
        },
        &mcp.Options{
            Capabilities: &mcp.ServerCapabilities{
                Tools:     &mcp.ToolsCapability{},
                Resources: &mcp.ResourcesCapability{},
                Prompts:   &mcp.PromptsCapability{},
            },
        },
    )

    // Register tools
    tools.RegisterTools(server)

    // Run server
    transport := &mcp.StdioTransport{}
    if err := server.Run(ctx, transport); err != nil {
        log.Fatalf("Server error: %v", err)
    }
}

Template tools/tool1.go

package tools

import (
    "context"
    "fmt"

    "github.com/modelcontextprotocol/go-sdk/mcp"
)

type Tool1Input struct {
    Param1 string `json:"param1" jsonschema:"required,description=First parameter"`
    Param2 int    `json:"param2,omitempty" jsonschema:"description=Optional second parameter"`
}

type Tool1Output struct {
    Result string `json:"result" jsonschema:"description=The result of the operation"`
    Status string `json:"status" jsonschema:"description=Operation status"`
}

func Tool1Handler(ctx context.Context, req *mcp.CallToolRequest, input Tool1Input) (
    *mcp.CallToolResult,
    Tool1Output,
    error,
) {
    // Validate input
    if input.Param1 == "" {
        return nil, Tool1Output{}, fmt.Errorf("param1 is required")
    }

    // Check context
    if ctx.Err() != nil {
        return nil, Tool1Output{}, ctx.Err()
    }

    // Perform operation
    result := fmt.Sprintf("Processed: %s", input.Param1)

    return nil, Tool1Output{
        Result: result,
        Status: "success",
    }, nil
}

func RegisterTool1(server *mcp.Server) {
    mcp.AddTool(server,
        &mcp.Tool{
            Name:        "tool1",
            Description: "Description of what tool1 does",
        },
        Tool1Handler,
    )
}

Template tools/registry.go

package tools

import "github.com/modelcontextprotocol/go-sdk/mcp"

func RegisterTools(server *mcp.Server) {
    RegisterTool1(server)
    RegisterTool2(server)
    // Register additional tools here
}

Template config/config.go

package config

import "os"

type Config struct {
    ServerName string
    Version    string
    LogLevel   string
}

func Load() *Config {
    return &Config{
        ServerName: getEnv("SERVER_NAME", "{{PROJECT_NAME}}"),
        Version:    getEnv("VERSION", "v1.0.0"),
        LogLevel:   getEnv("LOG_LEVEL", "info"),
    }
}

func getEnv(key, defaultValue string) string {
    if value := os.Getenv(key); value != "" {
        return value
    }
    return defaultValue
}

Template main_test.go

package main

import (
    "context"
    "testing"

    "github.com/yourusername/{{PROJECT_NAME}}/tools"
)

func TestTool1Handler(t *testing.T) {
    ctx := context.Background()

…
Perguntas frequentes

O que é MCP?

MCP significa Model Context Protocol. É uma forma de criar serviços que podem interagir com modelos de IA.

O que são 'ferramentas' neste contexto?

Ferramentas são funções específicas que seu servidor MCP pode executar, como fazer um cálculo ou processar texto.

O que significa 'produção-pronta'?

Significa que o código gerado segue boas práticas e está pronto para ser usado em um ambiente real, com tratamento de erros e testes básicos.

Detalhes

Descrição original do autor

Generate a complete Go MCP server project with proper structure, dependencies, and implementation using the official github.com/modelcontextprotocol/go-sdk.

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5175
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas