Serverless Web MCP Server

Serverless Web MCP Server

bnusunny

开发者工具
访问服务器

README

Serverless Web MCP 服务器

一个用于将 Web 应用程序部署到 AWS Serverless 基础设施的模型上下文协议 (MCP) 服务器实现。

概述

本项目实现了一个 MCP 服务器,使 LLM 编码代理能够将 Web 应用程序部署到 AWS Serverless 服务。它遵循 模型上下文协议规范,为 AI 代理提供与 AWS 部署能力交互的标准化接口。

该服务器支持部署:

  • 使用 API Gateway、Lambda with Web Adapter 和 DynamoDB/Aurora Serverless 的后端服务
  • 使用 S3 和 CloudFront 的前端应用程序
  • 结合后端和前端组件的全栈应用程序

MCP 实现

此服务器实现了具有以下功能的模型上下文协议:

资源

提供有关以下方面的上下文信息:

  • 可用的部署模板 (template:list, template:{name})
  • 现有部署及其状态 (deployment:list, deployment:{project-name})
  • 资源发现 (mcp:resources) - 列出所有可用资源

工具

将部署能力公开为工具:

  • deploy: 将 Web 应用程序部署到 AWS Serverless 基础设施
  • configure-domain: 设置自定义域名和 SSL 证书
  • provision-database: 创建和配置数据库资源
  • get-logs: 检索应用程序日志
  • get-metrics: 获取性能指标

传输选项

服务器支持两种传输方法:

  • stdio: 用于本地 MCP 服务器的默认传输方式(与 Claude for Desktop 集成)
  • HTTP: 用于远程客户端的基于 Web 的传输方式

安全性和用户控制

遵循 MCP 安全原则:

  • 用户同意: 所有部署都需要明确的用户授权
  • 数据隐私: 资源信息受到适当的访问控制保护
  • 工具安全: 清晰的工具行为和所需权限文档
  • AWS IAM 集成: 为所有 AWS 操作提供安全身份验证

架构

服务器由以下核心组件组成:

  1. MCP 协议处理程序: 实现 JSON-RPC 接口和消息处理
  2. 统一部署服务: 管理不同类型(后端、前端、全栈)的部署
  3. AWS 集成层: 与 AWS SAM CLI 和 AWS 服务交互
  4. 上下文管理: 维护有关项目和部署的状态

部署类型

服务器支持使用不同类型的统一部署方法:

  • 后端部署: 使用 Lambda + API Gateway 的后端服务
  • 前端部署: 使用 S3 + CloudFront 的前端应用程序
  • 全栈部署: 组合的后端和前端部署

AWS Lambda Web Adapter

对于后端和全栈部署,服务器使用 AWS Lambda Web Adapter 在 AWS Lambda 上运行 Web 应用程序。这允许开发人员使用熟悉的 Web 框架,而无需任何代码更改。

快速入门

前提条件

  • Node.js 18 或更高版本
  • AWS SAM CLI
  • 已配置的 AWS 凭证

安装

# 从 npm 全局安装
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

# 启动服务器 (HTTP 模式)
MCP_TRANSPORT=http npm start

配置

创建一个 config.json 文件:

{
  "port": 3000,
  "aws": {
    "region": "us-east-1",
    "profile": "default"
  },
  "templates": {
    "path": "./templates"
  }
}

用法

用作本地 MCP 服务器

要与 Claude for Desktop 或其他 MCP 客户端一起使用,请将服务器添加到您的客户端配置:

对于 Claude for Desktop,编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "serverless-web": {
      "command": "serverless-web-mcp"
    }
  }
}

配置后,重新启动 Claude for Desktop。您应该在 Claude 界面中看到 serverless-web 工具可用。

用作 HTTP 服务器

MCP 客户端可以连接到服务器:

http://localhost:3000/mcp

命令行选项

Usage:
  serverless-web-mcp [options]

Options:
  --debug, -d                 Enable debug logging
  --templates, -t <path>      Specify templates directory path
  --transport, -m <mode>      Transport method (stdio or http, default: stdio)
  --port, -p <number>         HTTP server port (default: 3000, only used with http transport)
  --help, -h                  Show this help message
  
Environment Variables:
  MCP_TRANSPORT               Transport method (stdio or http, default: stdio)
  PORT                        HTTP server port (default: 3000)
  TEMPLATES_PATH              Path to templates directory

资源发现

要发现所有可用资源,请使用 mcp:resources 资源:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resource/get",
  "params": {
    "uri": "mcp:resources"
  }
}

这将返回所有可用资源的列表,包括它们的描述、模式和示例。

示例工具调用

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tool/invoke",
  "params": {
    "name": "deploy",
    "parameters": {
      "deploymentType": "backend",
      "source": {
        "path": "/path/to/code"
      },
      "framework": "express",
      "configuration": {
        "projectName": "my-api",
        "region": "us-east-1",
        "backendConfiguration": {
          "runtime": "nodejs18.x",
          "memorySize": 512,
          "timeout": 30
        }
      }
    }
  }
}

示例资源请求

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "resource/get",
  "params": {
    "uri": "deployment:my-api"
  }
}

开发

项目结构

/
├── src/
│   ├── mcp/              # MCP 协议实现
│   │   ├── tools/        # 工具实现
│   │   │   └── index.ts  # 工具注册
│   │   ├── resources/    # 资源实现
│   │   │   └── index.ts  # 资源注册
│   │   └── server.ts     # MCP 服务器设置
│   ├── deployment/       # 部署服务
│   ├── aws/              # AWS 集成
│   └── index.ts          # 主服务器入口点
├── templates/            # 部署模板
├── examples/             # 示例应用程序
├── docs/                 # 文档
├── config.json           # 服务器配置
├── DESIGN.md             # 详细设计文档
└── README.md             # 此文件

运行测试

npm test

故障排除

模板未找到

如果在从 npm 安装的 MCP 服务器中使用时遇到“Template not found”错误,您可以使用以下方法之一指定模板目录路径:

  1. 使用 --templates 命令行选项:

    serverless-web-mcp --templates /path/to/templates
    
  2. 设置 TEMPLATES_PATH 环境变量:

    TEMPLATES_PATH=/path/to/templates serverless-web-mcp
    
  3. 启用调试日志以查看正在检查的路径:

    serverless-web-mcp --debug
    

资源未找到

如果您遇到“Resource not found”错误,服务器将建议可能符合您要求的替代资源。您还可以使用 mcp:resources 资源来发现所有可用资源:

curl -X POST http://localhost:3000/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"resource/get","params":{"uri":"mcp:resources"}}'

或者,当与 Claude 或其他 LLM 客户端一起用作本地 MCP 服务器时,只需请求 mcp:resources 资源。

许可证

MIT

贡献

欢迎贡献!请随时提交 Pull Request。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript