MCP Fusion/Operate and integrate/Tests
Tests
@mcpfusion/testing exécute vos outils dans le vrai pipeline, en mémoire : pas de serveurs, pas de tokens, fidélité totale sur la validation, le middleware, la rédaction et les Presenters.
Tester un serveur MCP signifie généralement simuler le protocole et perdre confiance. @mcpfusion/testing prend le chemin inverse : il exécute votre vrai registre dans le vrai pipeline, en mémoire, de sorte qu’un test réussi valide le même chemin de code que celui que la production exécute.
npm install @mcpfusion/testingLe harness
import { createMCPFusionTester } from '@mcpfusion/testing';
import registry from './src/server';
const t = createMCPFusionTester(registry, { contextFactory: () => ({ db: testDb }) });
test('get_invoice hides PII and teaches units', async () => {
const result = await t.callAction('billing', 'get_invoice', {
id: 'inv_2026_0417',
});
expect(result.data.email).toBeUndefined();
expect(result.systemRules).toContain(
'amount_cents is in CENTS. Divide by 100.',
);
expect(result.rawResponse).toContain('billing.remind');
});Un seul appel, et l’assertion inspecte exactement ce que l’agent recevrait : le contenu structuré après rédaction, les règles système que le Presenter injecte, les affordances qu’il suggère.
Ce qui tourne pour de vrai
| Étape | Fidélité |
|---|---|
| Validation d’entrée | Vrais schemas Zod du builder |
| Middleware | Vraies chaînes, vraie dérivation de contexte |
| Rédaction | Vraies fonctions de rédaction compilées |
| Mise en forme du Presenter | Vrais schemas, règles, blocs UI, affordances |
| Transport | Simulé, la seule partie remplacée |
Comme le harness tourne en mémoire sans serveur ni tokens, les tests sont assez rapides pour tourner à chaque push, y compris dans le CI.
Quoi tester
- Le contrat de sortie. Vérifiez que les champs de PII sont absents du
result.data. C’est le test qui attrape le jour où quelqu’un ajoute un champ et oublie le chemin de rédaction. - Les règles. Vérifiez que
systemRulescontient les lignes d’unité et de devise que votre Presenter promet. - Affordances. Vérifiez que
.suggest()propose les bonnes actions suivantes selon l’état. - La forme de l’échec. Vérifiez que les échecs de
Resultreviennent avecavailableActions, pour que les agents se réparent seuls. - Filtrage par état. Avec des outils liés à une FSM, vérifiez qu’un outil est absent de la liste d’outils dans les états qui l’interdisent.
Si votre agent de codage IA a écrit l’outil, c’est ici que vous vérifiez son travail. Le contrat SKILL.md fait promettre le motif à l’agent ; ces tests font appliquer le motif par le CI. Voir Skills.
CI
npx vitest run
mcpfusion lock --check ./dist/server.jsAccouplez le harness à la vérification du lockfile de capacités de Governance : les tests vérifient le comportement, le lockfile vérifie que la surface n’a pas dérivé. Ensemble, ils forment les deux portes que chaque changement franchit avant le deploy.
Prochaines étapes
- Tools: ce que le harness exerce
- Governance: le lockfile et la porte du CI
- Deploy: livrez avec confiance, gratuitement
