使用说明
项目简介
Serverless Web MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM (大型语言模型) 客户端提供标准化的接口,以便将 Web 应用程序部署到 AWS Serverless 基础设施。它充当 LLM 客户端和 AWS 云服务之间的桥梁,简化了云端部署流程,并允许 AI 智能体自动化执行部署任务。
主要功能点
- 资源管理 (Resources): 提供关于部署模板和现有部署状态的上下文信息,例如:
- 'template:list': 列出可用的部署模板。
- 'template:{name}': 获取特定部署模板的详细信息。
- 'deployment:list': 列出所有部署项目及其状态。
- 'deployment:{project-name}': 获取特定部署项目的详细信息。
- 工具注册与执行 (Tools): 暴露 AWS Serverless 部署能力为工具,允许 LLM 客户端调用执行,例如:
- 'deploy': 将 Web 应用程序部署到 AWS Serverless 基础设施 (Lambda, API Gateway, S3, CloudFront 等)。
- 'configure-domain': 设置自定义域名和 SSL 证书 (占位符实现)。
- 'provision-database': 创建和配置数据库资源 (占位符实现)。
- 'get-logs': 获取应用程序日志 (占位符实现)。
- 'get-metrics': 获取应用程序性能指标 (占位符实现)。
- Prompt 模板 (Prompts): 虽然文档中没有明确提及 Prompt 模板,但 MCP 服务器的架构设计支持 Prompt 模板的定义和渲染,以支持可定制的 LLM 交互模式 (未在此仓库中实现)。
- 传输协议 (Transport Options): 支持 Stdio 和 HTTP 两种传输协议,方便本地和远程客户端连接。
- 'stdio': 默认传输方式,适用于本地 MCP 服务器,例如与 Claude for Desktop 集成。
- 'HTTP': 基于 Web 的传输方式,支持远程客户端连接。
- 安全与用户控制 (Security and User Control): 遵循 MCP 安全原则,强调用户授权、数据隐私和工具安全。集成 AWS IAM 进行安全认证。
- 架构设计 (Architecture): 采用模块化架构,包括 MCP 协议处理、统一部署服务、AWS 集成层和上下文管理等核心组件,保证了系统的可扩展性和可维护性。
- 自动依赖安装 (Automatic Dependency Installation): 支持 Node.js, Python, Ruby 等后端应用的自动依赖安装,简化部署流程。
安装步骤
-
前提条件:
- Node.js 18 或更高版本
- AWS SAM CLI
- 已配置 AWS 凭证
-
安装 Serverless Web MCP Server:
-
全局安装 (推荐):
npm install -g serverless-web-mcp-server -
或克隆仓库本地安装:
git clone https://github.com/bnusunny/serverless-web-mcp-server.git cd serverless-web-mcp-server npm install npm run build
-
-
配置服务器 (config.json):
在项目根目录下创建 'config.json' 文件,配置服务器端口、AWS 区域和凭证等信息:
{ "port": 3000, "aws": { "region": "us-east-1", "profile": "default" }, "templates": { "path": "./templates" } }
服务器配置 (MCP 客户端配置)
MCP 客户端 (例如 Claude for Desktop) 需要配置 MCP 服务器的启动命令才能连接。以下是针对 Serverless Web MCP Server 的配置信息,请将以下 JSON 配置添加到您的 MCP 客户端配置文件中。
{ "serverless-web": { "command": "serverless-web-mcp" } }
- 'serverless-web': 服务器名称,可以自定义,用于在客户端中标识该服务器。
- 'command': 启动 Serverless Web MCP Server 的命令。如果使用全局安装,则为 'serverless-web-mcp';如果本地安装,则可能需要指定到项目 'bin' 目录下的可执行文件路径。
可选参数:
您可以通过以下方式为 'serverless-web-mcp' 命令添加可选参数,以定制服务器行为:
- 命令行选项: 直接在 'command' 字段后添加选项和参数。
- 环境变量: 通过设置环境变量来配置服务器。
以下是一些常用的可选参数及其说明:
- '--debug, -d': 启用调试日志,输出更详细的日志信息,方便问题排查。
- '--templates, -t <path>': 指定部署模板目录的路径。如果模板不在默认位置,可以使用此选项指定。
- '--transport, -m <mode>': 指定传输方法,可选 'stdio' 或 'http'。默认为 'stdio'。
- '--port, -p <number>': 指定 HTTP 服务器端口号。仅在 'http' 传输模式下使用,默认为 '3000'。
示例配置 (Claude for Desktop - '~/Library/Application Support/Claude/claude_desktop_config.json'):
{ "mcpServers": { "serverless-web": { "command": "serverless-web-mcp", "args": ["--debug", "--port", "3001"] } } }
- 在此示例中,'args' 数组包含了 '--debug' (启用调试日志) 和 '--port 3001' (设置 HTTP 端口为 3001) 两个参数。
请根据您的 MCP 客户端的具体配置方法,将上述配置信息添加到客户端设置中。
基本使用方法
-
启动 Serverless Web MCP Server:
- HTTP 模式: 'MCP_TRANSPORT=http npm start' 或 'serverless-web-mcp --transport http'
- Stdio 模式 (默认): 直接运行 'serverless-web-mcp' 或 'npm start'
-
配置 MCP 客户端: 参考 "服务器配置" 章节,将 Serverless Web MCP Server 添加到您的 MCP 客户端配置中。
-
资源和工具发现: 使用 MCP 客户端的资源和工具发现功能,或者手动发送 JSON-RPC 请求,例如:
-
列出资源:
{ "jsonrpc": "2.0", "id": 1, "method": "resource/list", "params": {} } -
列出工具:
{ "jsonrpc": "2.0", "id": 2, "method": "tool/list", "params": {} }
-
-
工具调用: 使用 MCP 客户端或发送 JSON-RPC 请求调用部署工具,例如 'deploy' 工具,并提供相应的参数 (如 'deploymentType', 'projectName', 'backendConfiguration', 'frontendConfiguration' 等)。 具体参数参考 README.md 文档中的 "Deployment Parameters" 章节。
- 调用 'deploy' 工具示例:
{ "jsonrpc": "2.0", "id": 1, "method": "tool/invoke", "params": { "name": "deploy", "parameters": { "deploymentType": "backend", "projectName": "my-api", "projectRoot": "/path/to/project", "region": "us-east-1", "backendConfiguration": { "builtArtifactsPath": "/path/to/built/artifacts", "runtime": "nodejs18.x", "startupScript": "bootstrap", "memorySize": 512, "timeout": 30, "environment": { "NODE_ENV": "production" } } } } }
- 调用 'deploy' 工具示例:
-
资源请求: 使用 MCP 客户端或发送 JSON-RPC 请求获取资源信息,例如获取部署详情:
- 获取部署详情:
{ "jsonrpc": "2.0", "id": 2, "method": "resource/get", "params": { "uri": "deployment:my-api" } }
- 获取部署详情:
请参考仓库的 README.md 文档获取更详细的使用说明和示例。
信息
分类
开发者工具