如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

随着人工智能技术的飞速发展,自然语言处理和语音交互技术正在深刻改变人机交互的方式。语音交互正从简单的“机械应答”向更自然的“类人对话”演进。

传统的语音系统通常采用模块化架构,将语音处理流程割裂为ASR(自动语音识别)、NLP(自然语言处理)和TTS(文本转语音)等独立模块,这种管道式处理方法存在信息衰减、响应延迟和情感缺失等核心痛点。

因此,如何实现自然的语音交互与多工具协同成为技术突破的关键。Amazon Nova Sonic通过将语音理解和生成统一到单一模型中,提供了一种简化的解决方案,用于创建自然、类人的语音交互,与需要编排多个模型的传统方法不同。

本文将深入探讨Amazon Nova Sonic基础模型与MCP(Model Context Protocol,模型上下文协议)的结合,介绍基于Amazon Nova Sonic和MCP构建实时语音交互应用的技术实践,涵盖技术原理、实际开发部署等,为开发者提供全面的技术指南。

关键技术概念介绍

Amazon Nova Sonic语音交互的颠覆性模型

Amazon Nova Sonic通过单一模型架构实现语音理解与生成的端到端处理,解决了传统多模型拼接的延迟与信息丢失问题。其核心优势包括以下方面。

1. 端到端一体化模型

Amazon Nova Sonic摒弃传统级联式语音系统的模块化设计,将语音输入到输出的全流程统一在单一神经网络中完成。

这种设计消除了不同模块间的信息割裂,保留对话中的声学语境(如语气、节奏、停顿),显著提升交互连贯性。例如,用户说话时的犹豫或打断会被实时解析并调整响应策略,而非机械式等待静音间隙。

2. 实时双向流式交互

通过Amazon Bedrock提供的双向流式API(InvokeModelWithBidirectionalStream),模型支持用户与AI同时进行语音输入输出,平均响应时间仅1.09秒,且支持用户中途打断对话而不丢失上下文。技术实现上,采用5:15的文本——语音标记混合生成比例,确保语义连贯性与实时性平衡。

3. 多语言与噪声鲁棒性

支持英语(美式、英式)多语言交互,在多语言LibriSpeech基准测试中平均词错误率(WER)低至4.2%。模型能识别主说话人并过滤背景噪声,适用于工厂、户外等复杂场景。

4. 情感感知与动态调节

模型可解析用户语音中的情绪(如兴奋、愤怒、担忧),并动态调整回应风格。例如,当客服对话中用户语气转为焦虑时,Amazon Nova Sonic会降低语速、增加安抚性词汇,同时触发企业数据库查询相关解决方案。

5. 上下文感知能力

32K token的滚动窗口支持长达8分钟的连续对话,可识别语气、停顿甚至背景噪音。

6. 原生工具调用(Tool-Use)

直接解析语音请求并触发API调用(如航班预订、数据查询),通过工具结果反馈优化响应逻辑。

MCP:实时语音交互中的大模型与Agent工具标准化连接

MCP作为开放协议,为端到端语音模型或者相关Agent提供了工具发现、安全调用与数据融合的标准化框架。在实时语音对话场景下,其价值更为突出:

  • 虚拟化工具网关:通过MCP Gateway统一管理分散的API服务,解决工具碎片化问题。例如在用户询问订单状态时,可以实时调用CRM系统、物流接口,确保对话的即时性和准确性。
  • 动态上下文注入:在语音交互中自动关联企业数据,通过RAG增强生成结果的事实准确性。这对speech-to-speech模型尤为重要,因为用户在实时对话中需要准确、及时的信息响应,而不是模型生成的模糊答复。
  • 实时性能优化:MCP的标准化调用机制能够显著降低工具调用延迟,这在实时语音对话中至关重要,可以保持对话的自然流畅性,避免因等待外部数据而产生的停顿。

方案介绍

本节将详细介绍基于Amazon Nova Sonic和MCP的语音交互方案实现,方案实现了双向音频流、通过MCP的工具集成以及响应式Web界面。方案实时音频对话系统的总体架构分为前端和后端两大部分,采用WebSocket实现实时通信。

