1
0
mirror of https://github.com/go-micro/go-micro.git synced 2026-04-30 19:15:24 +02:00
Files
Asim Aslam c800dd3729 feat: add deployment example, workflow example, and MCP benchmarks (#2877)
Docker Compose deployment example (examples/deployment/):
- docker-compose.yml with Consul, MCP gateway, Jaeger tracing
- Dockerfile and Dockerfile.gateway for multi-stage builds
- README with architecture diagram and customization guide

Cross-service workflow example (examples/mcp/workflow/):
- Inventory, Orders, Notifications services
- Shows agents orchestrating multi-step workflows from natural language
- Stock check → reserve → order → notify in a single agent conversation

MCP gateway benchmark suite (gateway/mcp/benchmark_test.go):
- ListTools: ~20μs (10 tools), ~48μs (100 tools)
- Tool lookup: ~19ns (zero-alloc, scales to 500+ tools)
- Auth inspect: ~7ns, scope check: ~16ns
- Rate limiter: ~111ns per check
- JSON encode/decode: ~1.5-2μs per tool

Updated examples README with new examples index.

https://claude.ai/code/session_01GkduEhcrqcG45rdfYh8dAc

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 11:40:10 +00:00
..

Docker Compose Deployment Example

Run a go-micro service with MCP gateway, service registry, and distributed tracing in one command.

Architecture

┌─────────┐     discover     ┌──────────┐     RPC      ┌─────────┐
│  Agent   │ ─────────────→  │   MCP    │ ──────────→  │  Your   │
│ (Claude) │    MCP :3001    │ Gateway  │              │ Service │
└─────────┘                  └──────────┘              └─────────┘
                                  │                        │
                                  ▼                        ▼
                             ┌──────────┐           ┌──────────┐
                             │  Consul  │           │  Jaeger  │
                             │ Registry │           │ Tracing  │
                             │   :8500  │           │  :16686  │
                             └──────────┘           └──────────┘

Quick Start

docker-compose up

Endpoints

Service URL
MCP Tools http://localhost:3001/mcp/tools
Consul UI http://localhost:8500
Jaeger UI http://localhost:16686
Service RPC http://localhost:9090

Test

# List MCP tools
curl http://localhost:3001/mcp/tools | jq

# Call a tool
curl -X POST http://localhost:3001/mcp/call \
  -H 'Content-Type: application/json' \
  -d '{"tool": "myservice.Handler.Method", "arguments": {"key": "value"}}'

# View traces in Jaeger
open http://localhost:16686

Connect Claude Code

# Claude Code can connect to the running MCP gateway
# Add to your Claude Code MCP settings:
{
  "mcpServers": {
    "my-services": {
      "url": "http://localhost:3001/mcp"
    }
  }
}

Customizing

Add Your Service

Replace the app service's build context with your service directory:

app:
  build:
    context: ../path/to/your/service
    dockerfile: Dockerfile

Add More Services

users:
  build: ./users
  environment:
    MICRO_REGISTRY: consul
    MICRO_REGISTRY_ADDRESS: consul:8500

orders:
  build: ./orders
  environment:
    MICRO_REGISTRY: consul
    MICRO_REGISTRY_ADDRESS: consul:8500

All services register with Consul. The MCP gateway discovers them automatically.

Add Redis Cache

redis:
  image: redis:7-alpine
  ports:
    - "6379:6379"

Then set MICRO_CACHE_ADDRESS=redis:6379 on your service.

Production Considerations

  • Add health checks to each service
  • Use named volumes for Consul data persistence
  • Configure rate limiting on the MCP gateway
  • Set up TLS between services
  • Use secrets management for API keys