
Una implementación de un servidor MCP vulnerable utilizando mcp-go
Servidor MCP de atención al cliente para asistentes de codificación con IA. Un único binario de Go, autenticación por niveles, 19 herramientas en 4 niveles de rol.
Construido con mcp-go.
Ejecuta todo en un contenedor aislado. Claude Code viene preinstalado y el servidor MCP se inicia automáticamente.
# Build
docker build -t otto-support .
# Run with your API key
docker run -it -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" otto-support
# Or with OAuth token
docker run -it -e CLAUDE_CODE_OAUTH_TOKEN="$CLAUDE_CODE_OAUTH_TOKEN" otto-support
Claude Code se inicia dentro del contenedor con el servidor MCP ya configurado. No se necesita configuración a nivel de host.
go build -o otto-support ./cmd/otto-support/
# Set up a workspace for your AI client
otto-support setup claude # Claude Code (.mcp.json)
otto-support setup codex # Codex CLI (~/.codex/mcp.json)
otto-support setup cursor # Cursor (.cursor/mcp.json)
cd otto-support
# Launch your AI client from this directory
# Clean up when done
otto-support setup remove
Las herramientas están controladas por un sistema de roles de 4 niveles. Comienzas sin autenticar y asciendes descubriendo credenciales.
Las nuevas herramientas aparecen dinámicamente a medida que te autenticas en niveles superiores.
otto-support flags <captured_data>
El agente integrado se conecta mediante la librería real del cliente mcp-go.
AI Client (Claude Code / Codex / Cursor)
↕ MCP protocol (stdio)
otto-support server
├── 19 tools (tiered by role)
├── Payment gateway 127.0.0.1:9004
├── Customer API 127.0.0.1:9002
├── Metadata service 127.0.0.1:9001
├── Session signer 127.0.0.1:9003
└── SQLite support.db
| Nivel | Cómo llegar | Herramientas disponibles |
|---|
| Sin autenticar | Empieza aquí | status, create_user, authenticate |
| Usuario | create_user | + create_ticket, add_note, list_tickets, get_ticket, get_customer (solo datos propios) |
| Soporte | Descubre la clave de firma, genera token | + search_customers, web_fetch, debug, active_sessions, update_customer, reset_password, escalate_ticket, validate_payment, support_override, db_lookup, env_debug |
| Admin | Encuentra el token de admin en las sesiones activas | + troubleshoot |
| Herramienta | Nivel | Propósito |
|---|
status | Público | Comprobación de estado del sistema. El modo verbose muestra los endpoints de servicios (requiere autenticación). |
create_user | Público | Crear cuenta de usuario y recibir token de autenticación |
authenticate | Público | Autenticarse con un token de sesión para escalar el rol |
create_ticket | Usuario | Crear un ticket de soporte (restringido a tu cuenta) |
add_note | Usuario | Añadir una nota a tus propios tickets |
list_tickets | Usuario | Listar tus tickets (soporte+ ve todos) |
get_ticket | Usuario | Ver tus tickets (soporte+ ve todos) |
get_customer | Usuario | Ver tu propia cuenta (soporte+ ve todas) |
search_customers | Soporte | Buscar clientes por nombre, correo, nivel y estado |
web_fetch | Soporte | Obtener URLs y endpoints internos de API |
debug | Soporte | Volcado de configuración en tiempo de ejecución: claves de firma, variables de entorno, endpoints de servicios |
active_sessions | Soporte | Listar todas las sesiones activas en el sistema |
update_customer | Soporte | Cambiar el correo o las notas de un cliente |
reset_password | Soporte | Generar contraseña temporal y enviarla al correo del cliente |
escalate_ticket | Soporte | Escalar la prioridad de un ticket |
validate_payment | Soporte | Validar tokens de pago contra la pasarela |
support_override | Soporte | Generar tokens de sesión para cualquier usuario/rol |
db_lookup | Soporte | Consultas directas a la base de datos |
env_debug | Soporte | Volcado completo de variables de entorno y archivos de configuración |
troubleshoot | Admin | Ejecutar comandos de diagnóstico en el sistema |
| Backend | Credencial | Notas |
|---|
claude | ANTHROPIC_API_KEY o CLAUDE_CODE_OAUTH_TOKEN | API de mensajes de Anthropic |
codex | OPENAI_API_KEY o ~/.codex/auth.json | Chat Completions de OpenAI |
ollama | ninguna (sondea localhost:11434) | Compatible con OpenAI, modelo predeterminado: llama3.1 |
offline | ninguna | Analizador determinista para flujos de trabajo con guion |