npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

squash-tm-mcp

v0.1.0

Published

Serveur MCP pour piloter Squash TM (test cases, exigences, campagnes, exécutions) via son API REST.

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 build

Configuration

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 .env est ignoré par git).

L'URL est la racine de l'application : le suffixe /api/rest/latest est ajouté automatiquement (l'inclure dans l'URL fonctionne aussi).

🏢 Proxy d'entreprise : le serveur honore automatiquement les variables HTTP_PROXY / HTTPS_PROXY / NO_PROXY de 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-mcp

Enregistrement 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-mcp par node /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.ts est 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_request permet d'ajuster le payload exact.