使用说明

项目简介

本项目是一个基于 AWS Lambda 函数构建的 MCP (Model Context Protocol) 服务器示例,它使用 Streamable HTTP API 提供实时的、流式的响应。该示例旨在展示如何在 serverless 环境下实现 MCP 服务器,并提供了工具注册和调用的基本功能。它使用了 'mcp-streamablehttp' 传输协议,并通过 AWS SAM 进行部署。

请注意: 该示例使用了 Model Context Protocol TypeScript 库的未发布版本,可能存在兼容性问题。同时,由于实现方式较为特殊(访问私有属性等),可能并非在所有情况下都如预期工作,仅作为概念验证。

主要功能点

  • MCP 协议支持: 实现了 MCP 协议的核心服务器功能,可以处理 MCP 客户端的请求。
  • 工具调用: 支持注册和调用工具,示例中提供了 'echo' (回显消息) 和 'add' (加法计算) 两个工具。
  • Streamable HTTP: 使用 Streamable HTTP 传输协议,支持实时响应流。
  • Server-Sent Events (SSE): 支持通过 GET 请求建立 SSE 流,用于实时数据推送。
  • 无状态服务器: Lambda 函数的特性使得服务器实例是无状态的,每次请求都会创建新的实例。
  • AWS Lambda 部署: 通过 AWS SAM 部署到 AWS Lambda,实现 serverless 架构。

安装步骤

  1. 安装 prerequisite: 确保已安装 AWS CLI, SAM CLI, Node.js 22.x, 和 Docker
  2. 克隆仓库: 使用以下命令克隆仓库(需要 '--recursive' 标志以包含子模块):
    git clone --recursive https://github.com/moritalous/mcp-streamablehttp-lambda-sample.git
    cd mcp-streamablehttp-lambda-sample
  3. 安装依赖: 进入 'mcp-function' 目录并安装 npm 依赖,并执行 setup 脚本:
    cd mcp-function
    npm install
    npm run setup
    cd ..
  4. 构建应用: 使用 SAM CLI 构建 Lambda 函数的部署包:
    sam build
  5. 部署应用: 使用 SAM CLI 部署应用到 AWS。首次部署需要 guided 模式进行配置:
    sam deploy --guided
    按照提示输入栈名称 (Stack Name)、AWS 区域 (AWS Region) 等信息。部署完成后,会输出 Lambda 函数的 URL (Function URL)。

MCP 客户端配置

MCP 客户端需要配置 MCP 服务器的地址才能连接。对于本示例,服务器地址即为部署后输出的 Lambda 函数 URL (Function URL)

在客户端配置中,您需要设置服务器 URL 为该 Lambda 函数 URL。例如,在 'mcp-function/src/client.ts' 示例客户端中,通过环境变量 'MCP_SERVER_URL' 配置:

const serverUrl = process.env.MCP_SERVER_URL || 'http://localhost:3001/mcp';

您需要将 'MCP_SERVER_URL' 环境变量设置为您的 Lambda 函数 URL。

配置示例 (JSON 格式,仅供参考,MCP 客户端具体配置方式可能不同):

{
  "serverName": "mcp-streamablehttp-lambda-server",
  "serverUrl": "https://<your-lambda-function-url>/mcp"  // 替换为您的 Lambda 函数 URL
}

注意: 实际 MCP 客户端可能不需要 JSON 格式配置,而是直接接受服务器 URL 字符串。请参考您使用的 MCP 客户端的具体文档进行配置。

基本使用方法

  1. 获取 Lambda 函数 URL: 部署成功后,从 SAM CLI 的输出中获取 Lambda 函数 URL。

  2. 配置客户端: 将 Lambda 函数 URL 设置为 MCP 客户端的服务器地址(例如,设置 'MCP_SERVER_URL' 环境变量)。

  3. 运行客户端: 进入 'mcp-function' 目录,运行示例客户端:

    cd mcp-function
    MCP_SERVER_URL=https://<your-lambda-function-url>/mcp npm run dev:client

    将 '<your-lambda-function-url>' 替换为您的实际 Lambda 函数 URL。

    客户端会连接到 Lambda 函数,并调用 'echo' 和 'add' 两个示例工具,输出结果。

清理资源

当不再需要该示例时,可以使用以下命令删除部署的 AWS 资源:

sam delete --stack-name <your-stack-name>  # 将 <your-stack-name> 替换为您部署时设置的栈名称

信息

分类

AI与计算