Files
micro--go-micro/examples/deployment
wehub-resource-sync e071084ebe
govulncheck / govulncheck (push) Waiting to run
Harness (E2E) / Harnesses (mock LLM) (push) Waiting to run
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Run Tests / Unit Tests (push) Waiting to run
Run Tests / Etcd Integration Tests (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:40:33 +08: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