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 中添加以下内容:
接着,在 application.yaml 配置文件中新增 API Key 的配置:
编写 MCP 配置类
接下来是核心部分。我们需要新建一个配置类 mcp.McpConfig,初始化与 MCP 服务的通讯,并创建 McpToolProvider 的 Bean。
代码如下:
注意: 上面演示的是通过 SSE (HTTP) 的方式调用在线 MCP 服务。
如果你是通过 npx 或 uvx 在本地启动 MCP 服务,则需要使用 StdioMcpTransport 来建立通讯,配置方式略有不同:
在 AI Service 中集成
有了 McpToolProvider,我们就可以把它注入到 AI Service 中了。
图片
至此,集成工作全部完成。
效果验证
让我们编写一个单元测试来验证效果:
执行测试,观察控制台日志。我们可以清晰地看到 AI 自动调用了 MCP 提供的搜索工具:
图片
最终,AI 成功从网上检索到了最新内容,并整理成了答案返回给我们:
图片
目前,LangChain4j 文档中关于 MCP 的部分还比较空白,希望本文的实战代码能帮你少走弯路。
虽然目前不建议用 Java 去开发 MCP 服务端(生态尚在完善中),但利用 Java 消费现有的 MCP 服务已经非常顺畅。
MCP 作为一个开放标准,正在快速发展。未来会有越来越多的 AI 应用和工具支持它,就像 USB 接口一样普及。建议大家持续关注,尽早掌握这一连接万物的“AI 接口”。
文章来自:51CTO