该方案基于以下主要技术构建:

  • 运行环境:Node.js(v18.0.0+)with TypeScript
  • Web框架:Node.js用于HTTP/WebSocket服务器
  • 实时通信:IO用于双向WebSocket连接
  • 音频处理:用于基于浏览器的音频捕获/播放的WebAudio API
  • AI集成:适用于Amazon Bedrock Runtime客户端的亚马逊云科技开发工具包
  • 工具集成:MCP SDK(@modelcontextprotocol/sdk)

具有以下关键组件:

  • 处理WebSocket连接并与Amazon Bedrock集成的Node.js/Express服务器。
  • 用于实时音频可视化和交互的现代Web界面。
  • 用于自然对话流程的双向音频流。
  • 支持中断检测和即时处理。
  • 通过模型MCP与外部工具集成。
  • 支持多种语音角色和多语言界面。

技术架构

本方案实现了一个基于WebSocket的双向音频流应用,与Amazon Nova Sonic模型集成,用于实时语音转语音对话。系统采用现代Web技术栈构建,支持双向实时音频流、多语言界面以及动态工具调用。

以下是基于您提供的内容生成的架构图,展示了一个使用Amazon Nova Sonic模型的语音交互系统。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

上图系统架构展示了一个完整的语音交互流程:

客户端:

  • 用户通过麦克风提供语音输入。
  • 浏览器使用WebSocket技术处理实时通信。
  • 系统将响应转换为音频并通过扬声器输出。

服务器:

  • 使用Express框架构建的后端服务。
  • 集成Socket.IO实现双向实时通信。

大模型服务:

  • 利用Amazon Nova Sonic模型进行语音处理。
  • 负责语音识别、理解和生成响应。
  • 负责处理用户中断及响应。
  • 负责对接MCP tools进行工具调用。

方案架构实现

音频处理

音频处理管道通过基于WebSocket的流式处理架构实现与AI的双向实时语音转语音对话,主要由四个主要阶段组成:

  • Audio Capture:客户端麦克风输入和预处理。
  • 实时流式处理:基于WebSocket的双向音频传输
  • 服务器处理:Amazon Nova Sonic语音转语音模型处理
  • Audio Playback:具有可视化功能的客户端缓冲音频输出

用户的语音输入经由浏览器WebSocket发送到服务器,服务器与Amazon Nova Sonic模型交互后,将结果返回给浏览器,最终转换为音频输出给用户。这种架构支持实时的语音对话体验。系统实现了一个完整的音频处理管道,调用序列如下图所示。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

1.音频捕获:浏览器以16kHz采样率从用户麦克风捕获音频。

2.音频处理:对音频进行处理、分析和编码以便传输。

3.WebSocket传输:音频数据实时流式传输到服务器。

4.Amazon Nova Sonic处理:服务器通过Amazon Bedrock将音频转发到Amazon Nova Sonic。

5.响应生成:Amazon Nova Sonic处理输入并生成响应。

6.工具集成:如果需要,通过MCP框架调用工具。

7.音频播放:响应流回客户端并播放给用户。

接收和处理Tool事件

Amazon Nova Sonic可以支持Function Call具备调用外部工具的能力,首先定义函数描述Schema,将用户输入和函数描述一起输入调用LLM,解析LLM的输出,如果有输出函数名和参数则执行该函数,再将函数结果反馈给LLM,实现下一轮调用,直至输出最终结果。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

在整个对话过程中,如果用户输入与ToolConfiguration中的工具规格之一匹配,Amazon Nova Sonic将触发ToolUse事件。

例如,如果用户问“今天天气怎么样?”,如下图所示,在收到用户ASR(脚本)事件后,Amazon Nova Sonic将发送一个ToolUse事件,其中包含配置中指定的toolName getWeatherTool。

Amazon Nova Sonic与MCP交互

Amazon Nova Sonic要实现MCP这种方式的工具调用,首先需要将函数或工具的描述信息schema输入给LLM,只不过Function Call是在本地生成函数描述的,而MCP则是远程从MCP Server中自动拉取的工具描述,远程MCP Server端有哪些工具的描述,是基于Server端工具在开发时用注解的方式描述函数名、用途和参数信息来自动生成的。

