java mcp client调用 (modelcontextprotocol)

在 魔搭社区 www.modelscope.cn/my/overview 注册了mcp服务,怎么也Java调用不通,终于可以使用了。

如果有帮助,点赞收藏

Java代码

ini 复制代码
package com.example.demo;

import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.McpSyncClient;
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
import io.modelcontextprotocol.spec.McpSchema;
import org.springframework.web.reactive.function.client.WebClient;

import java.time.Duration;

public class Test {

    /**
     * https://github.com/modelcontextprotocol/java-sdk/blob/0.10.x/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
     * https://mcpcn.com/docs/sdk/java/mcp-client/
     *
     * @param args
     */
    public static void main(String[] args) {
        WebClient.Builder webClientBuilder = WebClient.builder().baseUrl("https://mcp.api-inference.modelscope.net");
        WebFluxSseClientTransport transport = WebFluxSseClientTransport.builder(webClientBuilder).sseEndpoint("/fafafbadfas34(这里换成你自己的)/sse").build();
//        McpSyncClient client = McpClient.sync(transport).requestTimeout(Duration.ofSeconds(100)).build();

        McpSyncClient client = McpClient.sync(transport)
                .requestTimeout(Duration.ofSeconds(100))
                .loggingConsumer(notification -> {
                    System.out.println("Received log message: " + notification.data());
                })
                .capabilities(McpSchema.ClientCapabilities.builder()
                        .roots(true)      // Enable roots capability
                        .sampling()       // Enable sampling capability
                        .build())
                .build();

        McpSchema.InitializeResult initialize = client.initialize();

        Object ping = client.ping();

        McpSchema.ListToolsResult listToolsResult = client.listTools();

     /*   Mono<McpSchema.ListToolsResult> listToolsResultMono = client.listTools();
        listToolsResultMono.subscribe(
                result -> System.out.println("List tools result: " + result),
                error -> System.err.println("Error: " + error)
        );*/

        System.out.println(1);
    }
}

maven

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>3.5.0</version>
       <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
       <license/>
    </licenses>
    <developers>
       <developer/>
    </developers>
    <scm>
       <connection/>
       <developerConnection/>
       <tag/>
       <url/>
    </scm>
    <properties>
       <java.version>17</java.version>
    </properties>
    <dependencies>
       <dependency>
          <groupId>io.modelcontextprotocol.sdk</groupId>
          <artifactId>mcp</artifactId>
       </dependency>
       <!-- 基于 Spring WebFlux 的 SSE 客户端和服务器传输 -->
       <dependency>
          <groupId>io.modelcontextprotocol.sdk</groupId>
          <artifactId>mcp-spring-webflux</artifactId>
       </dependency>



       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
          <groupId>io.modelcontextprotocol.sdk</groupId>
          <artifactId>mcp-spring-webflux</artifactId>
       </dependency>


       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
       </dependency>
    </dependencies>

    <build>
       <plugins>
          <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
       </plugins>
    </build>

    <dependencyManagement>
       <dependencies>
          <dependency>
             <groupId>io.modelcontextprotocol.sdk</groupId>
             <artifactId>mcp-bom</artifactId>
             <version>0.10.0</version>
             <type>pom</type>
             <scope>import</scope>
          </dependency>
       </dependencies>
    </dependencyManagement>
</project>
相关推荐
艾迪的技术之路22 分钟前
redisson使用lock导致死锁问题
java·后端·面试
今天背单词了吗98040 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师43 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
东阳马生架构1 小时前
订单初版—2.生单链路中的技术问题说明文档
java
G.E.N.1 小时前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
咖啡啡不加糖1 小时前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南1 小时前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
Percep_gan2 小时前
idea的使用小技巧,个人向
java·ide·intellij-idea