mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
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.
This commit is contained in:
@@ -11,6 +11,14 @@
|
||||
|
||||
<artifactId>Partner-Common</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/io.modelcontextprotocol.sdk/mcp -->
|
||||
<dependency>
|
||||
<groupId>io.modelcontextprotocol.sdk</groupId>
|
||||
<artifactId>mcp</artifactId>
|
||||
<version>0.17.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<properties>
|
||||
<maven.compiler.source>21</maven.compiler.source>
|
||||
<maven.compiler.target>21</maven.compiler.target>
|
||||
|
||||
@@ -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<McpSchema.Tool> 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();
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,12 @@
|
||||
<artifactId>mcp</artifactId>
|
||||
<version>0.17.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>work.slhaf</groupId>
|
||||
<artifactId>Partner-Common</artifactId>
|
||||
<version>0.5.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
|
||||
@@ -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<McpSchema.Tool> 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user