From 592e2604d92cbef1bcddd80185e1cc30cfc8f7cf Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Wed, 24 Dec 2025 19:34:04 +0800 Subject: [PATCH] refactor(mcp): move InProcessMcpTransport into Partner-Common module Context: Action modules in Partner-Main and SandboxRunner module rely on in-process MCP transport to support dynamically action generating. --- Partner-Common/pom.xml | 8 ++++ .../common/mcp}/InProcessMcpTransport.java | 37 +---------------- Partner-Main/pom.xml | 6 +++ .../InProcessMcpTransportTest.java | 41 +++++++++++++++++++ 4 files changed, 56 insertions(+), 36 deletions(-) rename {Partner-Main/src/test/java/experimental => Partner-Common/src/main/java/work/slhaf/partner/common/mcp}/InProcessMcpTransport.java (76%) create mode 100644 Partner-Main/src/test/java/experimental/InProcessMcpTransportTest.java diff --git a/Partner-Common/pom.xml b/Partner-Common/pom.xml index 5840c2cb..1639ab13 100644 --- a/Partner-Common/pom.xml +++ b/Partner-Common/pom.xml @@ -11,6 +11,14 @@ Partner-Common + + + + io.modelcontextprotocol.sdk + mcp + 0.17.0 + + 21 21 diff --git a/Partner-Main/src/test/java/experimental/InProcessMcpTransport.java b/Partner-Common/src/main/java/work/slhaf/partner/common/mcp/InProcessMcpTransport.java similarity index 76% rename from Partner-Main/src/test/java/experimental/InProcessMcpTransport.java rename to Partner-Common/src/main/java/work/slhaf/partner/common/mcp/InProcessMcpTransport.java index 8ca56f69..fd37dc53 100644 --- a/Partner-Main/src/test/java/experimental/InProcessMcpTransport.java +++ b/Partner-Common/src/main/java/work/slhaf/partner/common/mcp/InProcessMcpTransport.java @@ -1,18 +1,12 @@ -package experimental; +package work.slhaf.partner.common.mcp; -import io.modelcontextprotocol.client.McpClient; -import io.modelcontextprotocol.client.McpSyncClient; import io.modelcontextprotocol.common.McpTransportContext; import io.modelcontextprotocol.json.McpJsonMapper; import io.modelcontextprotocol.json.TypeRef; -import io.modelcontextprotocol.server.McpServer; -import io.modelcontextprotocol.server.McpStatelessServerFeatures; import io.modelcontextprotocol.server.McpStatelessServerHandler; -import io.modelcontextprotocol.server.McpStatelessSyncServer; import io.modelcontextprotocol.spec.McpClientTransport; import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpStatelessServerTransport; -import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; @@ -159,32 +153,3 @@ public final class InProcessMcpTransport implements McpClientTransport, McpState return McpClientTransport.super.protocolVersions(); } } - -class InProcessMcpTransportTest { - @Test - void inProcessMcpTransportTest() { - InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair(); - InProcessMcpTransport clientSide = pair.clientSide(); - InProcessMcpTransport serverSide = pair.serverSide(); - McpStatelessSyncServer server = McpServer.sync(serverSide) - .capabilities(McpSchema.ServerCapabilities.builder().tools(true).build()) - .build(); - server.addTool(McpStatelessServerFeatures.SyncToolSpecification.builder() - .tool(McpSchema.Tool.builder().name("111").build()).callHandler((mcpTransportContext, callToolRequest) -> { - System.out.println(111); - return McpSchema.CallToolResult.builder().addContent(new McpSchema.TextContent("111")).build(); - }).build()); - McpSyncClient client = McpClient.sync(clientSide) - .build(); - - List tools = client.listTools().tools(); - McpSchema.Tool tool = tools.getFirst(); - System.out.println(tool.toString()); - - McpSchema.CallToolResult callToolResult = client.callTool(McpSchema.CallToolRequest.builder().name(tool.name()).build()); - System.out.println(callToolResult.content().toString()); - - client.close(); - server.close(); - } -} diff --git a/Partner-Main/pom.xml b/Partner-Main/pom.xml index f05dea7b..ec937cf1 100644 --- a/Partner-Main/pom.xml +++ b/Partner-Main/pom.xml @@ -50,6 +50,12 @@ mcp 0.17.0 + + work.slhaf + Partner-Common + 0.5.0 + test + diff --git a/Partner-Main/src/test/java/experimental/InProcessMcpTransportTest.java b/Partner-Main/src/test/java/experimental/InProcessMcpTransportTest.java new file mode 100644 index 00000000..c3115f8b --- /dev/null +++ b/Partner-Main/src/test/java/experimental/InProcessMcpTransportTest.java @@ -0,0 +1,41 @@ +package experimental; + +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpStatelessServerFeatures; +import io.modelcontextprotocol.server.McpStatelessSyncServer; +import io.modelcontextprotocol.spec.McpSchema; +import org.junit.jupiter.api.Test; +import work.slhaf.partner.common.mcp.InProcessMcpTransport; + +import java.util.List; + +public class InProcessMcpTransportTest { + @Test + void inProcessMcpTransportTest() { + InProcessMcpTransport.Pair pair = InProcessMcpTransport.pair(); + InProcessMcpTransport clientSide = pair.clientSide(); + InProcessMcpTransport serverSide = pair.serverSide(); + McpStatelessSyncServer server = McpServer.sync(serverSide) + .capabilities(McpSchema.ServerCapabilities.builder().tools(true).build()) + .build(); + server.addTool(McpStatelessServerFeatures.SyncToolSpecification.builder() + .tool(McpSchema.Tool.builder().name("111").build()).callHandler((mcpTransportContext, callToolRequest) -> { + System.out.println(111); + return McpSchema.CallToolResult.builder().addContent(new McpSchema.TextContent("111")).build(); + }).build()); + McpSyncClient client = McpClient.sync(clientSide) + .build(); + + List tools = client.listTools().tools(); + McpSchema.Tool tool = tools.getFirst(); + System.out.println(tool.toString()); + + McpSchema.CallToolResult callToolResult = client.callTool(McpSchema.CallToolRequest.builder().name(tool.name()).build()); + System.out.println(callToolResult.content().toString()); + + client.close(); + server.close(); + } +}