用途:本技能用于用 LangChain4j 设计与实现 MCP(模型上下文协议)集成,覆盖工具、资源与提示面的定义、传输方式与启动模型选择,以及在暴露给智能体或应用前过滤不安全能力。适用于构建 Java MCP 服务端、将 LangChain4j 接入一个或多个外部 MCP 服务、在 Spring Boot 中接线 MCP、按租户或角色过滤工具、为 MCP 交互增加可观测性与容错、以及审查提示注入和副作用风险。
主要能力:先设计 MCP 面(有明确输入与副作用的工具、只读或结构化数据资源、确有复用价值的提示模板),保持命名稳定、描述具体、模式精简;用职责单一的类分别实现工具、资源、提示提供者,执行前校验参数并返回清晰错误;传输方式上,本地集成、CLI 工具与边车进程用 stdio,远程或共享服务用 HTTP 或 SSE,并固定外部服务版本、记录启动、认证与监控方式。
使用方式:在 LangChain4j 消费 MCP 服务时,于应用启动阶段初始化客户端;仅在可接受元数据过期时缓存工具列表;按信任级别、环境或用户权限过滤工具;对危险工具默认失败关闭而非全量暴露。示例模式包括:用 ToolProvider 定义工具规范并配合 StdioServer 启动本地服务;用 McpToolProvider 的 mcpClients、failIfOneServerFails 和 filter 将外部 MCP 工具接入 AiServices,并排除名称以 admin_ 开头的工具。
最佳实践:工具保持聚焦、确定、描述清晰,优先显式模式而非自由字符串参数,只读资源与有副作用工具分离,默认过滤或禁用特权工具,固定外部 MCP 包或容器版本,采集连接失败、调用延迟与工具错误率指标,较长协议细节放入 references/。
限制与警告:外部 MCP 服务属不可信集成边界,可能返回恶意或误导内容;未经校验不得将原始资源内容直接转发给自主工具执行;LangChain4j 与 MCP 部分 API 演进较快,需按项目实际版本调整类名与构建器;长时间运行或有状态工具需明确超时、取消与清理行为;stdio 服务需管理进程生命周期与可靠日志。