上一篇我们完成了MCP服务器的云端部署,这次换个视角——在本地搭建客户端,让它能"对话"运行在Amazon Bedrock AgentCore Runtime上的会议搜索服务。
完整代码已开源在spring-ai-1.1-conference-app-agent-local仓库。核心依赖有四块:spring-ai-bom提供Spring AI基础能力,spring-boot-starter-web把客户端做成Web应用,spring-ai-starter-model-bedrock-converse对接Bedrock基础模型,spring-ai-starter-mcp-client-webflux则负责异步MCP通信——想同步的话换spring-ai-starter-mcp-client就行。
配置环节需要填三类参数。Spring AI层面:区域选us-east-1,超时设10分钟,默认模型用amazon.nova-lite-v1:0,最大token数100,客户端类型指定ASYNC。应用层面则要回填MCP服务器部署时生成的值:Cognito用户池名称、客户端名称、资源服务器ID,以及最关键的runtime ID(示例中是spring_ai_conference_search_agentcore_runtime-6dnMIL9455)。
业务逻辑集中在SpringAIAgentController。这里用ChatClient.Builder组装出对话客户端,ToolCallingChatOptions里可以换模型——示例代码就换成了us.anthropic.claude-sonnet-4-6,token上限提到2000。AWS相关客户端(STS和Cognito)也在这里初始化,用于后续的权限流转。
有个细节:application.properties里还埋了amazon.bedrock.agentcore.gateway.url这类"占位符",当前版本用不上,是为后续扩展预留的接口。这种"先占位、后填坑"的做法在Spring生态里很常见。
从架构上看,这套方案把"模型调用"和"工具执行"解耦了:Spring AI负责与Bedrock模型交互,MCP协议负责与远端AgentCore Runtime上的业务逻辑交互。本地开发时不用关心服务器端的Lambda或IAM配置,只需要正确的runtime ID和Cognito凭证就能连调。
热门跟贴