和Function Call机制一样,Sonic识别需要调用哪个MCP工具,并将要调用的工具名、参数以.json格式结构化文本输出,然后是由LLM所在的Host去调用。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

与Amazon Bedrock上其他Amazon Nova以及Claude模型类似,可以在调用模型推理时,传递tools configure配置信息,从而触发模型function Calling,与第三方系统或者工具集成。

在与Amazon Nova Sonic启动新会话时,您可以在发送到Sonic PromptStart的第二个事件中提供Tool配置,该Tool配置是通过MCP Client的list Tools等SDK,从MCP Server端获取的tools工具schema,包含调用stdio endpoint command path/arguments,或者Streamable Http endpoint的base_url、headers等schema信息。

Amazon Nova Sonic模型tools参数获取该信息后,即可Amazon Bedrock上其他LLM一样进行function calling。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统
  • Amazon Nova Sonic模型:模型能够识别并发起工具调用事件。
  • 双向流客户端:接收模型的工具调用事件,并负责与工具处理器进行通信。
  • 工具处理器(ToolHandler):负责分发和处理工具请求,是系统的中央协调器。它可以:
    • 调用内置工具
    • 将请求转发给MCP服务管理器
  • 内置工具:系统自带的基础工具,如日期查询、天气查询等,可能需要调用外部API获取数据。
  • MCP服务管理器:管理和协调多个MCP服务器,负责将请求路由到适当的服务器并收集结果。
  • MCP服务器:提供专门的功能服务,如搜索工具(服务器1)和文件处理(服务器2)等。

核心组件和调用流程

MCP集成由三个主要组件组成,它们协同工作,为AI提供工具功能:

  • McpManager:管理MCP服务器进程的生命周期。
  • ToolHandler:编排工具执行并管理已注册的工具。
  • McpConfigLoader:加载和验证服务器配置。
如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

工具处理器(ToolHandler)

ToolHandler充当工具注册和执行的中央业务流程协调程序。它维护来自所有连接的MCP服务器的可用工具的注册表负责:

  • 注册MCP工具
  • 处理工具调用请求
  • 执行工具逻辑
  • 返回结果
// 工具处理流程
public async processToolUse(toolName: string, toolUseContent: object): Promise<Object> {
  // 1. 检查是否是MCP工具
  if (this.mcpTools.has(toolName)) {
    const toolInfo = this.mcpTools.get(toolName);
    // 2. 调用对应工具的处理函数
    return await toolInfo.handler(toolUseContent);
  }

  // 3. 处理内置工具
  switch (tool) {
    case"getdateandtimetool":
      returnthis.getDateAndTime();
    case"getweathertool":
      // 解析参数并调用天气API
      returnthis.fetchWeatherData(parsedContent.latitude, parsedContent.longitude);
    default:
      thrownew Error(`不支持的工具 ${tool}`);
  }
}

MCP管理器(Mcp Manager)

MCP Manager处理MCP服务器从初始化到清理的整个生命周期负责:

  • 加载MCP配置
  • 连接MCP服务器
  • 注册服务器提供的工具
  • 调度工具调用
调度工具调用
// 连接MCP服务器并注册工具
async connectToServer(serverName: string, config: McpServerConfig): Promise<McpTool[]> {
  // 1. 创建客户端
  const client = new Client({...});

  // 2. 创建传输层
  const transport = new StdioClientTransport({...});

  // 3. 连接服务器
  await client.connect(transport);

  // 4. 获取工具列表
  const toolsResult = await client.listTools();

  // 5. 注册工具到ToolHandler
  this.registerServerTools(serverName, serverTools, config.autoApprove || []);
}

MCP Tool调用流程

工具调用的完整流程如下。

配置加载:

  • McpConfigLoader从配置文件加载MCP服务器配置。

服务器连接:

  • McpManager连接到配置的MCP服务器。
  • 获取服务器提供的工具列表。

工具注册:

  • 将工具注册到ToolHandler。
  • 为每个工具创建处理函数。

会话初始化:

  • 创建一个会话并设置工具配置。
  • 在createPromptStartEvent中包含可用工具信息。

