Dépannage
Problèmes d'installation
swag2mcp : commande introuvable
Le binaire n'est pas dans votre PATH.
# Vérifiez si Go est installé
go version
# Trouvez où Go installe les binaires
go env GOPATH
# Généralement ~/go ou ~/go/bin
# Ajoutez au PATH (ajoutez ceci à ~/.zshrc ou ~/.bashrc)
export PATH=$PATH:$(go env GOPATH)/bin
# Ou utilisez le chemin complet
~/go/bin/swag2mcp --versionSi vous avez téléchargé un binaire depuis GitHub Releases, assurez-vous qu'il se trouve dans un répertoire qui est dans votre PATH :
# Déplacez vers /usr/local/bin (macOS/Linux)
sudo mv swag2mcp /usr/local/bin/permission refusée
Le binaire n'a pas les permissions d'exécution.
# Pour go install (corriger la propriété)
sudo chown -R $(whoami) $(go env GOPATH)
# Pour un binaire téléchargé
chmod +x /chemin/vers/swag2mcpVersion de Go trop ancienne
swag2mcp nécessite Go 1.26+.
go version
# Si version < 1.26, mettez à jour Go :
# https://go.dev/dl/Serveur mock introuvable
Le serveur mock est un binaire séparé. Installez-le explicitement :
go install github.com/mmadfox/swag2mcp/cmd/swag2mcp-mock@latestProblèmes de configuration
Fichier de configuration introuvable
swag2mcp ne trouve pas swag2mcp.yaml.
# Créez une nouvelle configuration
swag2mcp init
# Ou spécifiez le chemin explicitement
swag2mcp mcp /chemin/vers/espace-travail
swag2mcp ls /chemin/vers/espace-travailCause fréquente : Vous avez exécuté swag2mcp mcp depuis un répertoire quelconque et il a cherché ~/.swag2mcp/ au lieu de l'espace de travail de votre projet. Passez toujours le chemin explicitement.
Mauvais espace de travail chargé
swag2mcp a chargé un espace de travail différent de celui attendu.
Ordre de résolution : [chemin] explicite → répertoire courant (./) → ~/.swag2mcp/. Si vous exécutez swag2mcp mcp sans chemin depuis un répertoire qui n'a pas swag2mcp.yaml, il utilise ~/.swag2mcp/.
Correctif : Passez toujours le chemin de l'espace de travail : swag2mcp mcp /chemin/vers/votre/espace-travail
Erreur d'analyse YAML
Le fichier de configuration a une syntaxe YAML invalide.
# Validez la configuration
swag2mcp validate
# Erreurs courantes :
# - Tabulations au lieu d'espaces (YAML nécessite des espaces)
# - Indentation manquante pour les champs imbriqués
# - Chaînes non citées avec des caractères spéciaux (: # & {)Astuce : Utilisez un linter YAML ou un éditeur avec support YAML pour détecter les erreurs de syntaxe.
La validation échoue : « aucune spécification définie »
Le fichier de configuration existe mais n'a pas de specs.
# Ajoutez une spec
swag2mcp add spec
# Ou modifiez swag2mcp.yaml et ajoutez au moins une specLa validation échoue : « domaine en double »
Deux specs ont la même valeur domain. Les domaines doivent être uniques.
# Listez les specs actuelles
swag2mcp ls
# Vérifiez les domaines en double dans swag2mcp.yamlLa validation échoue : « emplacement de spec invalide »
L'URL ou le chemin de fichier location n'est pas accessible ou n'est pas un fichier de spécification valide.
# Vérifiez si l'URL est accessible
curl -I https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml
# Vérifiez si le fichier local existe
ls -la ./specs/mon-api.yaml
# Vérifiez que le fichier est un OpenAPI/Swagger/Postman valide
# (pas n'importe quel JSON ou page HTML)Cause fréquente : Le champ location pointe vers le point d'accès API lui-même (par exemple, https://api.example.com/v1/users) au lieu de l'URL du fichier de spécification. L'emplacement doit pointer vers un fichier OpenAPI/Swagger/Postman.
Problèmes du serveur MCP
Port déjà utilisé
Un autre processus utilise le port.
# Trouvez le processus
lsof -i :8080
# Tuez-le
kill <PID>
# Ou utilisez un port différent
swag2mcp mcp --transport sse --http-addr :9090Connexion refusée
Le serveur MCP ne fonctionne pas ou n'est pas accessible.
# Assurez-vous que le serveur fonctionne
swag2mcp mcp --transport sse --http-addr 127.0.0.1:8080
# Dans un autre terminal, vérifiez le point d'accès health
curl http://127.0.0.1:8080/health
# Si vous utilisez un chemin personnalisé
curl http://127.0.0.1:8080/chemin-personnalise/healthLes outils MCP n'apparaissent pas dans le client LLM
Le client LLM ne voit aucun outil.
# Vérifiez que les specs sont chargées
swag2mcp ls
# Vérifiez que les specs ne sont pas désactivées
swag2mcp validate
# Vérifiez les journaux du serveur
swag2mcp mcp --logfile /tmp/swag2mcp.log
cat /tmp/swag2mcp.log
# Vérifiez que le chemin de l'espace de travail dans la configuration de votre IDE est correct
# (doit être un chemin absolu)Causes fréquentes :
- Mauvais chemin d'espace de travail dans la configuration IDE
- Toutes les specs ont
disable: true - Les specs sont filtrées par
--tags - Le fichier de configuration n'existe pas au chemin spécifié
La poignée de main MCP échoue (transport HTTP)
Pour les transports SSE et Streamable HTTP, le protocole MCP nécessite une initialisation avant que les appels d'outils fonctionnent.
Étape 1 : POST /mcp → {"method":"initialize", ...}
Étape 2 : POST /mcp → {"method":"notifications/initialized"}
Étape 3 : POST /mcp → {"method":"tools/list", ...} ← fonctionne maintenantAssurez-vous que votre client LLM effectue la poignée de main avant d'appeler des outils.
Le health check retourne 404
Le chemin du point d'accès health peut différer du chemin MCP.
# Point d'accès health par défaut
curl http://127.0.0.1:8080/health
# Si vous avez changé le chemin MCP, health est toujours à /health
# (non affecté par --http-path)Outil auth non disponible
L'outil MCP auth n'apparaît pas.
L'outil auth est désactivé par défaut (--disable-llm-auth=true). C'est intentionnel pour la sécurité en production.
# Activez l'outil auth
swag2mcp mcp --disable-llm-auth=falseProblèmes d'authentification
401 Non autorisé
L'API a rejeté la requête en raison d'identifiants manquants ou invalides.
# Vérifiez que l'authentification est configurée
swag2mcp info
# Validez la configuration
swag2mcp validate
# Vérifiez que les variables d'environnement sont définies
echo $MON_JETON
# Vérifiez que le jeton n'est pas expiré (les jetons bearer sont statiques)Causes fréquentes :
- Jeton manquant ou vide
- Variable d'environnement non définie
- Jeton expiré (les jetons bearer ne s'actualisent pas automatiquement)
- Mauvais type d'authentification configuré
403 Interdit
L'API a rejeté la requête en raison de permissions insuffisantes.
- Le jeton peut ne pas avoir les portées requises
- La clé API peut ne pas avoir accès à cette ressource
- Consultez la documentation de l'API pour les permissions requises
Point d'accès du jeton OAuth2 inaccessible
swag2mcp ne peut pas atteindre l'URL du jeton OAuth2.
# Vérifiez le token_url dans votre configuration
# Vérifiez que l'URL est correcte et accessible
curl -X POST https://auth.example.com/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=test" \
-d "client_secret=test"
# Vérifiez la connectivité réseau
# Vérifiez les paramètres de proxy si derrière un proxy d'entrepriseL'authentification Digest échoue
swag2mcp ne peut pas effectuer la poignée de main d'authentification Digest.
- Le serveur doit retourner un en-tête
WWW-Authenticate: Digest ...avec une réponse 401 - Le défi est mis en cache pendant 5 minutes — si le serveur change son nonce, attendez l'expiration du cache
- Vérifiez que le nom d'utilisateur et le mot de passe sont corrects
Non-concordance de signature HMAC
L'API a rejeté la requête signée HMAC.
- Vérifiez que
api_keyetsecret_keysont corrects - Vérifiez que l'API utilise la signature HMAC-SHA256 de style Binance
- Certains échanges utilisent des méthodes de signature différentes — l'authentification HMAC est spécifiquement pour les API compatibles Binance
L'authentification par script échoue
Le script d'authentification externe a échoué.
# Vérifiez que le script existe
ls -la ~/.swag2mcp/auth_scripts/mon-domaine.sh
# Exécutez le script manuellement pour tester
sh ~/.swag2mcp/auth_scripts/mon-domaine.sh
# Vérifiez le format de sortie du script (doit être JSON : {"token": "...", "expires_in": 3600})
# Vérifiez que le script se termine dans les 30 secondes
# Vérifiez que le script a les permissions d'exécution
chmod +x ~/.swag2mcp/auth_scripts/mon-domaine.shProblèmes de recherche
Aucun résultat de recherche
La recherche n'a retourné aucun point d'accès.
# Vérifiez que les specs sont chargées
swag2mcp ls
# Vérifiez que les specs ne sont pas désactivées
swag2mcp validate
# Essayez une requête plus simple
# Essayez de rechercher par méthode : method:GET
# Essayez de rechercher par étiquette : tag:pets
# L'index est reconstruit à chaque démarrage du serveur MCP
# Si vous venez d'ajouter une spec, redémarrez le serveurLa recherche retourne des résultats non pertinents
La requête est trop large ou ambiguë.
- Utilisez des filtres de champ pour affiner :
method:GET +tag:pets - Utilisez des phrases exactes :
"find pet by status" - Utilisez le paramètre
limitpour obtenir des résultats plus ciblés
Problèmes d'appel API
invoke retourne une erreur
L'appel API a échoué.
# Vérifiez le message d'erreur — il inclut le code d'état HTTP
# Erreurs 4xx : vérifiez les paramètres, l'authentification ou les permissions
# Erreurs 5xx : le serveur API a un problème
# Inspectez toujours le point d'accès avant d'invoquer
inspect(endpointId: "...")
# Vérifiez que tous les paramètres requis sont fournis
# Vérifiez les types de paramètres (chaîne, nombre, booléen)Erreur de limite de débit
Le LLM a appelé le même point d'accès trop rapidement.
Chaque point d'accès a un délai de 10 secondes. Attendez avant d'appeler à nouveau, ou désactivez le limiteur de débit :
disable_ratelimiter: trueRéponse trop volumineuse (fileRef retourné)
La réponse a dépassé max_response_size.
C'est normal. Utilisez les outils de réponse pour explorer les données :
1. response_outline(chemin) → comprendre la structure
2. response_compress(chemin, mode: "first_of_array") → obtenir un échantillon
3. response_slice(chemin, jsonPath: "data.0") → obtenir des données spécifiquesOu augmentez la limite :
http_client:
max_response_size: 4194304 # 4 MoRéponses API lentes
L'API prend trop de temps à répondre.
http_client:
timeout: 120s # Augmentez par rapport à la valeur par défaut de 30sProblèmes d'espace de travail
swag2mcp init échoue : « le répertoire n'est pas vide »
Le répertoire cible contient déjà des fichiers.
# Utilisez --force pour écraser
swag2mcp init --force
# Ou utilisez un répertoire différent
swag2mcp init ./nouvel-espace-travailswag2mcp update échoue
Un ou plusieurs fichiers de spécification n'ont pas pu être téléchargés.
# Vérifiez le message d'erreur pour savoir quelle URL a échoué
# Vérifiez que l'URL est accessible
curl -I <url-echouee>
# Vérifiez la connectivité réseau
# Vérifiez les paramètres de proxyL'exportation ne crée pas de ZIP
L'argument [output] doit être un chemin de fichier se terminant par .zip, pas un répertoire.
# Correct
swag2mcp export /chemin/vers/espace-travail /chemin/vers/sauvegarde.zip
# Erroné (aucun ZIP ne sera créé)
swag2mcp export /chemin/vers/espace-travail /un/repertoireL'importation échoue : « n'est pas une sauvegarde swag2mcp valide »
Le fichier ZIP n'a pas été créé par swag2mcp export.
Seules les archives ZIP créées par swag2mcp export peuvent être importées. L'archive a une structure interne spécifique (swag2mcp.yaml, specs/, auth_scripts/).
Problèmes de TUI
La TUI ne s'affiche pas correctement
Le terminal est trop petit ou ne prend pas en charge les fonctionnalités requises.
- Taille minimale du terminal : 80×24 caractères
- La TUI utilise Bubbletea et fonctionne dans la plupart des terminaux modernes
- Essayez de redimensionner votre fenêtre de terminal
- Essayez un émulateur de terminal différent
- Windows PowerShell 5.1 : La TUI peut afficher les champs de saisie sur une nouvelle ligne. Utilisez Windows Terminal ou le terminal VS Code — ils gèrent correctement le mode raw.
La TUI affiche « aucune spec trouvée »
L'espace de travail n'a pas de specs configurées.
# Vérifiez les specs
swag2mcp ls
# Ajoutez une spec
swag2mcp add specProblèmes du serveur mock
Le serveur mock ne démarre pas
# Vérifiez que mock_enabled: true dans la configuration
# Vérifiez que chaque collection a base_mock_url défini
# Vérifiez que les ports ne sont pas utilisés
lsof -i :9090
# Vérifiez les journaux du serveur mock
swag2mcp-mockLe serveur mock retourne des réponses vides
Le fichier de spécification peut ne pas avoir de schémas de réponse définis.
- Le serveur mock génère des données à partir des schémas de réponse
- Si aucun schéma n'est trouvé, il retourne
{} - Vérifiez que votre spécification OpenAPI a des
responsesavecschemadéfini
Problèmes réseau
Échec de la connexion proxy
swag2mcp ne peut pas se connecter via le proxy configuré.
# Vérifiez le format de l'URL du proxy (doit inclure le schéma : http://, https://, socks5://)
# Vérifiez les identifiants du proxy
# Vérifiez la liste de contournement — la cible peut être dans la liste de contournement
# Testez le proxy avec curl
curl -x http://proxy.entreprise.com:8080 https://api.example.comErreurs TLS/SSL
La vérification du certificat a échoué.
- Si vous utilisez un certificat auto-signé pour le serveur MCP, le client doit lui faire confiance
- Pour le serveur mock avec
--tls, un certificat auto-signé est généré automatiquement - Pour les appels API, swag2mcp utilise le magasin de certificats du système
Autres problèmes
Utilisation élevée du disque
Les répertoires de cache et de réponses peuvent croître avec le temps.
# Nettoyez tout
swag2mcp clean
# Les anciennes réponses (>48h) sont nettoyées automatiquement au démarrage du serveur MCP
# Les fichiers de cache expirent aléatoirement entre 1 et 48 heures« commande introuvable » après go install
Le répertoire go install n'est pas dans votre PATH.
# Trouvez où Go installe les binaires
go env GOPATH
# Ajoutez au PATH
export PATH=$PATH:$(go env GOPATH)/binLe LLM n'utilise pas correctement les outils
Le LLM peut avoir besoin de meilleures instructions ou d'une compétence de formatage.
- Utilisez
llm_instructiondans votre configuration de spec pour décrire ce que fait l'API - Envisagez d'utiliser la compétence swag2mcp-format pour un formatage cohérent des sorties
- La qualité des réponses du LLM dépend du modèle et des instructions qu'il reçoit
Comment signaler un bogue ?
Ouvrez un problème sur GitHub avec :
- La version de swag2mcp (
swag2mcp --version) - Votre système d'exploitation et architecture
- La commande exacte que vous avez exécutée
- Le message d'erreur complet
- Votre fichier de configuration (avec les secrets supprimés)