项目简介
MCP Lambda Server Layer 是一个Node.js包,旨在帮助开发者在AWS Lambda环境中快速搭建基于Model Context Protocol (MCP) 的服务器。它基于MCP TypeScript SDK,并针对AWS Lambda的特性进行了适配,特别支持通过Server-Sent Events (SSE) 实现响应流式传输,这对于构建实时性要求高的LLM应用至关重要。该项目简化了在无服务器环境中部署MCP服务器的复杂性,让开发者可以更专注于工具、Prompt和资源的实现。
主要功能点
- MCP协议兼容性: 完整实现了MCP服务器的核心功能,包括资源管理、工具注册与执行、Prompt模板定义与渲染,确保与MCP客户端的无缝对接。
- AWS Lambda 优化: 专为AWS Lambda环境设计,充分利用Lambda的无服务器特性,提供弹性伸缩和按需付费的优势。
- SSE流式传输: 支持Server-Sent Events协议,通过Lambda响应流式传输能力,实现与客户端的实时双向通信,特别适合需要长时间运行或实时反馈的LLM应用场景。
- 工具和Prompt自定义: 允许开发者自定义工具 (Tools) 和 Prompt模板 (Prompts),灵活扩展服务器功能,满足不同LLM应用的需求。
- 类型安全: 使用TypeScript开发,提供完善的类型定义,提高代码质量和开发效率。
- 易于集成: 作为一个npm包发布,安装简单,通过简单的配置即可集成到现有的Lambda函数中。
安装步骤
-
安装 npm 包: 在您的Lambda函数项目目录下,使用 npm 安装 '@markvp/mcp-lambda-layer' 包:
npm install @markvp/mcp-lambda-layer -
创建 Lambda 函数处理程序: 在您的 Lambda 函数代码 (例如 'index.ts') 中,导入 'MCPHandlerFactory' 并进行配置,如下所示:
import { MCPHandlerFactory } from '@markvp/mcp-lambda-layer'; import { z } from 'zod'; // 创建 MCP Handler 工厂,配置工具和Prompt 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: '根据Prompt生成内容', handler: async (extra) => { // 在此处实现您的内容生成逻辑 const result = await yourGenerateImplementation(extra.prompt); return { content: [{ type: 'text', text: result }], }; }, }, }, }); // 导出 Lambda 函数处理程序 export const handler = factory.getHandler(); -
配置 Lambda 函数:
- 运行时: Node.js 18.x 或更高版本
- 处理程序: 'index.handler' (假设您的入口文件是 'index.ts')
- 内存: 至少 128 MB (根据实际需求调整)
- 超时: 建议 120 秒
- 函数 URL: 必须启用,并且需要启用响应流式传输 (Response streaming)。
- API Gateway/ALB: 不支持与流式传输一起使用。
服务器配置
MCP客户端需要配置以下服务器信息才能连接到此MCP服务器。请注意,这里的配置是JSON格式,用于MCP客户端,无需用户理解代码。
{ "serverName": "MCP Lambda Server", "command": "aws", "args": [ "lambda", "invoke", "--function-name", "<YourFunctionName>", // 请替换为您的Lambda函数名称 "--invocation-type", "RequestResponse", "--payload", "'{ \"body\": <request_body_json> }'", // 请求体占位符,客户端会自动填充 MCP JSON-RPC 请求 "--streaming-response-event-handler", "output.json" // 输出文件,实际使用中流式响应会被客户端直接处理,无需文件 ] }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,用于在客户端标识服务器。
- 'command': 执行命令,这里使用 'aws lambda invoke' 命令来调用 AWS Lambda 函数。
- 'args': 命令参数,包含:
- '"lambda invoke"': 指定使用 Lambda invoke 命令。
- '"--function-name", "<YourFunctionName>"': 请务必替换 '<YourFunctionName>' 为您实际部署的 Lambda 函数的名称。
- '"--invocation-type", "RequestResponse"': 指定调用类型为请求-响应模式,虽然实际是SSE流式传输,但Lambda函数URL的流式响应仍然基于RequestResponse上下文。
- '"--payload", "'{ "body": <request_body_json> }'"': 指定请求负载,'"<request_body_json>"' 是一个占位符,MCP客户端在发送请求时会自动将 MCP JSON-RPC 请求序列化为 JSON 字符串并替换此占位符。
- '"--streaming-response-event-handler", "output.json"': 用于处理流式响应的事件处理器,'output.json' 在实际使用中并不重要,因为客户端通常直接处理流式数据,而不是写入文件。
注意: 上述配置中的 '<YourFunctionName>' 必须替换为您在AWS上创建的Lambda函数的实际名称。 客户端会使用此配置信息来调用您的 Lambda 函数,并将 MCP 请求作为 payload 发送,接收 SSE 流式响应。
基本使用方法
- 部署 Lambda 函数: 将配置好的 Lambda 函数代码部署到 AWS Lambda。确保配置了函数 URL 并启用了响应流式传输。
- 配置 MCP 客户端: 在您的 MCP 客户端应用中,配置上述提供的服务器配置信息。
- 连接和交互: 启动 MCP 客户端,客户端将根据配置连接到您的 Lambda 函数,并通过 MCP 协议进行通信,您可以利用客户端提供的界面或API来调用您在 Lambda 函数中定义的工具和Prompt,并实时接收服务器的响应。
信息
分类
AI与计算