SpringAI MCP

课程笔记

MCP(模型上下文协议)

之前SpringAI中每一个tool都需要自己编写,MCP提供了一个统一的协议,这样所有人都可以按照这个协议来编写工具,模型也可以按照这个协议来调用工具,形成一个生态系统。

我们想用的时候直接去调用他们写好的工具就行了,不需要自己再写一遍了。一般把工具用server来提供出来,所以我们只要搭建一个client去链接他们的server就行了。如图:

MCP工具查询网站可以查询有什么工具,工具的调用方式等信息。

入门

可以把之前的时间工具改成MCP Server的形式,提供一个接口让别人调用,作为入门案例。

MCP Server

新建项目,依赖

xml 复制代码
<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>
java 复制代码
@Configuration
public class McpConfig {
   @Bean
   public ToolCallbackProvider weatherTools(TimeTools tools) {
       return MethodToolCallbackProvider.builder().toolObjects(tools).build();
   }
}

MCP Client

依赖:

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

配置文件

yaml 复制代码
spring:
  ai:
    zhipuai:
      api-key: 你的apikey
    mcp:
      client:
        sse:
          connections:
            server1:
              url: http://localhost:8080 # mcp服务url
  http:
    client:
      read-timeout: 100000
server:
  port: 8081

Controller

java 复制代码
public CoffeeController(VectorStore vectorStore, ChatClient.Builder chatClientBuilder, ToolCallbackProvider toolCallbackProvider) {
        this.vectorStore = vectorStore;
        VectorStoreDocumentRetriever vectorStoreDocumentRetriever = VectorStoreDocumentRetriever.builder()
                .vectorStore(vectorStore)
                .topK(3)
                .similarityThreshold(0.5)
                .build();
        RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
                .documentRetriever(vectorStoreDocumentRetriever)
                .build();

        this.chatClient = chatClientBuilder.defaultAdvisors(retrievalAugmentationAdvisor)
               .defaultToolCallbacks(toolCallbackProvider.getToolCallbacks())
               .build();
    }

网页抓取MCP server

MCP server部署

在服务器上

yaml 复制代码
version: "3.8"
services:
   fetcher-mcp:
      image: ghcr.io/jae-jae/fetcher-mcp:latest
      container_name: fetcher-mcp
      restart: unless-stopped
      ports:
         - "3000:3000"
      environment:
         - NODE_ENV=production
      # Using host network mode on Linux hosts can improve browser access efficiency
      # network_mode: "host"
      volumes:
       # For Playwright, may need to share certain system paths
         - /tmp:/tmp
      # Health check
      healthcheck:
         test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
         interval: 30s
         timeout: 10s
         retries: 3

在这个文件所在目录下运行docker-compose up -d命令启动服务。

MCP client调用

配置文件

yaml 复制代码
spring:
  ai:
    zhipuai:
      api-key: 你的API

  mcp:
   client:
     sse:
       connections:
         server1:
           url: http://localhost:8080 # mcp服务url
         fetcher-mcp:
           url: http://自己的ip地址:3000
java 复制代码
@GetMapping("/fetcher")
public String fetcher(String question) {
  return chatClient.prompt()
          .system("你是一个网页爬取专家,你可以运用工具爬取指定网页的内容并且进行总结")
          .user(question)
          .call().content();
}
相关推荐
咩咩啃树皮12 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚12 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白14 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司15 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
Smoothcloud润云15 小时前
国内GPU算力租赁平台横向测评:资源、成本、稳定性三维对比
人工智能·ai·云计算·gpu算力·gpu
爱笑的源码基地16 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415916 小时前
TCP超时重传机制是为了解决什么问题?
java
赵康18 小时前
AI 写代码之后,Code Review 会议怎么开
ai·llm·skill
莫逸风18 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
神奇霸王龙18 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程