历史文章

Spring AI:对接DeepSeek实战
Spring AI:对接官方 DeepSeek-R1 模型 —— 实现推理效果
Spring AI:ChatClient实现对话效果
Spring AI:使用 Advisor 组件 - 打印请求大模型出入参日志
Spring AI:ChatMemory 实现聊天记忆功能
Spring AI:本地安装 Ollama 并运行 Qwen3 模型
Spring AI:提示词工程
Spring AI:提示词工程 - Prompt 角色分类(系统角色与用户角色)
Spring AI:基于 “助手角色” 消息实现聊天记忆功能
Spring AI:结构化输出 - 大模型响应内容
Spring AI:Docker 安装 Cassandra 5.x(限制内存占用)&& CQL
Spring AI:整合 Cassandra - 实现聊天消息持久化
Spring AI:多模态 AI 大模型
Spring AI:文生图:调用通义万相 AI 大模型
Spring AI:文生音频 - cosyvoice-V2
Spring AI:文生视频 - wanx2.1-i2v-plus
Spring AI:上手体验工具调用(Tool Calling)
Spring AI:整合 MCP Client - 调用高德地图 MCP 服务
Spring AI:搭建自定义 MCP Server:获取 QQ 信息

上文中,我们自行搭建了一个 MCP Server 服务,并成功运行了起来, 此 MCP Server 对外提供了一个工具 —— “根据 QQ 号获取 QQ 信息”。

本文中,我们使用 MCP Client 来对接一下这个自定义的 MCP Server, 通过向 AI 大模型提问,看看是否能能够获取对应 QQ 号的相关信息。

添加配置

首先,编辑 applicaiton.yml 文件,添加连接自定义 MCP Server 的相关配置项,具体如下:

	spring:
  // 省略...
  ai:
    // 省略...
    mcp:
      client:
        type: sync # 客户端使用同步通信模式
        request-timeout: 20s # 设置单次请求超时时间
        // 省略...
        sse: # SSE (Server-Sent Events) 流式响应配置
          connections: # 定义 SSE 连接端点
            qq-mcp-server: # 自定义连接名称(可任意命名)
              url: http://localhost:8000 # MCP 服务实际地址

然后,我们将 McpChatClientController 控制器中(Spring AI:整合 MCP Client - 调用高德地图 MCP 服务), /mcp/ai/generateStream 接口的记忆功能注释掉,不注释掉的话,如果查询某个 QQ 号调用 MCP Server 超时,导致后续再次查询此 QQ 号,大模型会只接根据记忆直接回答,不会重新调用 MCP Server 的情况发生!

测试

完成以上配置后,重启 AI 机器人后端服务,观察控制台日志日志,如下图,若包含 name=mcp-server-qq, version=1.0.0 信息,说明成功连接到了自定义的 MCP Server 了:

在这里插入图片描述
接着,我们提问如下,随便测试一个 QQ 号:

123456 这个 qq 号的信息展示一下,头像需要以 Markdown 格式图片格式返回

发出提问后,查看 MCP Server 项目的控制台日志,可以发现 QQTool 工具成功被调用了。

mcp-servers-config.json 对接多个 MCP Server

之前文章中我们整合了高德地图 MCP 服务,当时的配置项,是直接定义在 json 文件中的,那么,此种方式如何对接多个 MCP 服务呢?接下来,我们将尝试再添加一个新的 MCP 服务 —— @modelcontextprotocol/server-filesystem。

介绍

@modelcontextprotocol/server-filesystem 是 Model Context Protocol (MCP) 生态中的官方参考服务器之一,专注于为大型语言模型(LLM)提供安全、标准化的文件系统访问能力。其核心作用是将本地文件系统的操作(如读取、搜索文件)封装为 AI 可调用的工具,从而增强模型对实时数据的处理能力。

添加 MCP 服务配置

编辑 mcp-servers-config.json 文件,在 /mcpServers 节点下,额外添加 filesystem 的 MCP 服务配置:

{
  "mcpServers": {
    "amap-maps": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@amap/amap-maps-mcp-server"
      ],
      "env": {
        "AMAP_MAPS_API_KEY": "725178d06255921fee4111576572ab13"
      }
    },
    "filesystem": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "D:\\",
        "E:\\"
      ]
    }
  }
}

TIP: 上述配置项中,D:\ 和 E:\ 表示授权能够访问的路径。

测试

完成上述工作后,重启后端服务,观察控制台日志,会发现除了高德地图 MCP 服务外,Filesystem MCP 服务也通信成功了,并且能够访问的文件夹为 D:\ 盘和 E:\ 盘:

在这里插入图片描述

接下来,对 AI 大模型提问 “我的 d 盘下有哪些文件夹”。会列出系列文件。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