Class McpToolSpecificationsBootstrapWrapper
java.lang.Object
com.github._1c_syntax.bsl.languageserver.mcp.McpToolSpecificationsBootstrapWrapper
- All Implemented Interfaces:
BeanPostProcessor
@Component
@Profile("mcp")
public class McpToolSpecificationsBootstrapWrapper
extends Object
implements BeanPostProcessor
Оборачивает каждый
McpServerFeatures.SyncToolSpecification, собранный Spring AI MCP по
@McpTool-методам, в обёртку, которая перед делегированием в исходный
handler вызывает McpRootsBootstrapper. Это даёт проактивный
roots/list (как требует MCP-спека) без какого-либо знания о
bootstrap-логике в самих tool-методах.
Spring AI autoconfig публикует список как @Bean public List<SyncToolSpecification> toolSpecs(...)
в McpServerSpecificationFactoryAutoConfiguration; имя bean'а — "toolSpecs".
Мы перехватываем post-init этого bean'а и подменяем его на список обёрток.
Зависимость на McpRootsBootstrapper ленивая через ObjectProvider,
чтобы не вынуждать создание workspace-scoped бина в момент инициализации
BeanPostProcessor'а.
-
Constructor Summary
ConstructorsConstructorDescriptionMcpToolSpecificationsBootstrapWrapper(ObjectProvider<McpRootsBootstrapper> rootsBootstrapper) -
Method Summary
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface BeanPostProcessor
postProcessBeforeInitialization
-
Constructor Details
-
McpToolSpecificationsBootstrapWrapper
@ConstructorProperties("rootsBootstrapper") public McpToolSpecificationsBootstrapWrapper(ObjectProvider<McpRootsBootstrapper> rootsBootstrapper)
-
-
Method Details
-
postProcessAfterInitialization
- Specified by:
postProcessAfterInitializationin interfaceBeanPostProcessor
-