AI Extensions : Inspector 2.9.0, secrets et contradiction dans les docs FastMCP
La revue du jour examine le client autant que le serveur.

La revue du jour examine le client autant que le serveur. MCP Inspector 2.9.0 corrige le traitement des secrets et signale un problème OAuth multi-profils. Le registre actuel de FastMCP contredit sa page d’installation sur la version stable. Aucun projet n’a été installé ou audité ici. Ce sont des vérifications du 1er octobre, pas deux lancements annoncés aujourd’hui. Les étoiles mesurent l’attention, pas qualité, sécurité ou trafic.
En bref
MCP Inspector est le client officiel de test des serveurs MCP, avec interfaces web, CLI et terminal. L’API GitHub actuelle donne 2.9.0, publié le 30 septembre à 22:23:56 UTC. Les notes corrigent le masquage des secrets de requête URL dans les erreurs CLI, la fin d’un secret coupé par un & brut, demandent une reconnexion après modification des en-têtes et stockent OAuth dans un coffre de secrets. Problème connu : des profils d’un même serveur peuvent écraser leurs jetons. Le contournement documenté exige des chemins d’état et des fichiers secrets séparés : MCP_INSPECTOR_SECRET_STORE=file et un MCP_INSPECTOR_SECRET_FILE propre à chaque profil, ou des dossiers distincts. Séparer seulement l’état ne suffit pas. C’est une indication de version, pas un test réalisé ici. ↗

Inspector : installation, licences et activité
Installation Inspector : README exige Node >=22.19.0 et documente npx @modelcontextprotocol/inspector, --cli et --tui. Pour un essai reproductible, je recommande @2.9.0 et un serveur jetable, pas un espace quotidien authentifié. Lancer un serveur stdio inconnu exécute son code localement ; une interface d’inspection ne le rend pas inerte. Examiner le code et limiter fichiers et réseau. LICENSE est en transition : code nouveau Apache-2.0, anciennes contributions non relicenciées MIT, documentation hors spécifications CC-BY-4.0. Dire simplement MIT pour tout le dépôt serait inexact. Observation du 1er octobre : 10 997 étoiles, 1 535 forks, dernier push à 07:17:08 UTC. Ce ne sont pas des résultats d’audit. ↗
FastMCP : les outils cachés peuvent agir
FastMCP est un framework Python pour serveurs et clients MCP. L’API des versions sous PrefectHQ indique v4.0.10 du 25 septembre à 17:19:20 UTC. Les notes corrigent les outils de tâches derrière search transforms et CodeMode : un appel via un autre outil retourne le résultat plutôt qu’un reçu vide. Invisible lors de la découverte ne signifie donc pas inaccessible à l’exécution. Licence source Apache-2.0 ; dépendances et services ont leurs propres conditions. Le 1er octobre : 27 948 étoiles, 2 413 forks, dernier push à 00:45:07 UTC. L’activité ne prouve pas la compatibilité. ↗
Un guide d’installation contredit la version
Contradiction d’installation : le guide actuel appelle encore FastMCP 4 une préversion, dit que stable reste 3.x et montre 4.0.0b1, tandis que l’API présente v4.0.10 comme latest. README propose uv add fastmcp. Je ne transformerais pas cette contradiction en promesse silencieuse. Choisir une version, la fixer et vérifier index de paquets et migration avant installation. Pour tester : outil fictif, données jetables et identifiant étroit. Vérifier découverte et appels indirects : une transformation de recherche n’est pas une autorisation. Configurer l’authentification distante explicitement ; les résultats restent du contenu non fiable. ↗
Tester découverte, exécution et stockage séparément
Plan original et analyse : enregistrer les noms annoncés puis tester séparément, dans un bac à sable avec une opération inoffensive, si un outil omis reste appelable via un proxy visible. Garder les secrets hors des captures, inspecter les journaux pour les secrets URL et aligner état et coffre de chaque profil. Le code ci-dessous compare seulement des ensembles exacts ; il ne découvre pas les chemins cachés et n’impose aucune autorisation. Le schéma distingue découverte, exécution et stockage des secrets. Une liste plus petite aide, mais chaque frontière exige ses preuves.
Vérification synthétique originale
expected = {"read_demo", "list_demo"}
advertised = {"read_demo", "list_demo", "write_demo"}
assert advertised - expected == {"write_demo"}
print("unexpected:", sorted(advertised - expected))
# Exact-name bookkeeping, not an authorization control.
Sources et limites
- https://github.com/modelcontextprotocol/inspector
- https://github.com/modelcontextprotocol/inspector/releases/tag/2.9.0
- https://github.com/modelcontextprotocol/inspector/blob/main/LICENSE
- https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector
- https://github.com/PrefectHQ/fastmcp
- https://github.com/PrefectHQ/fastmcp/releases/tag/v4.0.10
- https://github.com/PrefectHQ/fastmcp/blob/main/LICENSE
- https://gofastmcp.com/getting-started/installation