by ktr0731
deprecated: use the official MCP sdk! (https://github.com/modelcontextprotocol/go-sdk) / ⚡ A type-safe, intuitive Go SDK for building MCP servers with ease and confidence
# Add to your Claude Code skills
git clone https://github.com/ktr0731/go-mcpgo‑mcp is a Go SDK for building MCP (Model Context Protocol) servers with ease and confidence. It provides a type‑safe, intuitive interface that makes server development a breeze.
Creating an MCP server with go‑mcp is straightforward!
Below is an example directory structure for a temperature‑conversion MCP server:
.
├── cmd
│ ├── mcpgen
│ │ └── main.go
│ └── temperature
│ └── main.go
├── mcp.gen.go
└── temperature.go
First, create cmd/mcpgen/main.go for code generation. Running this file will automatically generate the necessary code.
package main
import (
"log"
"os"
"path/filepath"
"github.com/ktr0731/go-mcp/codegen"
)
func main() {
// Create output directory
outDir := "."
if err := os.MkdirAll(outDir, 0o755); err != nil {
log.Fatalf("failed to create output directory: %v", err)
}
// Create output file
f, err := os.Create(filepath.Join(outDir, "mcp.gen.go"))
if err != nil {
log.Fatalf("failed to create file: %v", err)
}
defer f.Close()
// Server definition
def := &codegen.ServerDefinition{
Capabilities: codegen.ServerCapabilities{
Tools: &codegen.ToolCapability{},
Logging: &codegen.LoggingCapability{},
},
Implementation: codegen.Implementation{
Name: "Temperature MCP Server",
Version: "1.0.0",
},
// Tool definitions (declared with Go structs)
Tools: []codegen.Tool{
{
Name: "convert_temperature",
Description: "Convert temperature between Celsius and Fahrenheit",
InputSchema: struct {
Temperature float64 `json:"temperature" jsonschema:"description=Temperature value to convert"`
FromUnit string `json:"from_unit" jsonschema:"description=Source temperature unit,enum=celsius,enum=fahrenheit"`
ToUnit string `json:"to_unit" jsonschema:"description=Target temperature unit,enum=c...