工具调用:

  • AI模型发送toolUse事件。
  • 客户端接收并分发到事件处理器。
  • handleToolUse记录工具调用信息。
  • handleToolEnd触发工具执行。

工具执行:

  • toolHandler.processToolUse调用对应工具。
  • 内置工具直接执行内部逻辑。
  • MCP工具通过对应服务器调用。

结果返回:

  • 获取工具执行结果。
  • 通过createToolResultEvents创建结果事件。
  • 将结果发送回流。

以下是本方案获取MCP Server信息及加载tools的代码示例。

/**
   * 初始化所有启用的 MCP 服务器
   */
  async initializeServers(): Promise<void> {
    const servers = Object.entries(this.config.mcpServers);
    console.log(`发现 ${servers.length} 个 MCP 服务器配置`);
    await Promise.all(
      servers.map(async ([serverName, serverConfig]) => {
        if (serverConfig.disabled !== true) {
          try {
            await this.connectToServer(serverName, serverConfig);
          } catch (error) {
            console.error(`连接到 MCP 服务器 ${serverName} 失败:`, error);
          }
        } else {
          console.log(`MCP 服务器 ${serverName} 已禁用,跳过连接`);
        }
      })
    );
  }
  /**
   * 连接到指定的 MCP 服务器
   */
  async connectToServer(
    serverName: string,
    config: McpServerConfig
  ): Promise<McpTool[]> {
    console.log(`正在连接 MCP 服务器: ${serverName}`);
    try {
      // 创建客户端
      const client = new Client({
        name: `nova-sonic-mcp-client-${serverName}`,
        version: "1.0.0",
        capabilities: {
          prompts: {},
          resources: {},
          tools: {},
        },
      });
      let transport;
      // 根据 command 类型选择不同的 transport
      if (config.command === "restful") {
        // 使用 StreamableHTTPClientTransport
        if (!config.baseUrl) {
          thrownew Error("使用 restful 模式时必须提供 baseUrl");
        }
        transport = new StreamableHTTPClientTransport({
          baseUrl: config.baseUrl,
          headers: config.headers || {}, // 可选的 HTTP 头
          fetch: globalThis.fetch, // 使用全局 fetch
        });
      } else {
        // 使用原有的 StdioClientTransport
        let command = config.command;
        let args = [...config.args];
        if (config.command === "node") {
          command = process.execPath;
        }
        transport = new StdioClientTransport({
          command: command,
          args: args,
          env: {
            ...getDefaultEnvironment(),
            ...config.env,
          },
          stderr: "pipe",
        });
        transport.stderr?.on("data", (data) =>
          console.info(`[MCP] Stdio stderrfor server: `, data.toString())
        );
      }
      // 连接到服务器
      await client.connect(transport);
      // 保存客户端和传输
      this.clients.set(serverName, client);
      this.transports.set(serverName, transport);
      // 获取工具列表
      const toolsResult = await client.listTools();
      const serverTools = toolsResult.tools.map((tool) => ({
        name: tool.name,
        description: tool.description,
        inputSchema: tool.inputSchema,
        serverName: serverName,
      }));
      // 保存工具列表
      this.tools.set(serverName, serverTools);
      // 注册工具到 ToolHandler
      this.registerServerTools(
        serverName,
        serverTools,
        config.autoApprove || []
      );
      console.log(
        `已连接到 MCP 服务器 ${serverName},可用工具:`,
        serverTools.map(({ name }) => name).join(", ")
      );
      return serverTools;
    } catch (error) {
      console.error(`连接到 MCP 服务器 ${serverName} 失败:`, error);
      throw error;
    }
  }
  /**
   * 注册服务器工具到 ToolHandler
   */
  privateregisterServerTools(
    serverName: string,
    tools: McpTool[],
    autoApproveList: string[]
  ): void {
    tools.forEach((tool) => {
      // 修改: 默认所有工具都是自动批准的,不再根据 autoApproveList 判断
      const isAutoApproved = true;
      this.toolHandler.registerMcpTool(
        tool.name,
        this.callMcpTool.bind(this, serverName, tool.name),
        serverName,
        tool.description,
        isAutoApproved
      );
    });
  }

