Go Micro Logo Go Micro

Model Context Protocol (MCP)

Go Micro provides built-in support for the Model Context Protocol (MCP), enabling AI agents like Claude to discover and interact with your microservices as tools.

Overview

MCP gateway automatically exposes your microservices as AI-accessible tools through:

Quick Start

1. Add Documentation to Your Service

Simply write Go doc comments on your handler methods:

package main

import (
    "context"
    "go-micro.dev/v5"
)

type GreeterService struct{}

// SayHello greets a person by name. Returns a friendly greeting message.
//
// @example {"name": "Alice"}
func (g *GreeterService) SayHello(ctx context.Context, req *HelloRequest, rsp *HelloResponse) error {
    rsp.Message = "Hello " + req.Name
    return nil
}

type HelloRequest struct {
    Name string `json:"name" description:"Person's name to greet"`
}

type HelloResponse struct {
    Message string `json:"message" description:"Greeting message"`
}

func main() {
    service := micro.New("greeter")
    service.Init()

    // Register handler - docs extracted automatically from comments!
    service.Handle(new(GreeterService))

    service.Run()
}

That’s it! Documentation is automatically extracted from your Go comments.

2. Start the MCP Server

Option A: Stdio Transport (for Claude Code)

# Start your service
go run main.go

# In another terminal, start MCP server with stdio
micro mcp serve

Add to Claude Code config (`~/.claude/claude_desktop_config.json`):

{
  "mcpServers": {
    "go-micro": {
      "command": "micro",
      "args": ["mcp", "serve"]
    }
  }
}

Option B: HTTP Transport (for web agents)

Start MCP gateway with HTTP/SSE:

micro mcp serve --address :3000

Access tools at `http://localhost:3000/mcp/tools`

3. Use Your Service with AI

Claude can now discover and call your service:

User: "Say hello to Bob using the greeter service"

Claude: [calls greeter.GreeterService.SayHello with {"name": "Bob"}]
       "Hello Bob"

Features

Automatic Documentation Extraction

Go Micro automatically extracts documentation from your handler method comments at registration time. No extra code needed!

For complete documentation details, see the gateway/mcp package documentation.

Authentication & Scopes for MCP Tools

MCP tool calls go through the same authentication and scope enforcement as regular API calls. This means you can control which tokens (and therefore which users, services, or AI agents) can invoke which tools.

Restricting MCP Tool Access

  1. Set endpoint scopes — Visit /auth/scopes and set required scopes on service endpoints. For example, set internal on billing.Billing.Charge to restrict it.

  2. Create scoped tokens — Visit /auth/tokens and create tokens with specific scopes:
    • A token with scope internal can call endpoints requiring internal
    • A token with scope * has unrestricted access (admin)
    • A token with no matching scope gets 403 Forbidden
  3. Use the token — Pass it in the Authorization header for API/MCP calls:
# List available MCP tools (requires valid token)
curl http://localhost:8080/api/mcp/tools \
  -H "Authorization: Bearer <token>"

# Call a specific tool (scope-checked)
curl -X POST http://localhost:8080/api/mcp/call \
  -H "Authorization: Bearer <token>" \
  -d '{"tool":"greeter.GreeterService.SayHello","input":{"name":"World"}}'

Common MCP Token Patterns

Use Case Token Scopes What It Can Do
Internal tooling internal Call endpoints tagged with internal scope
Production AI agent greeter, users Only call greeter and user service endpoints
Admin / debugging * Full access to all tools
Read-only agent readonly Call endpoints tagged with readonly scope

Agent Playground

The agent playground at /agent uses the logged-in user’s session token. Scope checks apply based on the scopes of the user’s account. The default admin user has * scope (full access).

MCP Command Line

The `micro mcp` command provides tools for working with MCP:

# Start MCP server (stdio by default)
micro mcp serve

# Start with HTTP transport
micro mcp serve --address :3000

# List available tools
micro mcp list

# Test a specific tool
micro mcp test greeter.GreeterService.SayHello

Transport Options

See examples for complete usage.

Examples

See `examples/mcp/documented` for a complete working example.

Learn More


← Previous
Next →