基于spring-ai实现一个MCP server

MCP协议简介

Arthropic公司推出了模型上下文协议(Model Context Protocol, MCP),通过标准化的协议,旨在解决LLM与外部工具集成的标准化问题。MCP希望能够像Type-C接口一样成为AI与各种数据源和工具之间的"通用接口",使AI应用程序开发和集成变得简单和统一。 在MCP没有出现之前,开发者开发一个agent应用,依赖工具来扩展agent的能力边界,需要开发者手动编写工具注册逻辑,然后将用户输入和工具schema信息塞到大模型中,大模型会输出工具和对应的参数信息。而MCP的出现,提供了以下关键价值:

  1. 统一的集成标准:一个协议对接所有集成,提高开发效率,降低开发难度;
  2. 工具复用:这些工具能直接在其他应用被复用,减少重复的开发工作,例如,你可以使用到其他人开发的工具。
  3. 自动工具发出:支持动态工具发现和上下文处理。

MCP核心概念

MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:

  • MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如Claude Desktop、IDE 或 AI 工具)。
  • MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。
  • MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。
  • 本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。
  • 远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)。

MCP Server实践

引入webmvc sse依赖

xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
        <version>1.0.0-M6</version>
    </dependency>

</dependencies>

注册tools信息

kotlin 复制代码
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ToolsPublisher {

    @Bean
    ToolCallbackProvider myTools(UserTools userTools) {
        return MethodToolCallbackProvider
                .builder()
                .toolObjects(userTools)
                .build();
    }

}

配置文件

yaml 复制代码
spring:
  application:
    name: ai-project
  ai:
    mcp:
      server:
        name: webmvc-mcp-server
        version: 1.0.0
        type: ASYNC
        stdio: false
        sse-message-endpoint: /mcp/messages

当完成上述操作后,能发现一个mcp server已经提供了,从日志中可以发现工具注册的日志信息:

cherry studio

这里不想实现MCP Client,因此使用现成的client产品cherry studio,需要操作以下几步:

  1. 配置大模型,这里我使用阿里云百炼的免费额度:
  2. 配置MCP Server,如下图: 能看到配置了MCP Server暴露的sse URL后,能找到对应可用的工具列表信息。
  3. 接下来选择MCP服务器,即可发起调用:
相关推荐
孟健13 分钟前
出海开发者资金合规:从港卡结汇到完税申报实操
后端·架构
乌暮29 分钟前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
架构技术专栏1 小时前
Skill 有效性与稳定性评估:用对照、重复与证据判断价值
后端
拔剑纵狂歌2 小时前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
再吃一根胡萝卜2 小时前
把本地 RAG 问答做"准":多轮指代消解 + 云端语义向量 + TXT 章节切分
后端
怕浪猫2 小时前
2026年9月面18个后端
后端·面试·github
IT_陈寒2 小时前
Vue 这个响应式陷阱,我的头发都掉没了
前端·人工智能·后端
谁在黄金彼岸2 小时前
trae的gitee mcp莫名错误
后端
前端的日常2 小时前
一个人+AI做情侣食谱小程序,30天纯赚
前端·javascript·后端
再吃一根胡萝卜3 小时前
给 RAG 问答加上「多轮指代消解」:让"他 / 这个"不再翻车
后端