chore: import upstream snapshot with attribution
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Multi-stage build for a go-micro service
|
||||
FROM golang:1.22-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -o /service .
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk --no-cache add ca-certificates
|
||||
COPY --from=builder /service /service
|
||||
ENTRYPOINT ["/service"]
|
||||
@@ -0,0 +1,13 @@
|
||||
# Standalone MCP gateway
|
||||
FROM golang:1.22-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -o /gateway ./cmd/gateway
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk --no-cache add ca-certificates
|
||||
COPY --from=builder /gateway /gateway
|
||||
ENTRYPOINT ["/gateway"]
|
||||
@@ -0,0 +1,116 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# Claude Code can connect to the running MCP gateway
|
||||
# Add to your Claude Code MCP settings:
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"my-services": {
|
||||
"url": "http://localhost:3001/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Customizing
|
||||
|
||||
### Add Your Service
|
||||
|
||||
Replace the `app` service's build context with your service directory:
|
||||
|
||||
```yaml
|
||||
app:
|
||||
build:
|
||||
context: ../path/to/your/service
|
||||
dockerfile: Dockerfile
|
||||
```
|
||||
|
||||
### Add More Services
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```yaml
|
||||
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
|
||||
@@ -0,0 +1,65 @@
|
||||
# Go Micro + MCP Gateway deployment with Docker Compose
|
||||
#
|
||||
# This runs:
|
||||
# 1. Consul — service registry (discovery)
|
||||
# 2. App — your go-micro service(s)
|
||||
# 3. MCP Gateway — standalone MCP gateway connected to Consul
|
||||
# 4. Jaeger — distributed tracing UI
|
||||
#
|
||||
# Usage:
|
||||
# docker-compose up
|
||||
#
|
||||
# Endpoints:
|
||||
# MCP Tools: http://localhost:3001/mcp/tools
|
||||
# Consul UI: http://localhost:8500
|
||||
# Jaeger UI: http://localhost:16686
|
||||
# Service: http://localhost:9090 (RPC)
|
||||
|
||||
services:
|
||||
# --- Service Registry ---
|
||||
consul:
|
||||
image: consul:1.15
|
||||
ports:
|
||||
- "8500:8500"
|
||||
command: agent -server -bootstrap-expect=1 -ui -client=0.0.0.0
|
||||
|
||||
# --- Your Go Micro Service ---
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "9090:9090"
|
||||
environment:
|
||||
MICRO_REGISTRY: consul
|
||||
MICRO_REGISTRY_ADDRESS: consul:8500
|
||||
MICRO_SERVER_ADDRESS: :9090
|
||||
depends_on:
|
||||
- consul
|
||||
restart: unless-stopped
|
||||
|
||||
# --- MCP Gateway (standalone) ---
|
||||
mcp-gateway:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.gateway
|
||||
ports:
|
||||
- "3001:3001"
|
||||
environment:
|
||||
MICRO_REGISTRY: consul
|
||||
MICRO_REGISTRY_ADDRESS: consul:8500
|
||||
MCP_ADDRESS: :3001
|
||||
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
|
||||
depends_on:
|
||||
- consul
|
||||
- app
|
||||
restart: unless-stopped
|
||||
|
||||
# --- Tracing ---
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.53
|
||||
ports:
|
||||
- "16686:16686" # UI
|
||||
- "4318:4318" # OTLP HTTP
|
||||
environment:
|
||||
COLLECTOR_OTLP_ENABLED: "true"
|
||||
Reference in New Issue
Block a user