以下是toolConfiguration部分的示例JSON,其中包括3个MCP Server的示例配置,其中mcp-playwright和server-filesystem是stdio的MCP Server,searchWebsit_McpHttpServer是Streamable Http的MCP Server。

{
  "mcpServers": {
    "github.com/executeautomation/mcp-playwright": {
      "disabled": false,
      "command": "npx",
      "args": ["-y", "@executeautomation/playwright-mcp-server"]
    },
    "github.com/modelcontextprotocol/servers/tree/main/src/filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/tangqy/Documents/MCP/filesystem-server"
      ],
      "disabled": false,
      "autoApprove": []
    }
  },
  "searchWebsit_McpHttpServer":{
      "transportType":"streamable_http",
       "command":"restful",
       "base_url":"http://ec2-35-93-77-218.us-west-2.compute.amazonaws.com:8080/message",
       "headers": {
      }
    }
}

中断处理

Amazon Nova Sonic模型可以有效的处理用户中断,在全双工模式下,用户语音输入是单独的流channel,在该channel的audio chunk处理过程中,通过回调机制/输出检测(模型还在speaking输出)/间隔阀值…etc等机制,确认是否用户中断请求,从而在处理response的另一条流channel中,输出中断标识,从而方便指示客户端处理并响应中断。

其代码示例如下:

socket.on("contentEnd", (data) => {
  console.log("Content end received:", data);

  if (data.type === "TEXT") {
    if (role === "USER") {
      // When user's text content ends, make sure assistant thinking is shown
      hideUserThinkingIndicator();
      showAssistantThinkingIndicator();
    } elseif (role === "ASSISTANT") {
      // When assistant's text content ends, prepare for user input in next turn
      hideAssistantThinkingIndicator();
    }

    // Handle stop reasons
    if (data.stopReason && data.stopReason.toUpperCase() === "END_TURN") {
      chatHistoryManager.endTurn();
    } elseif (
      data.stopReason &&
      data.stopReason.toUpperCase() === "INTERRUPTED"
    ) {
      console.log("Interrupted by user");
      audioPlayer.bargeIn();
    }
  } elseif (data.type === "AUDIO") {
    // When audio content ends, we may need to show user thinking indicator
    if (isStreaming) {
      showUserThinkingIndicator();
    }
  }
});

方案部署和使用指南

方案关键技术和依赖项

方案基于以下主要技术构建:

  • 运行时间:Node.js(v18.0.0+)with TypeScript
  • Web框架:Express.js用于HTTP/WebSocket服务器
  • 实时通信:Socket.IO用于双向WebSocket连接
  • 音频处理:用于基于浏览器的音频捕获/播放的WebAudio API
  • AI集成:适用于Amazon Bedrock Runtime客户端的亚马逊云科技开发工具包
  • 工具集成:MCP SDK(@modelcontextprotocol/sdk)

主要依赖项如下表格所示。

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

安装步骤

部署Amazon Nova Sonic实时语音应用需要以下步骤:

先决条件:

  • Node.js(v18.0.0或更高版本)。
  • 亚马逊云科技账户,并启用Amazon Bedrock访问权限。
  • 已配置Amazon Web Services CLI和适当凭证。
  • 麦克风和扬声器设备。

1.克隆仓库。

git clone https://github.com/aws-samples/sample-nova-sonic-mcp
cd sample-nova-sonic-mcp

2.安装依赖。

npm install 

3.配置亚马逊云科技凭证。

aws configure --profile default

确保配置正确的区域(如`us-east-1`)和有效的访问密钥。

4.构建TypeScript代码。

npm run build

5.配置MCP服务器(可选):

编辑`mcp_config.json`文件,配置需要的MCP服务器。

