* feat(cli): add CRUD, pub/sub, and API gateway templates for micro new
Add --template flag to 'micro new' with three preset templates:
- crud: CRUD service with Create/Read/Update/Delete/List, in-memory
store with sync.RWMutex, UUID generation, pagination, and doc
comments with @example tags for MCP tool discovery.
- pubsub: Event-driven service with Publish/Stats RPCs and a
Subscribe method that hooks into the broker. Includes event
types with ID, type, source, data, and timestamp.
- api: API gateway service with Health and Endpoint RPCs, an
internal HTTP route table, and a response recorder for
proxying requests through RPC.
All templates include MCP-ready doc comments and work with
--no-mcp. The default template (no flag) is unchanged.
Usage:
micro new myservice --template crud
micro new myservice --template pubsub
micro new myservice --template api
* fix(ai): update Atlas Cloud provider to use actual API formats
Fix the Atlas Cloud image generation to use their real async API:
POST /api/v1/model/generateImage → poll /api/v1/model/prediction/{id}
instead of the OpenAI-compatible endpoint which doesn't exist.
Add Quality and OutputFormat fields to ai.ImageRequest for
provider-specific image parameters.
Update default text model from llama-3.3-70b (doesn't exist) to
deepseek-ai/DeepSeek-V3-0324 (their flagship model). Update
default image model to openai/gpt-image-2/text-to-image.
* feat(website): add AI-generated images to landing page, docs, and blog
Generate 5 images via Atlas Cloud's image API (gpt-image-2) to
elevate the website experience:
- hero.png: microservices network graph for landing page
- architecture.png: registry + broker architecture diagram
- mcp-agent.png: AI agent calling services via MCP
- developer-experience.png: terminal showing micro run/chat
- blog-atlas.png: Atlas Cloud unified API illustration
Add visual sections to the landing page with architecture,
MCP integration, and developer experience showcases. Add
images to docs index, MCP docs, and Atlas Cloud blog post.
All images resized to 1200px wide and optimized for web.
Generated using Atlas Cloud sponsor credits.
* feat(website): redesign landing page and add images to docs
Redesign the landing page from a centered card layout to a
full-width modern site with:
- Top navigation bar
- Hero section with gradient background and CTA buttons
- Full-width image showcase sections
- Two-column layout for architecture, MCP, and DX sections
- Feature grid with 6 capabilities
- Footer with links
- Responsive breakpoints for mobile
Generate 3 more images via Atlas Cloud for docs:
- getting-started.png for the getting started guide
- deployment.png for the deployment guide
- data-model.png for the data model docs
Add images to getting-started.md, model.md, and deployment.md.
---------
Co-authored-by: Claude <noreply@anthropic.com>
5.3 KiB
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:
- Automatic service discovery via the registry
- Dynamic tool generation from service endpoints
- Stdio transport for local AI tools (Claude Code, etc.)
- HTTP/SSE transport for web-based agents
- Automatic documentation extraction from Go comments
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
-
Set endpoint scopes — Visit
/auth/scopesand set required scopes on service endpoints. For example, setinternalonbilling.Billing.Chargeto restrict it. -
Create scoped tokens — Visit
/auth/tokensand create tokens with specific scopes:- A token with scope
internalcan call endpoints requiringinternal - A token with scope
*has unrestricted access (admin) - A token with no matching scope gets
403 Forbidden
- A token with scope
-
Use the token — Pass it in the
Authorizationheader for API/MCP calls:
# List available MCP tools (requires valid token)
curl http://localhost:8080/mcp/tools \
-H "Authorization: Bearer <token>"
# Call a specific tool (scope-checked)
curl -X POST http://localhost:8080/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
- Stdio - For local AI tools (Claude Code, recommended)
- HTTP/SSE - For web-based agents
See examples for complete usage.
Examples
See `examples/mcp/documented` for a complete working example.