Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Mcp Golang

    Write Model Context Protocol servers in few lines of go code. Docs at https://mcpgolang.com . Created by https://metoro.io

    1,149 stars
    Go
    Updated Oct 31, 2025

    Table of Contents

    • Highlights
    • Example Usage
    • Server Example
    • HTTP Server Example
    • Client Example
    • Using with Claude Desktop
    • Contributions
    • Discord
    • Examples
    • Server Feature Implementation
    • Tools
    • Prompts
    • Resources
    • Transports
    • Client

    Table of Contents

    • Highlights
    • Example Usage
    • Server Example
    • HTTP Server Example
    • Client Example
    • Using with Claude Desktop
    • Contributions
    • Discord
    • Examples
    • Server Feature Implementation
    • Tools
    • Prompts
    • Resources
    • Transports
    • Client

    Documentation

    mcp-golang

    mcp-golang is an unofficial implementation of the Model Context Protocol in Go.

    Write MCP servers and clients in golang with a few lines of code.

    Docs at https://mcpgolang.com

    Highlights

    • 🛡️Type safety - Define your tool arguments as native go structs, have mcp-golang handle the rest. Automatic schema generation, deserialization, error handling etc.
    • 🚛 Custom transports - Use the built-in transports (stdio for full feature support, HTTP for stateless communication) or write your own.
    • ⚡ Low boilerplate - mcp-golang generates all the MCP endpoints for you apart from your tools, prompts and resources.
    • 🧩 Modular - The library is split into three components: transport, protocol and server/client. Use them all or take what you need.
    • 🔄 Bi-directional - Full support for both server and client implementations through stdio transport.

    Example Usage

    Install with go get github.com/metoro-io/mcp-golang

    Server Example

    go
    package main
    
    import (
    	"fmt"
    	"github.com/metoro-io/mcp-golang"
    	"github.com/metoro-io/mcp-golang/transport/stdio"
    )
    
    // Tool arguments are just structs, annotated with jsonschema tags
    // More at https://mcpgolang.com/tools#schema-generation
    type Content struct {
    	Title       string  `json:"title" jsonschema:"required,description=The title to submit"`
    	Description *string `json:"description" jsonschema:"description=The description to submit"`
    }
    type MyFunctionsArguments struct {
    	Submitter string  `json:"submitter" jsonschema:"required,description=The name of the thing calling this tool (openai, google, claude, etc)"`
    	Content   Content `json:"content" jsonschema:"required,description=The content of the message"`
    }
    
    func main() {
    	done := make(chan struct{})
    
    	server := mcp_golang.NewServer(stdio.NewStdioServerTransport())
    	err := server.RegisterTool("hello", "Say hello to a person", func(arguments MyFunctionsArguments) (*mcp_golang.ToolResponse, error) {
    		return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(fmt.Sprintf("Hello, %server!", arguments.Submitter))), nil
    	})
    	if err != nil {
    		panic(err)
    	}
    
    	err = server.RegisterPrompt("promt_test", "This is a test prompt", func(arguments Content) (*mcp_golang.PromptResponse, error) {
    		return mcp_golang.NewPromptResponse("description", mcp_golang.NewPromptMessage(mcp_golang.NewTextContent(fmt.Sprintf("Hello, %server!", arguments.Title)), mcp_golang.RoleUser)), nil
    	})
    	if err != nil {
    		panic(err)
    	}
    
    	err = server.RegisterResource("test://resource", "resource_test", "This is a test resource", "application/json", func() (*mcp_golang.ResourceResponse, error) {
    		return mcp_golang.NewResourceResponse(mcp_golang.NewTextEmbeddedResource("test://resource", "This is a test resource", "application/json")), nil
    	})
    
    	err = server.Serve()
    	if err != nil {
    		panic(err)
    	}
    
    	 0 {
            log.Printf("Result: %s", response.Content[0].TextContent.Text)
        }
    }

    Using with Claude Desktop

    Create a file in ~/Library/Application Support/Claude/claude_desktop_config.json with the following contents:

    json
    {
    "mcpServers": {
      "golang-mcp-server": {
          "command": "",
          "args": [],
          "env": {}
        }
      }
    }

    Contributions

    Contributions are more than welcome! Please check out our contribution guidelines.

    Discord

    Got any suggestions, have a question on the api or usage? Ask on the discord server.

    A maintainer will be happy to help you out.

    Examples

    Some more extensive examples using the library found here:

    • **Metoro** - Query and interact with kubernetes environments monitored by Metoro

    Open a PR to add your own projects!

    Server Feature Implementation

    Tools

    • [x] Tool Calls
    • [x] Native go structs as arguments
    • [x] Programatically generated tool list endpoint
    • [x] Change notifications
    • [x] Pagination

    Prompts

    • [x] Prompt Calls
    • [x] Programatically generated prompt list endpoint
    • [x] Change notifications
    • [x] Pagination

    Resources

    • [x] Resource Calls
    • [x] Programatically generated resource list endpoint
    • [x] Change notifications
    • [x] Pagination

    Transports

    • [x] Stdio - Full support for all features including bidirectional communication
    • [x] HTTP - Stateless transport for simple request-response scenarios (no notifications support)
    • [x] Gin - HTTP transport with Gin framework integration (stateless, no notifications support)
    • [x] SSE
    • [x] Custom transport support
    • [ ] HTTPS with custom auth support - in progress. Not currently part of the spec but we'll be adding experimental support for it.

    Client

    • [x] Call tools
    • [x] Call prompts
    • [x] Call resources
    • [x] List tools
    • [x] List prompts
    • [x] List resources

    Similar MCP

    Based on tags & features

    • MC

      Mcpjungle

      Go·
      617
    • AN

      Anyquery

      Go·
      1.4k
    • KU

      Kubernetes Mcp Server

      Go·
      700
    • YU

      Yutu

      Go·
      317

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • MC

      Mcpjungle

      Go·
      617
    • AN

      Anyquery

      Go·
      1.4k
    • KU

      Kubernetes Mcp Server

      Go·
      700
    • YU

      Yutu

      Go·
      317

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k