go-mcp-server

mcp
Security Audit
Warn
Health Warn
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This project is a Model Context Protocol (MCP) server written in Go from scratch, designed primarily as an educational exercise. It demonstrates how to implement the MCP specification by exposing a set of tools, resources, and prompts that serve information about various types of tea.

Security Assessment
Overall Risk: Low. The static code scan reviewed 12 files and found no dangerous patterns, hardcoded secrets, or requests for risky permissions. The tool does not appear to access sensitive local data or execute arbitrary shell commands. Network access is minimal and user-controlled: the server can run locally via standard input/output (stdio) or expose an HTTP endpoint on a specified port. As long as you do not expose the HTTP port to the public internet without authentication, the security risk is negligible.

Quality Assessment
The codebase is open-source under the permissive Apache-2.0 license and the repository appears to be actively maintained with recent pushes. However, the project has low community visibility, currently sitting at only 6 GitHub stars. More importantly, the developer explicitly states in the documentation that this was built for learning purposes with AI assistance, and advises against using it in production. Community trust is difficult to gauge at this scale, and the author recommends using official SDKs or established alternatives for real-world applications.

Verdict
Safe to use for learning, testing, and local experimentation, but use established alternatives for production workloads.
SUMMARY

A Model Context Protocol (MCP) server implementation from scratch in Go. Made for learning purposes only

README.md

Go MCP Server

A Model Context Protocol (MCP) server implementation in Go that provides tea information through tools, resources, and prompts.

Note: This project is for learning purposes only. I built this MCP server from scratch to understand the Model Context Protocol specification. For production use, consider using mcp-go or wait for the official MCP Go SDK to be released (expected end of June 2025).

This MCP server, especially the mcp package, was written with the help of Claude Code using the latest version of the MCP specification (2025-06-21).

Features

  • MCP 2025-03-26 Specification Compliant
  • Multiple Transports: stdio (default), http with SSE
  • Tea Collection: 8 premium teas (Green, Black, Oolong, White)
  • Full MCP Capabilities: Tools, Resources, and Prompts

Quick Start

# Build the binary
go build ./cmd/go-mcp-server

# Run with stdio transport (default)
./go-mcp-server

# Run with HTTP transport
./go-mcp-server -transport http -port 8080

# Test with MCP Inspector
echo '{"jsonrpc":"2.0","method":"initialize","id":1}' | ./go-mcp-server

Usage

The server binary accepts several command line arguments to configure its behavior:

./go-mcp-server [options]

Command Line Arguments

Argument Type Default Description
-transport string stdio Transport protocol to use (stdio or http)
-port int 8080 HTTP server port (only used with -transport http)
-request-timeout duration 30s Maximum time to wait for request processing
-shutdown-timeout duration 10s Maximum time to wait for graceful shutdown
-log-level string info Log level (debug, info, warn, error)
-log-json bool false Output logs in JSON format
-server-name string MCP Server Server name returned in initialization
-server-version string 1.0.0 Server version returned in initialization

Examples

# Default stdio transport with debug logging
./go-mcp-server -log-level debug

# HTTP transport on custom port with JSON logs
./go-mcp-server -transport http -port 9000 -log-json

# Custom timeouts for production use
./go-mcp-server -transport http -request-timeout 60s -shutdown-timeout 30s

# Custom server identification
./go-mcp-server -server-name "My Tea Server" -server-version "2.0.0"

MCP Capabilities

Tools

  • getTeaNames - List all available teas
  • getTeaInfo - Get detailed tea information and brewing instructions
  • getTeasByType - Filter teas by type (Green Tea, Black Tea, Oolong Tea, White Tea)

Resources

  • menu://tea - Complete tea collection with prices and details

Prompts

  • tea_recommendation - Personalized recommendations based on mood/preferences
  • brewing_guide - Detailed brewing instructions for specific teas
  • tea_pairing - Food pairing suggestions

Tea Collection Example

Try these commands to explore the tea collection:

# List all available teas
echo '{"jsonrpc":"2.0","method":"tools/call","id":1,"params":{"name":"getTeaNames","arguments":{}}}' | ./go-mcp-server

# Get information about a specific tea
echo '{"jsonrpc":"2.0","method":"tools/call","id":2,"params":{"name":"getTeaInfo","arguments":{"name":"earl-grey"}}}' | ./go-mcp-server

# Get all oolong teas
echo '{"jsonrpc":"2.0","method":"tools/call","id":3,"params":{"name":"getTeasByType","arguments":{"type":"Oolong Tea"}}}' | ./go-mcp-server

# Read the complete tea menu resource
echo '{"jsonrpc":"2.0","method":"resources/read","id":4,"params":{"uri":"menu://tea"}}' | ./go-mcp-server

# Get a brewing guide for gyokuro
echo '{"jsonrpc":"2.0","method":"prompts/get","id":5,"params":{"name":"brewing_guide","arguments":{"tea_name":"gyokuro"}}}' | ./go-mcp-server

Web UI

When using HTTP transport, a web status page is available at the root path (/) of the server. This page shows server information, active sessions, and available endpoints.

MCP Client Configuration

Claude Desktop / VS Code / Other MCP Clients

Add this configuration to your MCP client settings:

{
  "mcpServers": {
    "tea": {
      "command": "podman",
      "args": ["run", "-i", "--rm", "ghcr.io/cbrgm/go-mcp-server:v1"]
    }
  }
}

For local development, you can also use:

{
  "mcpServers": {
    "tea": {
      "command": "go",
      "args": ["run", "./cmd/go-mcp-server"],
      "cwd": "/path/to/go-mcp-server"
    }
  }
}

Testing with MCP Inspector

  1. Install: npm install -g @modelcontextprotocol/inspector
  2. Start: npx @modelcontextprotocol/inspector
  3. Connect with command: go run ./cmd/go-mcp-server

License

Apache 2.0

Reviews (0)

No results found