Spring AI中如何将MCP客户端的资源提供给ChatClient
Spring AI中如何将MCP客户端的资源提供给ChatClient
看起来你已经把MCP工具集成到ChatClient里了,这步走得很顺畅!关于把MCP客户端的资源对接给ChatClient的问题,确实官方这块的文档和例子都比较少,我来给你分享几个可行的实操思路:
核心方案:通过ResourceRetriever绑定MCP资源
Spring AI里对资源的访问都是通过ResourceRetriever接口统一处理的,你可以基于已有的mcpSyncClients创建一个MCP专属的资源检索器,再把它关联到ChatClient的构建流程中——核心就是调用.resourceRetriever()方法完成绑定,具体代码如下:// 基于MCP同步客户端创建资源检索器 McpResourceRetriever mcpResourceRetriever = new McpResourceRetriever(mcpSyncClients); // 构建ChatClient时加入资源检索器配置 ChatClient chatClient = chatClientBuilder .defaultToolCallbacks(new SyncMcpToolCallbackProvider(mcpSyncClients)) .resourceRetriever(mcpResourceRetriever) .build();配置完成后,ChatClient就可以通过这个检索器自动访问MCP服务端上的所有可访问资源了。
可选:给资源加过滤规则
如果你不想让ChatClient访问MCP上的所有资源,还可以给检索器加路径过滤,比如只允许读取documents/目录下的资源:McpResourceRetriever mcpResourceRetriever = new McpResourceRetriever(mcpSyncClients) .withResourcePathFilter(resourcePath -> resourcePath.startsWith("documents/"));验证配置是否生效
你可以在prompt里直接测试,比如问模型“帮我读取MCP上的xxx文档名称,然后总结它的核心内容”。如果配置没问题,模型会自动调用你设置的MCP资源检索器去拉取内容,再基于内容生成回答。
另外,你已经能通过MCP Inspector看到资源列表和内容,说明MCP客户端的基础配置是正常的,只要把检索器和ChatClient绑定好,基本就能解决问题。如果还是遇到异常,可以检查下MCP客户端的权限是否足够读取目标资源,或者有没有其他ResourceRetriever的配置覆盖了当前设置。
内容来源于stack exchange
相关产品推荐
相关产品推荐

