You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: introspect application/project/module services and message-bus listeners
Adds two new MCP tool groups (services.* and events.*) plus matching Platform
Explorer tool-window sections for the IDE's declarative service and listener
registrations:
- services.list / services.find — XML-declared <applicationService>,
<projectService>, <moduleService>, optionally also @Service-annotated light
services already instantiated in the running IDE.
- events.list_listeners / events.find_listeners_of_topic — static
<applicationListeners> / <projectListeners> bindings.
- arch.get_plugin_details now includes services and listeners by default.
Two new core inspectors (ServiceInspector, ListenerInspector) read the data
reflectively from IdeaPluginDescriptorImpl.{app,project,module}ContainerDescriptor
so we don't compile-time depend on @ApiStatus.Internal types. Light services use
ComponentManagerEx.processAllImplementationClasses across application and every
open project. PluginInventory snapshot gains servicesByPluginId and
listenersByPluginId maps with a separate shorter-TTL cache for the
non-deterministic light-service walk.
https://claude.ai/code/session_01AUSj3uiQmBbVmSRYEpYHYq
|`pluginId`|`String`| Plugin id, e.g. 'com.intellij.java', 'org.jetbrains.kotlin', 'com.github.xepozz.ide.introspector'. Get ids from arch.list_plugins. |
125
135
|`includeDeclaredExtensionPoints`|`Boolean`| Include EPs this plugin declares (i.e. extensibility hooks it offers to others). Default true. |
126
136
|`includeRegisteredExtensions`|`Boolean`| Include extensions this plugin contributes to other plugins' EPs. Default true. |
137
+
|`includeServices`|`Boolean`| Include services declared by this plugin (application/project/module). Default true — cheap. |
138
+
|`includeListeners`|`Boolean`| Include message-bus listeners declared by this plugin (application/project). Default true — cheap. |
127
139
|`includeActions`|`Boolean`| Include the plugin's action ids. Default false — slow on plugins with many actions (com.intellij has ~3000). |
128
140
129
141
**Returns:**`PluginDetails`
@@ -407,6 +419,76 @@ Examples:
407
419
408
420
---
409
421
422
+
## `events.find_listeners_of_topic`
423
+
424
+
*EventsToolset*
425
+
426
+
Reverse-lookup: given a Topic FQCN, lists every static listener registered against it.
427
+
428
+
Use this when: you have a specific topic class (e.g. `com.intellij.openapi.vfs.newvfs.BulkFileListener`)
429
+
and want to know what reacts to its events.
430
+
431
+
Do NOT use this when: you have a substring (use events.list_listeners with topicContains).
432
+
433
+
Returns: { listeners: ListenerInfo[], total: int }.
|`providedByPlugin`|`String?`| Restrict to services contributed by this plugin id (e.g. 'com.intellij', 'org.jetbrains.kotlin'). |
947
+
|`interfaceContains`|`String?`| Case-insensitive substring filter on the declared interface FQCN. |
948
+
|`implementationContains`|`String?`| Case-insensitive substring filter on the implementation FQCN. |
949
+
|`includeLightInstantiated`|`Boolean`| Also include @Service-annotated light services already instantiated in this IDE session. Default false — result is non-deterministic. |
950
+
|`limit`|`Int`| Cap on returned services. Default 500. |
0 commit comments