squash-tm-mcp
v0.1.0
Published
Serveur MCP pour piloter Squash TM (test cases, exigences, campagnes, exécutions) via son API REST.
Maintainers
Readme
squash-tm-mcp
Serveur MCP pour piloter Squash TM depuis Claude (Claude Code / Claude Desktop). Il expose des outils pour consulter, créer/modifier et gérer l'exécution des objets de test via l'API REST de Squash TM.
Périmètre (v1)
- Test cases : recherche, détail (avec steps), création, modification, étapes d'action, étapes d'appel (call-step), paramètres et jeux de données
- Exigences : recherche, détail, création, modification, liaison (couverture) à un test case
- Campagnes / itérations / suites : listing et détail (avec plan d'exécution)
- Exécutions : détail, mise à jour du statut d'une exécution et d'un step
- Import :
import_testlink_xml(migration de cas de test depuis un export XML TestLink) - Générique :
list_projects+squash_request(échappatoire vers tout endpoint REST)
Prérequis
- Node.js ≥ 18
- Une instance Squash TM (≥ 7.1) et un token d'accès personnel (PAT)
- Généré depuis « Mon compte » dans Squash TM, permission READ_WRITE pour la création/modification.
- ⚠️ Depuis mi-2026, l'authentification Basic (login/mot de passe) n'est plus possible pour l'API : le PAT est requis.
Installation rapide (recommandé)
Aucun clone nécessaire — le serveur se lance via npx :
npx squash-tm-mcp(en fournissant les variables d'environnement ci-dessous). Voir « Enregistrement » pour l'intégration dans Claude Code / Claude Desktop.
Depuis les sources (développement)
npm install
npm run buildConfiguration
Le serveur lit deux variables d'environnement (un fichier .env est supporté en local,
voir .env.example) :
| Variable | Description |
| -------------------- | -------------------------------------------------------- |
| SQUASH_TM_URL | URL de base, ex. https://squash.example.com/squash |
| SQUASH_TM_TOKEN | Le token PAT (propre à chaque utilisateur) |
| SQUASH_TM_TIMEOUT | Timeout HTTP en ms (optionnel, défaut 30000) |
🔐 Chaque utilisateur génère et utilise SON PROPRE token PAT (Squash TM → « Mon compte »), avec la permission
READ_WRITE. Ne partagez jamais un token : les droits et la traçabilité des actions dépendent de l'utilisateur du token. Ne committez jamais votre token (le.envest ignoré par git).
L'URL est la racine de l'application : le suffixe
/api/rest/latestest ajouté automatiquement (l'inclure dans l'URL fonctionne aussi).
🏢 Proxy d'entreprise : le serveur honore automatiquement les variables
HTTP_PROXY/HTTPS_PROXY/NO_PROXYde votre environnement.
Lancer / inspecter
npm run dev # lance le serveur en stdio (tsx)
npm run inspect # ouvre le MCP Inspector
npm test # tests unitaires (vitest)Enregistrement dans Claude Code
claude mcp add squash-tm \
--env SQUASH_TM_URL=https://squash.example.com/squash \
--env SQUASH_TM_TOKEN=xxxxx \
-- npx -y squash-tm-mcpEnregistrement dans Claude Desktop
Dans claude_desktop_config.json (ou un .mcp.json de projet) :
{
"mcpServers": {
"squash-tm": {
"command": "npx",
"args": ["-y", "squash-tm-mcp"],
"env": {
"SQUASH_TM_URL": "https://squash.example.com/squash",
"SQUASH_TM_TOKEN": "xxxxx"
}
}
}
}En développement (depuis les sources), remplacez
npx -y squash-tm-mcpparnode /chemin/absolu/vers/squash-tm-mcp/dist/index.js.
Assistant guidé (prompts MCP)
Le serveur fournit des prompts qui font que Claude vous pose les bonnes questions, une à la fois, puis crée le cas de test via les outils :
nouveau_cas_de_test— création guidée d'un cas de test complet (projet, priorité, prérequis, étapes, paramètres, jeux de données, exigences couvertes, cas de test appelés).completer_cas_de_test— enrichir un cas de test existant (argument :testCaseId).
Dans Claude Code, ils apparaissent comme des commandes, ex. /squash-tm:nouveau_cas_de_test.
Dans Claude Desktop, via le menu des prompts du serveur.
Outils exposés
| Outil | Rôle |
| --------------------------- | ------------------------------------------------- |
| list_projects | Lister les projets (récupérer les projectId) |
| squash_request | Requête REST brute (échappatoire) |
| search_test_cases | Rechercher des test cases |
| get_test_case | Détail d'un test case (avec steps) |
| create_test_case | Créer un test case |
| update_test_case | Modifier un test case (priorité, prérequis, statut…) |
| add_test_step | Ajouter une étape d'action (action + résultat) |
| add_call_step | Ajouter une étape d'appel (cas de test appelé) |
| create_parameter | Créer un paramètre de test case |
| create_dataset | Créer un jeu de données (valeurs de paramètres) |
| search_requirements | Rechercher des exigences |
| get_requirement | Détail d'une exigence |
| create_requirement | Créer une exigence |
| update_requirement | Modifier une exigence (PATCH partiel) |
| link_test_case_to_requirement | Lier une exigence à un test case (couverture) |
| import_testlink_xml | Importer des cas de test depuis un export XML TestLink (options dryRun, stripImages, imagesAsAttachments) |
| list_campaigns | Lister les campagnes |
| get_campaign | Détail d'une campagne (avec itérations) |
| get_iteration | Détail d'une itération (avec plan d'exécution) |
| get_test_suite | Détail d'une suite de tests |
| get_execution | Détail d'une exécution (avec steps) |
| set_execution_status | Statut global d'une exécution |
| set_execution_step_status | Statut d'un step d'exécution (+ commentaire) |
Notes d'implémentation
src/client.tsest l'unique point d'accès HTTP (Bearer + parsing HAL + erreurs).- Les collections HAL sont « déballées » depuis
_embedded.<clé>. - Certains corps de création (
create_test_case,create_requirement) et les noms de champs de statut suivent la nomenclature standard Squash TM ; en cas d'erreur 4xx sur une instance particulière,squash_requestpermet d'ajuster le payload exact.
