首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

利用 MCP 服务器增强 Amazon Bedrock Agents 的能力

  • 25-04-22 00:40
  • 3821
  • 11198
juejin.cn

一句话总结

本文介绍了如何利用 Amazon Bedrock Agents 和 MCP 协议,构建能够轻松连接 AWS 服务的 AI 智能体,实现对 AWS 消费的自然语言分析。

摘要

本文介绍了如何利用 Amazon Bedrock Agents 和模型上下文协议 (MCP) 构建 AI 智能体,以实现对 AWS 消费的自然语言分析和管理。通过 MCP,智能体可以标准化的方式访问各种 AWS 服务的数据源和工具,如 AWS 成本管理器、Amazon CloudWatch 和 Perplexity AI 等,从而降低集成成本、提高开发效率。文章详细阐述了 MCP 的客户端 - 服务器架构,并提供了一个实际用例,展示了如何通过 Inline Agent 创建一个能够理解用户意图并提供定制化 AWS 消费分析的智能体。Inline Agent 具有动态配置的特性,能够灵活地指定基础模型、指令和 Action Group。

AWS 机器学习博客:利用 MCP 服务器增强 Amazon Bedrock Agents 的能力

作者:Mark Roy, Amit Arora, Eashan Kaushik, Madhur Prashant, Andy Palmer

发布日期:2025年4月1日

关键词:Amazon Bedrock、Amazon Bedrock Agents、生成式 AI、MCP 协议


引言:AI 代理与 MCP 的结合

AI 代理通过与外部系统交互、执行复杂工作流并保持上下文连贯性,显著扩展了大型语言模型(LLM)的能力。Amazon Bedrock Agents 通过将基础模型(FMs)与数据源、应用程序和用户输入相结合,支持这一功能,通过 API 集成和知识库增强完成目标导向的任务。然而,将这些代理连接到多样化的企业系统往往面临开发瓶颈,每个集成都需要定制代码和持续维护。这种标准化难题减缓了在企业数字生态系统中提供上下文 AI 协助的速度。而模型上下文协议(Model Context Protocol, MCP)提供了一个标准化的解决方案,让 LLM 能够轻松连接数据源和工具。

如今,MCP 为代理提供了标准化的工具访问接口,任务范围不断扩展。未来,MCP 还可能通过市场提升代理和工具的可发现性,促进上下文共享和协作工作空间,推动行业内代理互操作性的扩展。

在本文中,我们将展示如何构建一个利用 MCP 访问数据源的 Amazon Bedrock 代理,以快速开发生成式 AI 应用。我们将通过一个示例,演示如何通过 MCP 连接 AWS Cost Explorer、Amazon CloudWatch 和 Perplexity AI,构建一个理解 AWS 支出的代理。你可以参考本文的代码,将代理连接到其他 MCP 服务器,解决你的业务挑战。我们展望一个未来,代理能够访问不断增长的 MCP 服务器列表,完成多样化的任务。


什么是 MCP 协议?

MCP 是由 Anthropic 开发的一个开源协议,旨在为 AI 模型提供连接任意数据源或工具的标准化方式。它采用客户端-服务器架构,开发者可以通过轻量级 MCP 服务器暴露数据,同时构建作为 MCP 客户端的 AI 应用。通过这种架构,MCP 赋予用户构建更强大、上下文感知的 AI 代理能力,轻松访问所需信息和工具。无论是外部系统、内部数据存储还是工具,MCP 都能以统一的方式对接。MCP 的客户端-服务器设计还允许代理在新功能上线时无缝获取更新,无需修改应用代码。

MCP 架构组件

MCP 的架构包括以下组件(见下图):

  • 主机(Host):需要通过 MCP 协议访问数据的程序或 AI 工具,如 Claude Desktop、IDE 或其他 AI 应用。
  • 客户端(Client):与服务器一对一连接的协议客户端。
  • 服务器(Server):通过标准化 MCP 暴露能力的轻量级程序。
  • 本地数据源:数据库、本地服务等,MCP 服务器可安全访问。
  • 远程服务:通过 API 连接的互联网外部系统。

