无服务器MCP服务

一个基于AWS Lambda和API Gateway实现的无服务器MCP(Model Context Protocol)服务,集成Amazon Q CLI,提供REST API、AWS服务访问和自动监控功能。

  • by EdvaldoJose
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 edvaldojose/aws-serverless-mcp

使用说明

使用 Amazon-Q 设计无服务器 MCP 服务器

AWS无服务器MCP服务器

Servidor MCP(模型上下文协议)无服务器实现AWS Lambda e API网关,集成Amazon Q CLI。

🏗️ 建筑师

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Amazon Q CLI  │────│   API Gateway    │────│  Lambda Function │
│                 │    │                  │    │   (MCP Server)   │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                │                        │
                                │                        │
                       ┌────────▼────────┐    ┌─────────▼─────────┐
                       │   CloudWatch    │    │   AWS Services    │
                       │     Logs        │    │  (S3, Lambda,     │
                       │                 │    │   CloudWatch)     │
                       └─────────────────┘    └───────────────────┘

✨ 功能

  • 无服务器使用 AWS Lambda 按需运行
  • API REST:通过API网关的端点HTTP
  • AWS 集成访问 S3、Lambda、CloudWatch
  • 监督员:非CloudWatch自动日志
  • 可扩展性:自动扩展AWS

🚀 部署Rápido

先决条件

  • 配置的AWS CLI
  • SAM CLI安装程序
  • Node.js 18+instalado

科曼多斯

# Instalar dependências
npm install

# Build do projeto
./build.sh

# Deploy na AWS
./deploy.sh

📋 已创建资源

AWS Lambda

  • 函数: aws-serverless-mcp-server
  • 运行时:Node.js 18.x
  • 超时:30个赛段
  • 内存:128 MB

API网关

  • 端点: https://0iw1j40354.execute-api.us-east-1.amazonaws.com/prod/mcp
  • 方法:POST
  • 集成:Lambda代理

S3铲斗

  • 演示桶: aws-mcp-demo-772012827208-us-east-1
  • 人工制品: aws-serverless-mcp-artifacts-772012827208

云监控

  • 日志组自动函数日志
  • 度量性能监控

🧪 测试API

AWS 帐户信息

curl -X POST https://0iw1j40354.execute-api.us-east-1.amazonaws.com/prod/mcp \
  -H 'Content-Type: application/json' \
  -d '{"action": "get_aws_account_info"}'

Listar Buckets S3

curl -X POST https://0iw1j40354.execute-api.us-east-1.amazonaws.com/prod/mcp \
  -H 'Content-Type: application/json' \
  -d '{"action": "list_s3_buckets"}'

列出lambda函数

curl -X POST https://0iw1j40354.execute-api.us-east-1.amazonaws.com/prod/mcp \
  -H 'Content-Type: application/json' \
  -d '{"action": "list_lambda_functions"}'

🔧 地方 发展

在本地运行

# Instalar dependências
npm install

# Executar servidor local
node example-local.js

构建和测试

# Build TypeScript
npm run build

# Executar testes
npm test

# Validar template SAM
sam validate

📁 项目结构

aws-serverless-mcp/
├── src/
│   ├── index.ts              # Servidor MCP principal
│   └── lambda-handler.ts     # Handler para AWS Lambda
├── dist/                     # Arquivos compilados
├── template.yaml             # Template SAM
├── package.json              # Dependências Node.js
├── tsconfig.json            # Configuração TypeScript
├── build.sh                 # Script de build
├── deploy.sh                # Script de deploy
└── README.md                # Esta documentação

💰 费用

免费套餐Includeído

  • 拉姆达: 1M 调用/月
  • API网关1M 通话/月
  • 云监控5GB 日志/月

每月估计

  • 低使用: $0-5
  • 平均使用: $5-20
  • 高用途:20-50美元

📊 部署状态

✅ 部署成功 !

  • 堆栈: aws-serverless-mcp-stack
  • 区域: us-east-1
  • API URL: https://0iw1j40354.execute-api.us-east-1.amazonaws.com/prod/mcp
  • lambda 函数: aws-serverless-mcp-server

🛠️ 故障排除

常见问题

  1. 部署失败,因为缺少 S3 桶

    # Criar bucket para artefatos
    aws s3 mb s3://mcp-artifacts-$(aws sts get-caller-identity --query Account --output text)
    
  2. Lambda 函数超时

    # Aumentar timeout no template.yaml
    Timeout: 60
    
  3. 权限不足

    # Verificar role da função
    aws iam get-role --role-name aws-serverless-mcp-server-role
    

📚 额外资源


开发于❤️ 使用 AWS Serverless 和 Amazon Q