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
*/
private McpStatelessAsyncServer dynamicActionMcpServer;
/**
* 负责监听常规 MCP Server 的描述文件(描述文件主要用于添加原本 MCP Tools 不携带的信息,如前置依赖、后置依赖、是否 IO 密集等
*/
private McpStatelessAsyncServer mcpDescServer;
private final WatchService watchService;
public LocalRunnerClient(ConcurrentHashMap<String, MetaActionInfo> existedMetaActions, ExecutorService executor, @Nullable String baseActionPath) {
@@ -64,10 +68,25 @@ public class LocalRunnerClient extends RunnerClient {
} catch (IOException e) {
throw new ActionInitFailedException("目录监听器启动失败", e);
}
registerDescMcp();
registerDynamicActionMcp();
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() {
InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair();
McpSchema.ServerCapabilities serverCapabilities = McpSchema.ServerCapabilities.builder()
@@ -317,6 +336,7 @@ public class LocalRunnerClient extends RunnerClient {
private void setupShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
dynamicActionMcpServer.close();
mcpDescServer.close();
this.mcpClients.forEach((id, client) -> {
client.close();
log.info("[{}] MCP-Client 已关闭", id);