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>
相关推荐
null不是我干的7 分钟前
基于黑马教程——微服务架构解析(一)
java·微服务·架构
Bonnie_121510 分钟前
04-netty基础-Reactor三种模型
java·nio·jetty
懂得节能嘛.13 分钟前
【SpringAI实战】ChatPDF实现RAG知识库
java·后端·spring
探索java18 分钟前
Spring 解析 XML 配置文件的过程(从读取 XML 到生成 BeanDefinition)
xml·java·spring·xmlbeanfactory
半旧夜夏40 分钟前
Bug猫学习史#1:面向对象
java
wenb1n1 小时前
【安全漏洞】隐藏在HTTP请求中的“隐形杀手”:Host头攻击漏洞深度剖析
java·后端
字节跳跃者1 小时前
SpringBoot AOP + Redis 延时双删功能实战
java·后端
一只叫煤球的猫1 小时前
你真的处理好 null 了吗?——11种常见但容易被忽视的空值处理方式
java·后端·面试
在钱塘江1 小时前
《On Java进阶卷》- 笔记-2-对象传递和返回
java·后端
a cool fish(无名)1 小时前
rust-模块树中引用项的路径
java·前端·rust