MCPcopy Create free account
hub / github.com/DerekYRC/mini-claude-code / McpToolPool

Class McpToolPool

src/main/java/org/miniclaudecode/mcp/McpToolPool.java:15–57  ·  view source on GitHub ↗

每轮把内置工具和已连接 MCP 工具组装成一个工具池。

Source from the content-addressed store, hash-verified

13 * 每轮把内置工具和已连接 MCP 工具组装成一个工具池。
14 */
15public class McpToolPool {
16
17 private final List<Tool> builtinTools;
18
19 private final McpManager mcpManager;
20
21 public McpToolPool(List<Tool> builtinTools, McpManager mcpManager) {
22 this.builtinTools = builtinTools;
23 this.mcpManager = mcpManager;
24 }
25
26 public ToolRegistry assemble() {
27 ToolRegistry registry = new ToolRegistry();
28 Set<String> names = new LinkedHashSet<>();
29
30 for (Tool tool : builtinTools) {
31 String name = tool.getDefinition().getName();
32 if (names.add(name)) {
33 registry.register(tool);
34 }
35 }
36
37 ConnectMcpTool connectMcpTool = new ConnectMcpTool(mcpManager);
38 String connectName = connectMcpTool.getDefinition().getName();
39 if (names.add(connectName)) {
40 registry.register(connectMcpTool);
41 }
42
43 for (McpClient client : mcpManager.connectedClients()) {
44 for (McpToolDefinition definition : client.getTools()) {
45 String name = McpToolName.prefixed(client.getName(), definition.getName());
46 if (names.add(name)) {
47 registry.register(new McpTool(client, definition));
48 }
49 else {
50 // 重复工具名跳过,避免后注册工具覆盖已有工具。
51 System.out.println("[mcp] skipped duplicate tool: " + name);
52 }
53 }
54 }
55 return registry;
56 }
57}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected