AI代理服务

一个使用AI代理的服务,包含MCP服务器和客户端,用于与服务器和外部服务交互。

  • by josekron
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 josekron/serverless-aws-mcp

使用说明

概念验证

这是使用AI代理的服务的POC,其中有一个模型上下文协议(MCP)服务器和一个将与MCP服务器和外部服务交互的MCP客户端。

使用的技术

  • [x] Node.js
  • [x] TypeScript
  • [x] AWS-SAM
  • [x] AWS Lambda
  • [x] AWS API网关
  • [x] 谷歌双子座
  • [x] 克劳德桌面

如何在本地运行它

由于MCP客户端除了与MCP服务器交互外没有实际用途,我们可以使用Claude Desktop作为客户端。

  • 添加您的 GeminiApiKey 到 samconfig.toml 项目根目录中的文件。

  • 在AWS中部署MCP服务器(转到 入门指南 本自述部分)

  • 安装 克劳德桌面

  • 在你的 claude_desktop_config.json 文件,添加以下配置:

    {
        "mcpServers": {
           "mcp-server": {
              "command": "npx",
              "args": [
                 "-y",
                 "mcp-remote",
                 "https://12345.execute-api.us-east-2.amazonaws.com/Prod/mcp", // your mcp server api url
                 "--transport",
                 "http-only",
                 "--header",
                 "x-api-key:abcd1234" // your api key
              ]
           }
        }
     }
    
    
    

建筑

该项目采用六边形架构(端口和适配器),结构如下:

src/
├── domain/           # Core business logic
│   ├── entities/     # Domain entities (WebhookEvent)
│   ├── ports/        # Interface definitions (WebhookRepository, Logger)
│   └── use-cases/    # Business use cases (ProcessWebhookUseCase)
├── infrastructure/   # Infrastructure implementations
│   └── adapters/     # Adapters for external services (CloudWatchLogger, InMemoryWebhookRepository)
└── handlers/         # Lambda function handlers
    └── webhook.ts           # SQS handler

先决条件

  • Node.js 22.x
  • AWS-SAM-CLI
  • AWS CLI配置了适当的凭据
  • Docker(用于本地测试)

入门指南

  1. 安装依赖项:

    npm install
    
  2. 使用SAM构建项目:

    npm run sam:build
    
  3. 运行测试以确保一切正常:

    npm test
    
  4. 要进行完整的集成测试,请部署到AWS:

    npm run sam:deploy
    

发展

本地开发

你可以在当地测试什么

  1. Lambda函数测试:

    npm run sam:build
    sam local invoke WebhookProcessorFunction -e test-event.json
    
  2. 单元测试:

    npm test
    npm run test:coverage
    
  3. 类型检查:

    npm run type-check
    
  4. 掉毛:

    npm run lint
    npm run lint:fix
    

需要部署AWS的内容

  • 全面集成测试:API网关→ SQS → Lambda流量
  • Webhook端点测试:The /webhook 端点功能
  • SQS集成:队列处理和DLQ行为

要测试整个流程,请部署到AWS:

npm run sam:deploy

然后使用对已部署的API网关端点的真实webhook请求进行测试。

测试

  • 运行单元测试:
    npm test