MCP.so
Sign In
Servers

MCP Go SDK

@SetiabudiResearch

This SDK provides a Go implementation of the Machine Control Protocol (MCP), enabling bidirectional communication between clients and servers for tool execution, resource access, and prompt handling. Based on

Overview

What is MCP Go SDK?

The MCP Go SDK provides a Go implementation of the Model Context Protocol (MCP), enabling bidirectional communication between clients and servers for tool execution, resource access, and prompt handling. It is designed for Go developers building MCP-compatible applications.

How to use MCP Go SDK?

Install the SDK with go get github.com/SetiabudiResearch/mcp-go-sdk. Then create a server instance using server.NewServer(), add tools, resources, or prompts using the provided methods, and start a transport (stdio, WebSocket, or SSE). See the Quick Start section for a minimal example.

Key features of MCP Go SDK

  • Multiple transport options: stdio, SSE, WebSocket
  • Tool registration with both sync and async execution
  • Resource pattern matching (e.g., files/{path})
  • Prompt template rendering and multi-message prompts
  • JSON-RPC message handling with core MCP types
  • Reflection-based handler invocation

Use cases of MCP Go SDK

  • Build custom MCP servers exposing tools and resources
  • Create a file server that serves files via MCP (see examples/fileserver)
  • Implement a calculator service as an MCP tool (see examples/calculator)
  • Develop an interactive chatbot using MCP prompts (see examples/chatbot)

FAQ from MCP Go SDK

What transports does the MCP Go SDK support?

It supports stdio, WebSocket, and Server-Sent Events (SSE) transports, each configurable with endpoints and settings.

How do I add a tool to the server?

Use srv.AddTool() for synchronous tools or srv.AddAsyncTool() for long-running operations, providing a name, handler function, and description.

What are the runtime dependencies?

The SDK depends only on the Go standard library and the module itself; it is a pure Go implementation.

Can I access resources with dynamic paths?

Yes, resources support pattern matching like files/{path} or api/{version}/{endpoint} with multiple parameters.

Are there complete example applications?

Yes, the repository contains an examples directory with a file server, calculator, and chatbot examples.

Tags

More from Developer Tools