![MCP 架构图](插图:MCP 客户端-服务器架构)


如何将 MCP 与 Amazon Bedrock Agents 结合使用

本文提供了一个分步指南,展示如何将你喜爱的 MCP 服务器与 Amazon Bedrock 代理连接,作为代理的动作组(Action Groups)完成用户任务。AgentInlineSDK 提供了一种简单的方式来创建内联代理,内置 MCP 客户端实现,直接访问 MCP 服务器提供的工具。

在创建代理时,开发者为每个需要通信的 MCP 服务器创建特定的 MCP 客户端。代理在执行用户任务时,会判断所需工具;若涉及 MCP 服务器工具,则通过对应客户端请求执行。由于 MCP 客户端封装了协议细节,用户代码无需直接处理 MCP 协议。

我们利用 Amazon Bedrock Agents 的 返回控制(Return Control) 能力协调这一流程。下图展示了代理处理请求的端到端流程,包括使用 Lambda 动作和 MCP 服务器工具的两种情况。

![代理工作流](插图:代理使用 MCP 服务器的工作流)


用例:变革 AWS 支出管理

为了展示 Amazon Bedrock 代理如何利用 MCP 服务器,我们以一个实际用例为例:理解和管理 AWS 支出。想象你提出问题:“帮我分析过去几周的 Bedrock 支出”或“上个月 EC2 在各区域和实例类型的成本是多少?”系统不仅返回原始数据,而是提供人性化的分析——详细分解、趋势分析、可视化图表或节省建议。这种洞察比单纯的数据更有价值。

我们将通过两个 MCP 服务器实现这一目标:

  1. 自定义构建的 MCP 服务器:从 AWS Cost Explorer 和 Amazon CloudWatch 获取支出数据。
  2. Perplexity AI 开源 MCP 服务器:解释和分析数据。

这两个服务器作为动作组添加到内联 Amazon Bedrock 代理中,创建一个能够变革 AWS 支出管理方式的 AI 代理。本文涉及的所有代码均可在 GitHub 仓库获取。

创建代理的步骤

我们使用内联代理(Inline Agents)动态定义和配置 Amazon Bedrock 代理。内联代理无需依赖预配置的控制平面设置,提供更大的灵活性和控制力,允许用户指定基础模型、指令、动作组、防护栏和知识库。

MCP 组件在 Amazon Bedrock 中的角色

  • 主机:Amazon Bedrock 内联代理,通过 RETURN_CONTROL 调用 MCP 客户端动作组。
  • 客户端:创建两个客户端,分别连接成本服务器和 Perplexity AI 服务器。
  • 服务器:本地运行的两个 MCP 服务器,通过标准输入/输出与应用通信。
  • 数据源:远程数据源包括 Cost Explorer API、CloudWatch Logs 和 Perplexity AI 搜索 API。

前提条件

  • AWS 账户
  • 熟悉基础模型和 Amazon Bedrock
  • 安装 AWS CLI 并配置凭证
  • Python 3.11 或更高版本
  • AWS CDK CLI
  • 启用 Anthropic Claude 3.5 Sonnet v2 模型访问
  • 设置 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量
  • 安装并运行 Docker(MCP 服务器以 Docker 守护进程运行)
  • 确保凭证具有 Cost Explorer 和 CloudWatch 的只读权限(使用 AWSBillingReadOnlyAccess 和 CloudWatchReadOnlyAccess),并获取 Perplexity API 密钥。

运行步骤

  1. 访问 InlineAgent GitHub 仓库并完成设置。

  2. 进入 examples/mcp/cost_explorer_agent 文件夹。

  3. 创建 .env 文件,填入以下内容:

    ini
    代码解读
    复制代码
    AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= BEDROCK_LOG_GROUP_NAME= PERPLEXITY_API_KEY=
  4. 构建 aws-cost-explorer-mcp 服务器:

    bash

    bash
    代码解读
    复制代码
    git clone https://github.com/aarora79/aws-cost-explorer-mcp-server.git cd aws-cost-explorer-mcp-server/ docker build -t aws-cost-explorer-mcp
  5. 运行 python main.py,代理将连接 MCP 服务器并生成支出分析。

