使用说明
项目简介
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 开发,提供类型定义,提升开发效率和代码质量。
安装步骤
- 安装 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 或更高版本,以支持响应流特性。
基本使用方法
-
创建 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(); -
配置 Lambda 函数:
- 运行时: Node.js 18.x 或更高版本。
- 处理程序: 'index.handler'。
- 内存: 建议 128 MB 或更高,根据您的实际需求调整。
- 超时: 建议 120 秒或更高。
- 函数 URL: 必须创建并启用函数 URL,并开启响应流 (Response Streaming)。
-
部署 Lambda 函数: 将您的 Lambda 函数代码部署到 AWS Lambda。
-
配置 MCP 客户端: 在您的 MCP 客户端应用中,配置服务器连接信息,使用上面提供的 JSON 配置,并将 'Function URL' 替换为您的 Lambda 函数 URL。客户端即可通过 SSE 协议与您的 MCP Lambda Server 进行通信,调用您定义的工具和 Prompt 模板。
通过以上步骤,您就可以快速搭建一个基于 AWS Lambda 的 MCP 服务器,为您的 LLM 应用提供强大的上下文服务能力。
信息
分类
AI与计算