Files
IdeA/.ideai/tickets/300/carnet.md

120 lines
7.1 KiB
Markdown

---
issueRef: "#300"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1788984710401
---
# Ticket #300 - Plugins: tools MCP Unity non catalogues malgre skills visibles
## Signalement
Dans le projet UnitySoundTool, le plugin Unity est actif et ses skills sont visibles par les agents, mais les tools MCP du plugin ne le sont pas. La surface indique: `Aucun tool MCP plugin catalogue.`
## Cadrage UX
La surface ne doit pas confondre toutes les absences:
- Plugin sans tool MCP: `Aucun tool MCP fourni` / `Le plugin Unity est actif, mais il ne fournit aucun tool MCP.`
- Tools en erreur: `Tools MCP indisponibles` + `Reessayer` + `Voir les details`.
- Tools masques par permissions: `Tools MCP non autorises` + action `Configurer les permissions`.
- Catalogue perime/reload requis: `Rechargement necessaire` + `Recharger le plugin`.
- Pendant resolution initiale: `Chargement des tools MCP...`, pas d'etat vide premature.
## Cadrage Architect
Les skills visibles valident seulement `contributes.skills` + assignation skill. Le message vide vient du panneau MCP quand le catalogue statique `plugins.installed[*].contributes.mcpServers[*].tools` est vide partout.
Contrat:
- Les tools MCP plugin se declarent via `contributes.mcpServers[].tools[]` dans le manifeste, pas via `activate(ctx)`.
- `tools[]` est le catalogue statique UI/assignation; l'execution reelle vient du serveur MCP et de `tools/list`.
- Ref stable d'assignation: `pluginId/serverId/toolName`.
Arbitrage correctif:
1. Si le manifeste Unity installe n'a pas `contributes.mcpServers[].tools[]`: corriger/reinstaller le plugin Unity, pas IdeA core.
2. Si la source a `tools[]` mais l'UI ne les voit pas apres reload: bug IdeA install/reload/registry/DTO frontend.
3. Si l'UI liste les tools mais l'agent ne les voit pas apres assignation: bug distinct injection/effective catalogue agent-facing ou cache provider/CLI.
## Git IdeA
Branche de diagnostic: `fix/300-unity-mcp-tools-uncatalogued` depuis `develop` @ `941db62`. Aucun correctif IdeA requis.
## Diagnostic DevBackend - 2026-09-09
### Verdict
Probleme de donnees du plugin Unity, pas bug IdeA install/reload/registry/DTO. Aucun code IdeA modifie.
### Preuves
- SoundTool active `com.idea.unity-developer-tools` dans `.ideai/project-plugins.json`; les six skills sont assignes, tandis que les tableaux `tools` de tous les agents etaient vides.
- Le registre global IdeA marquait le plugin `enabled`, sans erreur ni restart requis, et pointait vers la source packagee:
`/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/build/idea-install/unity-developer-tools`.
- Les manifestes source, package prepare et installe avaient le meme SHA-256
`e7410c8ec6c3ceefef4d4ed5ba9cf227f86e5dea272fcbbade48a9c9560d23ab`.
- Dans ces trois manifestes, `contributes.mcpServers[0]` declarait correctement le serveur `unity-developer-tools.tools`, mais omettait `tools[]`.
- Le serveur MCP installe fonctionnait: un appel reel `tools/list` retournait huit tools:
`unity_detect_project`, `unity_audit_project`, `unity_run_editmode_tests`,
`unity_run_playmode_tests`, `unity_summarize_tests`, `unity_benchmark_report`,
`unity_compare_cpu_gpu`, `unity_verify_architecture`.
- Le panneau frontend derive volontairement son catalogue de
`installed[*].contributes.mcpServers[*].tools`; une liste absente donne donc
exactement `Aucun tool MCP plugin catalogue.`
- Le domaine et le DTO IdeA conservent fidelement cette liste. Le test existant
`validates_mcp_server_without_static_tool_metadata_for_compatibility` confirme
qu'une omission est valide pour compatibilite et produit une liste statique vide.
### Validation IdeA
- `cargo test -p application validates_mcp_server_without_static_tool_metadata_for_compatibility`: vert, 1 test passe.
- Aucun test ou correctif supplementaire IdeA n'est justifie: le contrat existant est respecte de bout en bout.
## Diagnostic DevFrontend - 2026-09-09
### Verdict
Aucun correctif frontend IdeA ne doit etre applique pour le cas UnitySoundTool actuel. Le message est emis parce que le DTO contient effectivement zero declaration statique `tools[]`; il ne resulte ni d'un filtrage de permissions frontend, ni d'une perte dans l'adapter Tauri.
### Chaine et semantique confirmees
- `McpToolPermissionsPanel` appelle `useProjectPlugins(projectId)`.
- Le hook appelle uniquement `PluginGateway.listProjectSettings`, implemente par `plugin_list_project_settings` dans l'adapter Tauri.
- La reponse `ProjectPluginSettingsView` transporte sans transformation `settings` et les manifestes valides `installed`.
- `PluginMcpToolsEditor` construit ses lignes exclusivement depuis `installed[*].contributes.mcpServers[*].tools[]`.
- Le compteur `cataloguedCount` porte sur tous les plugins installes, pas seulement ceux actifs dans le projet. Le texte `Aucun tool MCP plugin catalogue.` signifie donc exactement: aucun manifeste installe ne declare de metadata statique de tool, et aucune assignation orpheline n'est presente pour l'agent selectionne.
- Les skills visibles ne prouvent que la presence de `contributes.skills`; leur affichage est independant de `mcpServers[].tools[]`.
## Correction UnityPlugin - 2026-09-09
Prise en charge par le projet UnityPlugin, ticket miroir local `#13`, ferme apres QA.
Fichier modifie et committe localement:
- `/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/idea-plugin.json`: ajout de `contributes.mcpServers[0].tools[]` avec les 8 tools statiques.
Tools catalogues:
- `unity_detect_project`
- `unity_audit_project`
- `unity_run_editmode_tests`
- `unity_run_playmode_tests`
- `unity_summarize_tests`
- `unity_benchmark_report`
- `unity_compare_cpu_gpu`
- `unity_verify_architecture`
Commandes validees depuis `plugins/unity-developer-tools`:
- `node scripts/validate-manifest.mjs`: OK
- `node scripts/test-mcp-server.mjs`: OK, 8 tools exposes
- `npm test`: OK
- `npm run package:dir`: OK
Artefact produit:
- `/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/build/idea-install/unity-developer-tools`
Commit UnityPlugin local:
- `c844a45` sur `fix/unity-devtools-mcp-tool-catalog`
- Message: `fix(plugin): advertise static mcp tool catalog in manifest`
- Aucun push distant. Merge local vers `develop` differe car la branche est empilee sur `fix/unity-devtools-mcp-node-launch`.
## Application UnitySoundTool - 2026-09-09
Prise en charge par le projet UnitySoundTool, ticket local `#25`, ferme.
Resultat verifie:
- Plugin `com.idea.unity-developer-tools` actif.
- `restartRequired: false`.
- Serveur MCP runtime `plugin:com.idea.unity-developer-tools:unity-developer-tools.tools` demarre, `error: null`.
- Les 8 tools MCP sont catalogues dans SoundTool.
- Verification directe du wrapper MCP package avec `initialize` puis `tools/list`: retourne les 8 tools avec schemas.
Note: l'installation a ete faite depuis une copie confinee sous le project root SoundTool, car IdeA refuse un chemin externe UnityPlugin pour l'installation directe (`plugin directory must remain within the requester project root`).
## Verdict final
Signalement resolu par correction du manifeste UnityPlugin + repackaging + reinstall/reload dans UnitySoundTool. Pas de bug core IdeA a corriger pour ce cas.