SpringAi调用Mcp

看了很多官网示例,没有找到对应依赖,无法调用? 我这篇帮你解决:

用示例 高德地图map吧,可以自行注册一个高德应用,有免费额度,确实很好用

值得推荐 我的应用 | 高德控制台

我自己写了很多demo示例,可以关注我的Gitee码云,里面有 langchain4j的示例:

复制代码
1.可以通过mysql兼容历史对话存储,进行上下文通话
2.通过自定义模版类型,让ai返回对应类型
3.调用mcp的测试demo:McpTest
4.通过分词器切割文档,通过向量模型分解向量存入向量milvus数据库

觉得有帮助记得给个Start和关注哦

https://gitee.com/djsijdbxbsjs/java-ai-demo.git

接入 当天天气示例:

对应的依赖在最下面

properties:

复制代码
spring.ai.mcp.client.connection-timeout=60s
spring.ai.mcp.client.type=ASYNC

mcp:
  server:
    gd: ${MCPMAPGD}

import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
import io.modelcontextprotocol.spec.McpClientTransport;
import org.springframework.ai.mcp.client.autoconfigure.NamedClientMcpTransport;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Collections;
import java.util.List;

@Configuration
public class McpConfig {
    @Value("${mcp.server.gd}")
    private String serverGd;

    @Bean
    public List<NamedClientMcpTransport> mcpClientTransport() {
        McpClientTransport transport = HttpClientSseClientTransport
                .builder("https://mcp.amap.com")
                .sseEndpoint("/sse?key="+serverGd)
                .objectMapper(new ObjectMapper())
                .build();

        return Collections.singletonList(new NamedClientMcpTransport("amap", transport));
    }

}

import io.modelcontextprotocol.client.McpAsyncClient;
import io.modelcontextprotocol.spec.McpSchema;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RequestMapping("ai")
@RestController
public class AiMcpDemoController {

    @Autowired
    private List<McpAsyncClient> mcpAsyncClients;

    @GetMapping("/chat_ollama")
    public Mono<McpSchema.CallToolResult> test(String city) {
        McpAsyncClient mcpClient = mcpAsyncClients.get(0);
        return mcpClient.listTools()
                .flatMap(tools -> {
//                    logger.info("tools: {}", tools);
                    Map map = new HashMap<>();
                    map.put("city", city);
                    return mcpClient.callTool(
                            new McpSchema.CallToolRequest(
                                    "maps_weather",
                                    map
                            )
                    );
                });
    }
}

Spring ai 官网示例依赖是统一管理,当然你也可以不用

复制代码
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-client</artifactId>
        </dependency>



    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
相关推荐
虹科网络安全14 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
哥布林学者34 分钟前
深度学习进阶(十五)通道注意力 SE
机器学习·ai
axng pmje39 分钟前
Java语法进阶
java·开发语言·jvm
rKWP8gKv71 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本1 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
yaoxin5211231 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
一切皆是因缘际会2 小时前
AI数字分身的底层原理:破解意识、自我与人格复刻的核心难题
大数据·人工智能·ai·架构
翔云1234562 小时前
vLLM全解析:定义、用途与竞品对比
人工智能·ai·大模型