08-mcp-tool-calling MCP 工具调用:让大模型连接外部工具服务

📅 2026/7/14 19:56:30 👁️ 阅读次数 📝 编程学习
08-mcp-tool-calling MCP 工具调用:让大模型连接外部工具服务

LangChain4j 进阶实战:第 8 篇,MCP 工具调用,让模型连接外部工具服务

1. MCP 解决什么问题

本地@Tool适合把当前 Java 应用里的方法暴露给模型。但真实系统里,工具可能分散在多个服务:

  • 天气服务。
  • 订单服务。
  • 库存服务。
  • 日历服务。
  • 地图服务。
  • 企业内部系统。
  • 第三方 SaaS。

如果每个工具都要打包进当前应用,系统会越来越重。MCP,也就是 Model Context Protocol,可以把工具做成独立服务,让模型通过标准协议发现和调用工具。

2. 本地工具和 MCP 的区别

方式优点缺点适合场景
本地@Tool简单、低延迟、易调试工具和应用强耦合小工具、内部方法
MCP服务化、可复用、跨应用部署和协议更复杂多系统工具、企业工具平台

我的理解是:@Tool是单体应用里的工具机制,MCP 是工具服务化之后的协议层。

3. LangChain4j 作为 MCP Client

McpController中创建 MCP 连接:

StreamableHttpMcpTransporttransport=StreamableHttpMcpTransport.builder().url(MCP_SSE_URL).logRequests(true).logResponses(true).build();McpClientmcpClient=newDefaultMcpClient.Builder().transport(transport).build();

然后把 MCP 工具转换为 ToolProvider:

ToolProvidertoolProvider=McpToolProvider.builder().mcpClients(