Skip to content

Commit 59e4649

Browse files
committed
BAEL-9308: Java SDK for MCP
1 parent 3552a7a commit 59e4649

File tree

4 files changed

+65
-4
lines changed

4 files changed

+65
-4
lines changed

java-mcp/src/main/java/mcp/LoggingTool.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@ public class LoggingTool {
1111

1212
public static McpServerFeatures.SyncToolSpecification logPromptTool() {
1313
McpSchema.JsonSchema inputSchema = new McpSchema.JsonSchema("object", Map.of("prompt", String.class), List.of("prompt"), false, null, null);
14-
Map<String, Object> outputSchema = new HashMap<>();
15-
outputSchema.put("logged", "string");
1614

1715
return new McpServerFeatures.SyncToolSpecification(
18-
new McpSchema.Tool("logPrompt", "Log Prompt", "Logs a provided prompt", inputSchema, outputSchema, null, null), (exchange, args) -> {
16+
new McpSchema.Tool("logPrompt", "Log Prompt", "Logs a provided prompt", inputSchema, null, null, null), (exchange, args) -> {
1917
String prompt = (String) args.get("prompt");
2018
return McpSchema.CallToolResult.builder()
2119
.content(List.of(new McpSchema.TextContent("Input Prompt: " + prompt)))
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package mcp;
2+
3+
import java.io.IOException;
4+
import java.util.Map;
5+
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
import com.fasterxml.jackson.databind.ObjectMapper;
10+
11+
import io.modelcontextprotocol.client.McpClient;
12+
import io.modelcontextprotocol.client.McpSyncClient;
13+
import io.modelcontextprotocol.client.transport.ServerParameters;
14+
import io.modelcontextprotocol.client.transport.StdioClientTransport;
15+
import io.modelcontextprotocol.json.jackson.JacksonMcpJsonMapper;
16+
import io.modelcontextprotocol.spec.McpClientTransport;
17+
import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;
18+
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
19+
import io.modelcontextprotocol.spec.McpSchema.ListToolsResult;
20+
21+
22+
public class McpClientApp2 {
23+
24+
private static final Logger log = LoggerFactory.getLogger(McpClientApp2.class);
25+
26+
public static void main(String[] args) {
27+
String jarPath = new java.io.File("java-mcp/target/java-mcp-1.0.0-SNAPSHOT.jar").getAbsolutePath();
28+
ServerParameters params = ServerParameters.builder("java")
29+
.args("-jar", jarPath)
30+
.build();
31+
32+
JacksonMcpJsonMapper jsonMapper = new JacksonMcpJsonMapper(new ObjectMapper());
33+
McpClientTransport transport = new StdioClientTransport(params, jsonMapper);
34+
35+
McpSyncClient client = McpClient.sync(transport)
36+
.build();
37+
38+
client.initialize();
39+
40+
ListToolsResult tools = client.listTools();
41+
McpClientApp2.log.info("Tools exposed by the server:");
42+
tools.tools()
43+
.forEach(tool -> System.out.println(" - " + tool.name()));
44+
45+
McpClientApp2.log.info("\nCalling 'logPrompt' tool...");
46+
CallToolResult result = client.callTool(new CallToolRequest("logPrompt", Map.of("prompt", "Hello from MCP client!")));
47+
McpClientApp2.log.info("Result: " + result.content());
48+
49+
client.closeGracefully();
50+
}
51+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<configuration>
2+
<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
3+
<target>System.err</target>
4+
<encoder>
5+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
6+
</encoder>
7+
</appender>
8+
9+
<root level="info">
10+
<appender-ref ref="STDERR"/>
11+
</root>
12+
</configuration>

java-mcp/src/test/java/mcp/McpClientAppServerUnitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void whenLogPromptToolCalled_thenReturnsResult() {
3838
}
3939

4040
@Test
41-
void whenCalledViaClient_thenReturnsLoggedResult() throws Exception {
41+
void whenCalledViaClient_thenReturnsLoggedResult() {
4242
McpSchema.CallToolRequest request = new McpSchema.CallToolRequest("echo", Map.of("message", "Client-server test message"));
4343
McpSchema.CallToolResult result = client.callTool(request);
4444

0 commit comments

Comments
 (0)