如果说大模型是大脑,那么 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中添加以下内容:
<!-- 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 的配置:
bigmodel: api-key: <Your Api Key>编写 MCP 配置类
接下来是核心部分。我们需要新建一个配置类mcp.McpConfig,初始化与 MCP 服务的通讯,并创建McpToolProvider的 Bean。
代码如下:
/** * @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?Authorizatinotallow=" + 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 服务。
如果你是通过npx或uvx在本地启动 MCP 服务,则需要使用StdioMcpTransport来建立通讯,配置方式略有不同:
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 中了。
@Resource private McpToolProvider mcpToolProvider; @Bean public AiCodeHelperService aiCodeHelperService() { // 设置聊天记忆,最多保留最近 10 条消息 ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10); // 构建 AI Service return AiServices.builder(AiCodeHelperService.class) .chatModel(qwenChatModel) .chatMemory(chatMemory) // RAG 检索增强生成 .contentRetriever(contentRetriever) // 注册本地自定义工具 .tools(new CnblogsArticleTool()) // 注册 MCP 工具集 .toolProvider(mcpToolProvider) .build(); }至此,集成工作全部完成。
效果验证
让我们编写一个单元测试来验证效果:
@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 接口”。
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。