首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >什么是 MCP?如何在 Spring Boot + LangChain4j 中落地实战?

什么是 MCP?如何在 Spring Boot + LangChain4j 中落地实战?

作者头像
程序员NEO
发布2026-04-29 19:30:51
发布2026-04-29 19:30:51
2430
举报
MCP(Model Context Protocol,模型上下文协议) 是一种开放标准,旨在彻底改变 AI 与外部系统的交互方式。

如果说大模型是大脑,那么 MCP 就是它的神经末梢。它为 AI 提供了与外部工具、资源和服务交互的标准化方式,让 AI 能够访问最新数据、执行复杂操作,并与现有系统无缝集成。

你可以把 MCP 想象成 AI 应用的“USB 接口”。

就像 USB 为电脑连接鼠标、键盘、打印机提供了统一标准一样,MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方法。

看下面这张图,一目了然:

简单来说,通过 MCP 协议,你的 AI 应用可以轻松“插拔”别人提供的服务来实现更多功能,比如查询地理位置、操作数据库、部署网站,甚至是支付等等,而不需要为每个服务单独开发适配器。

在之前的文章中,我分享了如何利用 LangChain4j 通过自定义工具实现博客园文章搜索。今天,我们更进一步,利用 MCP 实现全网搜索内容,这也是 MCP 最典型的应用场景之一。

寻找 MCP 服务

首先,我们需要在 MCP 服务市场找到一个 Web Search 服务。

这里推荐 智谱的 Web Search 服务,因为它提供了 SSE(Server-Sent Events)在线调用服务。这意味着我们不需要自己在本地安装和启动繁琐的环境,直接通过网络调用即可,非常方便。

当然,使用第三方服务通常需要 API Key。你需要先去 平台官方获取 API Key,稍后在代码中会用到:

引入依赖与配置

比较遗憾的是,目前 LangChain4j 官方文档对 MCP 的支持描述还不够完善,甚至没有明确提到需要引入哪个依赖包。

经过一番探索,我从开源仓库中找到了对应的依赖。请在你的 pom.xml 中添加以下内容:

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/dev.langchain4j/langchain4j-mcp -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-mcp</artifactId>
    <version>1.1.0-beta7</version>
</dependency>

接着,在 application.yaml 配置文件中新增 API Key 的配置:

代码语言:javascript
复制
bigmodel:
  api-key: <Your Api Key>

编写 MCP 配置类

接下来是核心部分。我们需要新建一个配置类 mcp.McpConfig,初始化与 MCP 服务的通讯,并创建 McpToolProvider 的 Bean。

代码如下:

代码语言:javascript
复制
/**
 * @author BNTang
 */
@Configuration
public class McpConfig {

    @Value("${bigmodel.api-key}")
    private String apiKey;

    @Bean
    public McpToolProvider mcpToolProvider() {
        // 1. 配置与 MCP 服务的通讯方式 (SSE)
        McpTransport transport = new HttpMcpTransport.Builder()
                .sseUrl("https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization=" + apiKey)
                // 开启日志,方便调试查看交互细节
                .logRequests(true)
                .logResponses(true)
                .build();
        
        // 2. 创建 MCP 客户端
        McpClient mcpClient = new DefaultMcpClient.Builder()
                .key("neoMcpClient")
                .transport(transport)
                .build();
        
        // 3. 从 MCP 客户端获取工具提供者
        return McpToolProvider.builder()
                .mcpClients(mcpClient)
                .build();
    }
}

注意: 上面演示的是通过 SSE (HTTP) 的方式调用在线 MCP 服务。

如果你是通过 npxuvx 在本地启动 MCP 服务,则需要使用 StdioMcpTransport 来建立通讯,配置方式略有不同:

代码语言:javascript
复制
McpTransport transport = new StdioMcpTransport.Builder()
    .command(List.of("/usr/bin/npm", "exec", "@modelcontextprotocol/server-everything@0.6.2"))
    .logEvents(true) 
    .build();

在 AI Service 中集成

有了 McpToolProvider,我们就可以把它注入到 AI Service 中了。

代码语言:javascript
复制
@Resource
private McpToolProvider mcpToolProvider;

@Bean
public AiCodeHelperService aiCodeHelperService() {
    // 设置聊天记忆,最多保留最近 10 条消息
    ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages();

    // 构建 AI Service
    return AiServices.builder(AiCodeHelperService.class)
            .chatModel(qwenChatModel)
            .chatMemory(chatMemory)
            // RAG 检索增强生成
            .contentRetriever(contentRetriever)
            // 注册本地自定义工具
            .tools(new CnblogsArticleTool())
            // 注册 MCP 工具集
            .toolProvider(mcpToolProvider)
            .build();
}

至此,集成工作全部完成。

效果验证

让我们编写一个单元测试来验证效果:

代码语言:javascript
复制
@Test
void chatWithMcp() {
    String result = aiCodeHelperService.chat("帮我搜索一下,2025 年最新的 AI 发展趋势有哪些?");
    System.out.println(result);
}

执行测试,观察控制台日志。我们可以清晰地看到 AI 自动调用了 MCP 提供的搜索工具:

最终,AI 成功从网上检索到了最新内容,并整理成了答案返回给我们:

目前,LangChain4j 文档中关于 MCP 的部分还比较空白,希望本文的实战代码能帮你少走弯路。

虽然目前不建议用 Java 去开发 MCP 服务端(生态尚在完善中),但利用 Java 消费现有的 MCP 服务已经非常顺畅。

MCP 作为一个开放标准,正在快速发展。未来会有越来越多的 AI 应用和工具支持它,就像 USB 接口一样普及。建议大家持续关注,尽早掌握这一连接万物的“AI 接口”。

如果你觉得这篇文章对你有帮助,欢迎点赞、在看、转发,支持我继续分享更多 AI 实战干货!

如果这篇文章帮到了你,不妨点个分享给同样需要的朋友吧! 你的每一次支持,都是我持续创作的动力!💪

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员NEO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 寻找 MCP 服务
  • 引入依赖与配置
  • 编写 MCP 配置类
  • 在 AI Service 中集成
  • 效果验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档