使用说明

项目简介

MCP Lambda Server 是一个基于 Node.js 开发的 MCP 服务器实现,旨在 AWS Lambda 函数环境中运行。它利用 AWS Lambda 的函数 URL 和响应流特性,通过 Server-Sent Events (SSE) 协议与 MCP 客户端进行实时通信。该项目简化了在 AWS Lambda 上部署 MCP 服务器的流程,并提供了必要的基础设施,开发者可以专注于实现具体的工具、资源和 Prompt 模板逻辑。

主要功能点

  • MCP 协议支持: 实现了 MCP 协议的核心服务端功能,包括处理客户端请求、管理会话、声明服务器能力等。
  • 资源 (Resources) 管理: 允许定义和托管资源,并提供数据访问接口,供 LLM 客户端获取上下文信息。
  • 工具 (Tools) 注册与执行: 支持注册可被 LLM 客户端调用的外部工具,扩展 LLM 的能力。
  • Prompt 模板 (Prompts) 定义与渲染: 支持定义 Prompt 模板,实现可定制的 LLM 交互模式。
  • Server-Sent Events (SSE) 支持: 使用 SSE 协议实现与客户端的实时、双向通信。
  • AWS Lambda 优化: 专为 AWS Lambda 环境设计,利用函数 URL 和响应流特性,实现高效的服务器部署和运行。
  • JSON-RPC 协议: 通过 JSON-RPC 协议与客户端通信,保证了通信的标准化和易用性。
  • 类型安全: 使用 TypeScript 开发,提供类型定义,提升开发效率和代码质量。

安装步骤

  1. 安装 npm 包: 在您的 Lambda 函数项目中,使用 npm 安装 '@markvp/mcp-lambda-layer' 包。
    npm install @markvp/mcp-lambda-layer

服务器配置

MCP 服务器是为 MCP 客户端提供服务的后端应用。客户端需要配置以下信息才能连接到此 MCP 服务器。

{
  "server name": "MCP Lambda Server",
  "command": "AWS Lambda Function URL",
  "args": {
    "Function URL": "your_lambda_function_url",
    "请求方法": "POST",
    "传输协议": "SSE"
  },
  "notes": "请将 'your_lambda_function_url' 替换为您的Lambda函数URL。确保Lambda函数URL已启用响应流(Response Streaming)。"
}

配置参数说明:

  • server name: 服务器名称,可以自定义,用于客户端识别。默认为 "MCP Lambda Server"。
  • command: 连接服务器的命令,对于 Lambda 函数 URL 类型的服务器,固定为 "AWS Lambda Function URL"。
  • args: 连接参数,以 JSON 格式描述,包含以下字段:
    • Function URL: [必填] 您的 AWS Lambda 函数的 URL。请确保已在 AWS 控制台中为您的 Lambda 函数创建并启用了函数 URL,并且启用了响应流 (Response Streaming) 功能。
    • 请求方法: [必填] HTTP 请求方法,固定为 "POST"。
    • 传输协议: [必填] 传输协议,固定为 "SSE" (Server-Sent Events)。
  • notes: 配置说明,提示用户替换占位符并注意 Lambda 函数 URL 的配置要求。

重要提示:

  • Lambda 函数 URL: 必须使用 AWS Lambda 函数 URL 作为服务器的接入点。 不支持 API Gateway 或 Application Load Balancer 的方式。
  • 响应流 (Response Streaming): Lambda 函数 URL 必须启用响应流 功能,否则 SSE 通信将无法正常工作。
  • Node.js 运行时: Lambda 函数的运行时环境必须为 Node.js 18.x 或更高版本,以支持响应流特性。

基本使用方法

  1. 创建 Lambda 函数处理程序: 在您的 Lambda 函数代码中,使用 'MCPHandlerFactory' 创建 MCP 服务器处理程序。您需要配置 'tools' (工具) 和 'prompts' (Prompt 模板) 来定义服务器的功能。

    import { MCPHandlerFactory } from '@markvp/mcp-lambda-layer';
    import { z } from 'zod';
    
    const factory = new MCPHandlerFactory({
      tools: {
        summarize: {
          params: { text: z.string() },
          handler: async ({ text }) => {
            // 实现您的摘要逻辑
            const summary = await yourSummarizeImplementation(text);
            return { content: [{ type: 'text', text: summary }] };
          },
        },
      },
      prompts: {
        generate: {
          description: 'Generate content based on a prompt',
          handler: async (extra) => {
            // 实现您的内容生成逻辑
            const result = await yourGenerateImplementation(extra.prompt);
            return { content: [{ type: 'text', text: result }] };
          },
        },
      },
    });
    
    export const handler = factory.getHandler();
  2. 配置 Lambda 函数:

    • 运行时: Node.js 18.x 或更高版本。
    • 处理程序: 'index.handler'。
    • 内存: 建议 128 MB 或更高,根据您的实际需求调整。
    • 超时: 建议 120 秒或更高。
    • 函数 URL: 必须创建并启用函数 URL,并开启响应流 (Response Streaming)
  3. 部署 Lambda 函数: 将您的 Lambda 函数代码部署到 AWS Lambda。

  4. 配置 MCP 客户端: 在您的 MCP 客户端应用中,配置服务器连接信息,使用上面提供的 JSON 配置,并将 'Function URL' 替换为您的 Lambda 函数 URL。客户端即可通过 SSE 协议与您的 MCP Lambda Server 进行通信,调用您定义的工具和 Prompt 模板。

通过以上步骤,您就可以快速搭建一个基于 AWS Lambda 的 MCP 服务器,为您的 LLM 应用提供强大的上下文服务能力。

信息

分类

AI与计算