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>
|
<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>
|
<properties>
|
||||||
<maven.compiler.source>21</maven.compiler.source>
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
<maven.compiler.target>21</maven.compiler.target>
|
<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.common.McpTransportContext;
|
||||||
import io.modelcontextprotocol.json.McpJsonMapper;
|
import io.modelcontextprotocol.json.McpJsonMapper;
|
||||||
import io.modelcontextprotocol.json.TypeRef;
|
import io.modelcontextprotocol.json.TypeRef;
|
||||||
import io.modelcontextprotocol.server.McpServer;
|
|
||||||
import io.modelcontextprotocol.server.McpStatelessServerFeatures;
|
|
||||||
import io.modelcontextprotocol.server.McpStatelessServerHandler;
|
import io.modelcontextprotocol.server.McpStatelessServerHandler;
|
||||||
import io.modelcontextprotocol.server.McpStatelessSyncServer;
|
|
||||||
import io.modelcontextprotocol.spec.McpClientTransport;
|
import io.modelcontextprotocol.spec.McpClientTransport;
|
||||||
import io.modelcontextprotocol.spec.McpSchema;
|
import io.modelcontextprotocol.spec.McpSchema;
|
||||||
import io.modelcontextprotocol.spec.McpStatelessServerTransport;
|
import io.modelcontextprotocol.spec.McpStatelessServerTransport;
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import reactor.core.publisher.Sinks;
|
import reactor.core.publisher.Sinks;
|
||||||
|
|
||||||
@@ -159,32 +153,3 @@ public final class InProcessMcpTransport implements McpClientTransport, McpState
|
|||||||
return McpClientTransport.super.protocolVersions();
|
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>
|
<artifactId>mcp</artifactId>
|
||||||
<version>0.17.0</version>
|
<version>0.17.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>work.slhaf</groupId>
|
||||||
|
<artifactId>Partner-Common</artifactId>
|
||||||
|
<version>0.5.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<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