输出示例

代理连接两个 MCP 服务器,依次使用工具生成分析和图表:

yaml
代码解读
复制代码
Connected to server with tools: ['get_bedrock_daily_usage_stats', 'get_ec2_spend_last_day', ...] Connected to server with tools: ['perplexity_ask'] Thought: 计划: 1. 用 Perplexity 询问 Amazon Bedrock 2. 获取过去 7 天的成本分解 3. 创建支出数据可视化 Tool use: perplexity_ask - "What is Amazon Bedrock?" Tool use: get_detailed_breakdown_by_day - days[7] Thought: 分析数据并生成柱状图... Code interpreter output: aws_costs.png Answer: Amazon Bedrock 是一个托管服务,提供单一 API 访问领先 AI 公司的基础模型。过去 7 天支出前五: 1. Amazon Bedrock: $1235 2. Amazon SageMaker: $567 3. EC2: $454 ...

实现细节

创建 MCP 客户端

在 config.py 中定义两个 MCP 客户端的参数,使用 StdioServerParameters 配置标准输入/输出通信:

python

ini
代码解读
复制代码
# 成本服务器参数 cost_server_params = StdioServerParameters( command="/usr/local/bin/docker", args=["run", "-i", "--rm", ..., "aws-cost-explorer-mcp:latest"], env={"AWS_ACCESS_KEY_ID": AWS_ACCESS_KEY_ID, ...} ) # Perplexity 服务器参数 perplexity_server_params = StdioServerParameters( command="/usr/local/bin/docker", args=["run", "-i", "--rm", ..., "mcp/perplexity-ask"], env={"PERPLEXITY_API_KEY": PERPLEXITY_API_KEY} )

在 main.py 中创建客户端:

python

ini
代码解读
复制代码
cost_explorer_mcp_client = await MCPClient.create(server_params=cost_server_params) perplexity_mcp_client = await MCPClient.create(server_params=perplexity_server_params)

配置动作组

在 main.py 中将两个 MCP 客户端组合成一个动作组:

python

ini
代码解读
复制代码
cost_action_group = ActionGroup( name="CostActionGroup", mcp_clients=[cost_explorer_mcp_client, perplexity_mcp_client] )

创建内联代理

指定基础模型、指令和动作组:

python

ini
代码解读
复制代码
await InlineAgent( foundation_model="us.anthropic.claude-3-5-sonnet-20241022-v2:0", instruction="You are a friendly assistant for resolving user queries...", agent_name="cost_agent", action_groups=[cost_action_group, {"name": "CodeInterpreter", ...}] ).invoke(input_text="Help me understand my AWS spend")

结论

Anthropic 的 MCP 协议为模型连接数据源提供了标准化方式,与 Amazon Bedrock Agents 的结合进一步释放了其潜力。本文展示了一个示例,通过 MCP 和 Bedrock 构建了一个理解 AWS 支出的应用,为团队提供了自然语言访问复杂财务数据的便捷方式。

随着 AI 的发展,安全连接企业关键系统的能力将愈发重要。无论你希望改善客户服务、优化运营还是获取业务洞察,Amazon Bedrock 和 MCP 的集成都为你提供了灵活的基础。你可以通过我们的代码样本深入探索这一集成。

可扩展的应用示例

  • 多数据源代理:连接 Amazon Bedrock 知识库、Sqlite 或本地文件系统。
  • 开发者生产力助手:集成 Slack 和 GitHub MCP 服务器。
  • 机器学习实验跟踪代理:结合 Comet ML 的 Opik MCP 服务器管理实验。

你会用这些强大能力解决哪些业务挑战?欢迎尝试并分享你的成果!


总结

这篇干货文章详细介绍了如何利用 MCP 服务器增强 Amazon Bedrock Agents 的能力,从架构设计到代码实现,提供了可操作的指南。通过 MCP 的标准化接口,开发者可以快速构建上下文感知的 AI 代理,解决现实问题。立即动手,探索这一技术的无限可能吧!

注:本文转载自juejin.cn的Captaincc的文章"https://juejin.cn/post/7490399234044248102"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top