examples/deployment/README.md
Run a go-micro service with MCP gateway, service registry, and distributed tracing in one command.
┌─────────┐ discover ┌──────────┐ RPC ┌─────────┐
│ Agent │ ─────────────→ │ MCP │ ──────────→ │ Your │
│ (Claude) │ MCP :3001 │ Gateway │ │ Service │
└─────────┘ └──────────┘ └─────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Consul │ │ Jaeger │
│ Registry │ │ Tracing │
│ :8500 │ │ :16686 │
└──────────┘ └──────────┘
docker-compose up
| Service | URL |
|---|---|
| MCP Tools | http://localhost:3001/mcp/tools |
| Consul UI | http://localhost:8500 |
| Jaeger UI | http://localhost:16686 |
| Service RPC | http://localhost:9090 |
# 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
# Claude Code can connect to the running MCP gateway
# Add to your Claude Code MCP settings:
{
"mcpServers": {
"my-services": {
"url": "http://localhost:3001/mcp"
}
}
}
Replace the app service's build context with your service directory:
app:
build:
context: ../path/to/your/service
dockerfile: Dockerfile
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.
redis:
image: redis:7-alpine
ports:
- "6379:6379"
Then set MICRO_CACHE_ADDRESS=redis:6379 on your service.