refactor(LocalRunnerClient): introduce DescMcpServer

Context:
This refactor supports creating descriptional files for common MCP Tools.
This commit is contained in:
2025-12-29 17:35:03 +08:00
parent 442dd55686
commit 1bd23b20c4

View File

@@ -55,6 +55,10 @@ public class LocalRunnerClient extends RunnerClient {
* 动态生成的行动程序都将挂载至该 McpServer * 动态生成的行动程序都将挂载至该 McpServer
*/ */
private McpStatelessAsyncServer dynamicActionMcpServer; private McpStatelessAsyncServer dynamicActionMcpServer;
/**
* 负责监听常规 MCP Server 的描述文件(描述文件主要用于添加原本 MCP Tools 不携带的信息,如前置依赖、后置依赖、是否 IO 密集等
*/
private McpStatelessAsyncServer mcpDescServer;
private final WatchService watchService; private final WatchService watchService;
public LocalRunnerClient(ConcurrentHashMap<String, MetaActionInfo> existedMetaActions, ExecutorService executor, @Nullable String baseActionPath) { public LocalRunnerClient(ConcurrentHashMap<String, MetaActionInfo> existedMetaActions, ExecutorService executor, @Nullable String baseActionPath) {
@@ -64,10 +68,25 @@ public class LocalRunnerClient extends RunnerClient {
} catch (IOException e) { } catch (IOException e) {
throw new ActionInitFailedException("目录监听器启动失败", e); throw new ActionInitFailedException("目录监听器启动失败", e);
} }
registerDescMcp();
registerDynamicActionMcp(); registerDynamicActionMcp();
setupShutdownHook(); setupShutdownHook();
} }
private void registerDescMcp() {
InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair();
McpSchema.ServerCapabilities serverCapabilities = McpSchema.ServerCapabilities.builder()
.resources(true, true)
.build();
mcpDescServer = McpServer.async(pair.serverSide())
.capabilities(serverCapabilities)
.jsonMapper(McpJsonMapper.getDefault())
.build();
// TODO 完善加载与监听逻辑
registerMcpClient("mcp-desc", pair.clientSide(), 10);
}
private void registerDynamicActionMcp() { private void registerDynamicActionMcp() {
InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair(); InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair();
McpSchema.ServerCapabilities serverCapabilities = McpSchema.ServerCapabilities.builder() McpSchema.ServerCapabilities serverCapabilities = McpSchema.ServerCapabilities.builder()
@@ -317,6 +336,7 @@ public class LocalRunnerClient extends RunnerClient {
private void setupShutdownHook() { private void setupShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread(() -> { Runtime.getRuntime().addShutdownHook(new Thread(() -> {
dynamicActionMcpServer.close(); dynamicActionMcpServer.close();
mcpDescServer.close();
this.mcpClients.forEach((id, client) -> { this.mcpClients.forEach((id, client) -> {
client.close(); client.close();
log.info("[{}] MCP-Client 已关闭", id); log.info("[{}] MCP-Client 已关闭", id);