
Une implémentation d'un serveur MCP vulnérable utilisant mcp-go
Serveur MCP de support client pour assistants de codage IA. Un seul binaire Go, authentification par niveaux, 19 outils répartis sur 4 niveaux de rôle.
Construit avec mcp-go.
Exécutez tout dans un conteneur isolé. Claude Code est préinstallé et le serveur MCP démarre automatiquement.
# 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 lance dans le conteneur avec le serveur MCP déjà configuré. Aucune configuration au niveau de l'hôte n'est nécessaire.
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
Les outils sont verrouillés derrière un système de rôles à 4 niveaux. Vous commencez non authentifié et montez en grade en découvrant des identifiants.
De nouveaux outils apparaissent dynamiquement à mesure que vous vous authentifiez à des niveaux supérieurs.
otto-support flags <captured_data>
L'agent intégré se connecte via la véritable bibliothèque 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
| Niveau | Comment y accéder | Outils disponibles |
|---|
| Non authentifié | Commencez ici | status, create_user, authenticate |
| Utilisateur | create_user | + create_ticket, add_note, list_tickets, get_ticket, get_customer (données personnelles uniquement) |
| Support | Découvrir la clé de signature, créer un jeton | + search_customers, web_fetch, debug, active_sessions, update_customer, reset_password, escalate_ticket, validate_payment, support_override, db_lookup, env_debug |
| Admin | Trouver le jeton admin dans les sessions actives | + troubleshoot |
| Outil | Niveau | Objectif |
|---|
status | Public | Vérification de l'état du système. Le mode verbeux affiche les points de terminaison des services (nécessite une authentification). |
create_user | Public | Créer un compte utilisateur et recevoir un jeton d'authentification |
authenticate | Public | S'authentifier avec un jeton de session pour élever le rôle |
create_ticket | Utilisateur | Créer un ticket de support (limité à votre compte) |
add_note | Utilisateur | Ajouter une note à vos propres tickets |
list_tickets | Utilisateur | Lister vos tickets (support+ voit tout) |
get_ticket | Utilisateur | Consulter vos tickets (support+ voit tout) |
get_customer | Utilisateur | Consulter votre propre compte (support+ voit tout) |
search_customers | Support | Rechercher tous les clients par nom, e-mail, niveau, statut |
web_fetch | Support | Récupérer des URL et les points de terminaison d'API internes |
debug | Support | Vidage de la configuration d'exécution — clés de signature, variables d'environnement, points de terminaison des services |
active_sessions | Support | Lister toutes les sessions actives du système |
update_customer | Support | Modifier l'e-mail ou les notes du client |
reset_password | Support | Générer un mot de passe temporaire et l'envoyer à l'e-mail du client |
escalate_ticket | Support | Élever la priorité du ticket |
validate_payment | Support | Valider les jetons de paiement auprès de la passerelle |
support_override | Support | Créer des jetons de session pour n'importe quel utilisateur/rôle |
db_lookup | Support | Requêtes directes à la base de données |
env_debug | Support | Vidage complet des variables d'environnement et du fichier de configuration |
troubleshoot | Admin | Exécuter des commandes de diagnostic sur le système |
| Backend | Identifiants | Notes |
|---|
claude | ANTHROPIC_API_KEY ou CLAUDE_CODE_OAUTH_TOKEN | Anthropic Messages API |
codex | OPENAI_API_KEY ou ~/.codex/auth.json | OpenAI Chat Completions |
ollama | aucun (sonde localhost:11434) | Compatible OpenAI, modèle par défaut : llama3.1 |
offline | aucun | Analyseur déterministe pour les flux de travail scriptés |