120 lines
7.1 KiB
Markdown
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.
|