In 2025, I delivered a workshop at the iThome Taiwan Cloud Summit in Taipei, titled “Step-by-Step Guide to Building MCP Server and Client with Golang (Model Context Protocol)”. The goal of this workshop was to help developers understand how to implement the MCP protocol using Golang, providing practical code examples and hands-on guidance. I have organized all workshop materials into a GitHub repository, which you can find at go-training/mcp-workshop. For detailed workshop content, please refer to this link.
Workshop Content
This workshop is composed of a series of practical modules, each demonstrating how to build an MCP (Model Context Protocol) server and its foundational infrastructure in Go.
- Provides a minimal MCP server implementation supporting both stdio and HTTP, using Gin. Demonstrates server setup, tool registration, and best practices for logging and error handling.
- Key features: Dual stdio/HTTP channels, Gin integration, extensible tool registration
- Supports transparent authentication token passthrough for HTTP and stdio, explaining context injection and tool development for authenticated requests.
- Key features: Token passthrough, context injection, authentication tool examples
- An MCP server protected by OAuth 2.0, demonstrating authorization, token, and resource metadata endpoints, including context token handling and tools for API authentication.
- Key features: OAuth 2.0 flow, protected endpoints, context token propagation, demo tools
- Observability and tracing for MCP servers, integrating OpenTelemetry and structured logging, including metrics, detailed tracing, and error reporting.
- Key features: Tracing, structured logging, observability middleware, error reporting
- A proxy server that aggregates multiple MCP servers into a single endpoint. Supports real-time streaming, centralized configuration, and enhanced security.
- Key features: Unified entry point, SSE/HTTP streaming, flexible configuration, improved security
Slides
The slides for this workshop have been uploaded to Speaker Deck and can be viewed on the Building MCP Model Context Protocol with Golang Speaker Deck page. During the 90-minute workshop, there was no time for hands-on practice, mainly because the OAuth flow in MCP is quite complex and required a significant portion of the session to explain. I will write a separate article to introduce how to implement the OAuth flow in Golang.
For the complete OAuth token flow, see the MCP specification. The detailed process can be seen in the simplified diagram below:
I will explain in detail how to implement this flow in Golang in a future article.