{
  "mcpServers": {
    "github.com/tavily-ai/tavily-mcp": {
      "command": "npx",
      "args": ["-y", "tavily-mcp@0.1.4"],
      "env": {
        "TAVILY_API_KEY": "your-api-key"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

6.启动应用。

npm start

7.访问界面:在浏览器中打开`http://localhost:3000`

使用指南

主界面概览:

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

主界面包含以下主要元素:

  • 连接状态指示器:左上角显示当前连接状态,如”已连接服务器”或错误信息。
  • 语音角色选择:顶部中央的下拉菜单,可选择不同AI语音角色。
  • 设置按钮:右上角的齿轮图标,用于打开配置面板。
  • 音频可视化:中央的蓝色圆形区域,显示实时音频波形和语音活动。
  • 控制按钮:
  • 左下角麦克风按钮:控制麦克风开启/关闭。
  • 中央通话按钮:开始/结束对话(红色表示正在对话中)。
  • 右下角文本按钮:切换显示/隐藏文本对话内容。

基本操作

开启对话:

  • 点击界面底部的电话按钮(绿色)开始对话。
  • 系统将自动初始化会话并开启麦克风。
  • 中央区域的脉动球体会根据音频活动动态变化。

语音交互:

  • 对着麦克风说话,语音将被实时处理。
  • 系统会显示语音转录和AI响应。
  • 可以自然地中断AI说话(barge-in功能)。
  • AI响应会通过扬声器播放。

结束对话:

  • 点击红色电话按钮结束当前对话。
  • 系统会自动清理资源并刷新页面。

高级功能

语音角色选择

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

点击顶部的用户头像打开语音选择菜单。

选择不同的语音角色(如tiffany、matthew、amy)。

新的语音设置将应用于下一次对话。

配置系统

1.提示词配置

2.MCP服务器配置:

如何使用 Amazon Nova Sonic 和 WebSockets 构建完整的语音对话系统

点击右上角的设置图标打开配置面板:

  • 提示词:选择预设提示词或自定义提示词。
  • 语言:切换界面语言(中英文)。语言配置选项卡允许用户在支持的UI语言之间切换。
  • MCP服务器:查看已配置的MCP服务器和工具。

MCP设置选项卡显示已配置的MCP服务器和可用工具的状态。

服务器状态显示:

  • 每个MCP服务器的连接状态指示器。
  • 每个服务器的可用工具列表。
  • 服务器运行状况监控。
  • 配置验证结果。

查看文本对话:

  • 点击底部的文本按钮显示/隐藏对话内容。
  • 对话历史会实时更新,包括用户输入和AI响应。
  • 文本为红色表示聊天记录隐藏,绿色表示显示。

使用MCP工具

模型自动调用工具:

  • 在对话中提出需要工具帮助的问题,例如“今天天气如何?
  • 模型会调用相应工具并在响应中融合调用MCP Tool的结果。

以下是使用MCP Tool的实际场景示例:

文件处理示例(使用文件系统工具):

  • 用户语音输入:“请帮我分析项目目录中的CSV数据文件”。
  • AI声音响应:“正在处理您的文件…”(同时显示工具使用指示器)。
  • 系统在后台调用read_file工具读取文件内容
  • AI语音分析结果:“根据文件中的数据,我发现以下趋势…”

总结

本方案实现展示了如何使用Amazon Nova Sonic和WebSockets构建完整的语音对话系统。

通过遵循本文概述的架构和最佳实践,开发者可以创建利用Amazon Bedrock高级语音模型功能的自然、响应式语音界面。Amazon Nova Sonic的统一方法简化了开发过程,而双向流API实现了真正的交互式对话。

通过MCP添加工具集成,这些语音应用程序可以执行复杂任务并访问外部信息,使它们成为各种用例的强大助手。

随着语音界面的不断发展,诸如此类的解决方案将在创建更自然、更直观的用户与技术交互方式方面发挥越来越重要的作用。

资源链接

Amazon Bedrock文档:

https://docs.aws.amazon.com/bedrock/

Amazon Nova Sonic模型指南:

https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-nova-sonic.html

WebAudio API文档:

https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Audio_API

IO文档:

https://socket.io/docs/v4/

MCP GitHub:

https://github.com/aws/model-context-protocol

Amazon Web Services SDK for JavaScript:

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/

MCP官方SDK:

https://modelcontextprotocol.io/specification/2025-03-26/basic/transports

作者:贺杨、唐清原、粟伟

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论