docs(sdk): contrat d'exposition des tools MCP par les plugins — #293 (manifest: section MCP Servers And Agent Tools — contributes.mcpServers est le seul canal IdeA-native, aucun registerMcpTool/registerServer dans activate(ctx), règles id/displayName/transport stdio/autoStart requis pour la réconciliation MCP/command relatif résolu sous pluginRoot vs absolu refusé sans allowAbsoluteCommand/cwd défaut ${pluginRoot}, assignation par triplet pluginId/serverId/toolName devant matcher tools/list du serveur, example manifest aligné contributes.skills, guidance script packagé exécutable vs lancement via binaire hôte; activation-context: activate n'expose pas d'API d'enregistrement de tools MCP — ils viennent du process serveur stdio externe et de sa réponse tools/list, ctx.pluginRoot officialisé vs import.meta.url; project-plugin-assignments: assignation résolue vers serveurs manifestés autoStart uniquement, flow skill → serveur MCP → tools assignés sans chemins relatifs depuis le Markdown servi par idea_skill_read; QA verte reconfirmée par Git: npm run check — build, typecheck:examples, package:hello-plugin)
This commit is contained in:
@ -45,12 +45,23 @@ focused project at invocation/render time.
|
||||
The context never exposes internal IdeA gateways or Tauri commands. Use
|
||||
`ctx.services` and the registration APIs instead.
|
||||
|
||||
`activate(ctx)` does not expose an API for registering MCP tools directly.
|
||||
Agent-callable plugin tools are provided by stdio MCP servers declared in
|
||||
`idea-plugin.json` under `contributes.mcpServers`. The plugin runtime can
|
||||
register menu commands and layouts in-process, but MCP tools come from the
|
||||
external server process and its MCP `tools/list` response.
|
||||
|
||||
`pluginRoot` identifies the committed package currently loaded by IdeA. It is
|
||||
not the original source directory or archive path and may change after reinstall.
|
||||
Treat it as read-only, do not persist it, and resolve packaged scripts/assets
|
||||
under it only while the plugin is active. Workspace services remain confined to
|
||||
project-owned paths.
|
||||
|
||||
Use `ctx.pluginRoot` as the official way to resolve packaged scripts/assets from
|
||||
runtime code. `import.meta.url` can still be useful inside a bundle for ordinary
|
||||
module-relative JavaScript resolution, but it is not the host/plugin contract
|
||||
for the installed package root.
|
||||
|
||||
## Disposal
|
||||
|
||||
Push every returned disposable to `ctx.subscriptions`:
|
||||
|
||||
Reference in New Issue
Block a user