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>
相关推荐
冰_河17 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程20 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
EdisonZhou21 小时前
MAF快速入门(18)Agent Skill 快速开始
llm·aigc·agent
躺平大鹅21 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者1 天前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺1 天前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart1 天前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP1 天前
MyBatis-mybatis入门与增删改查
java
会写代码的柯基犬1 天前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm