返回市场
aws放大数据mcp

aws放大数据mcp

作者:dbsmith74914 星标更新:2025-04-12

项目介绍

Amplify 数据 API MCP 服务器

此 MCP(模型上下文协议)服务器允许您通过自然语言与您的 AWS Amplify Gen2 应用的数据进行交互。它使像 Claude 这样的AI助手能够使用对话语言而不是复杂的代码或命令来操作您的 Amplify 数据模型。

功能

  • 💬 自然语言界面:用简单的英语提问和给出指令
  • 🔍 查看模式信息:列出模型,查看字段详情,探索关系
  • 📊 查询数据:运行自定义的 GraphQL 查询以列出和检索您的数据
  • ✏️ 修改数据:通过 GraphQL 变异创建、更新和删除记录
  • 🔐 安全认证:使用环境变量中的 Cognito 认证

重要认证要求

此 MCP 服务器使用 Cognito 认证来访问您的 Amplify 数据。您的 Amplify 项目必须配置为使用基于 Cognito 的认证。 服务器仅能访问经过身份验证的用户有权访问的数据模型和记录。

为了实现最佳功能,我们强烈建议:

  1. 在您的 Cognito 用户池中创建一个 ADMINS 用户组
  2. 将适当用户添加到该组
  3. 配置您的 Amplify 模型权限,允许 ADMINS 组执行所有操作

示例模型授权以供管理员访问:

// 在您的 Amplify 模型定义中
authorization: (allow) => [
  allow.authenticated().to(["read"]),
  allow.group("ADMINS").to(["create", "read", "update", "delete"]),
];

没有适当的管理员权限,MCP 服务器在处理您的数据时会受到限制。

安装指南

先决条件

  • Node.js v16 或更高版本
  • 一个带有数据模型的 AWS Amplify Gen2 应用
  • 访问您的 Amplify 输出文件(amplify_outputs.json
  • 在您的 Amplify 应用中配置了 Cognito 认证
  • 具有适当权限的用户(理想情况下在 ADMINS 组中)

安装

  1. 克隆仓库

    git clone https://github.com/dbsmith7491/aws-amplify-data-mcp.git
    cd aws-amplify-data-mcp
    
  2. 安装依赖项

    npm install
    
  3. 构建项目

    npm run build
    

针对 Claude Desktop 的配置

要与 Claude Desktop 一起使用:

  1. 打开 Claude Desktop 配置文件

    • Mac/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %AppData%\Claude\claude_desktop_config.json

    如果不存在,请创建该文件。

  2. 添加 Amplify MCP 服务器配置

    {
      "mcpServers": {
        "amplify-data-api": {
          "command": "node",
          "args": [
            "/ABSOLUTE/PATH/TO/aws-amplify-data-mcp/build/index.js",
            "--amplify-outputs",
            "/ABSOLUTE/PATH/TO/YOUR/amplify_outputs.json"
          ],
          "env": {
            "AMPLIFY_USERNAME": "your-admin-username",
            "AMPLIFY_PASSWORD": "your-admin-password"
          }
        }
      }
    }
    

    替换路径和凭据为您自己的。为了实现全部功能,请使用 ADMINS 组中的用户的凭据。

  3. 重启 Claude Desktop

使用自然语言与您的数据交互

一旦配置完成,您可以在 Claude 中使用日常语言与您的 Amplify 数据进行交互。只需在消息开头包含 @amplify-data-api 标签,即可将问题导向 Amplify 服务器。

自然语言示例

以下是一些如何与您的数据交互的例子:

  • "@amplify-data-api 我的应用中有哪些数据模型?"
  • "@amplify-data-api 显示故事模型有哪些字段?"
  • "@amplify-data-api 能否列出我数据库中的所有故事?"
  • "@amplify-data-api 查找标题中含有 '冒险' 的故事"
  • "@amplify-data-api 创建一个名为 'Claude' 的新角色,他是一位AI助手"
  • "@amplify-data-api 更新ID为 'abc123' 的故事,将其标题改为 '旅程开始'"
  • "@amplify-data-api 删除ID为 'xyz789' 的故事"
  • "@amplify-data-api 角色和故事之间的关系是什么?"
  • "@amplify-data-api 显示故事 'abc123' 中的所有角色"
  • "@amplify-data-api 上个月创建了多少个故事?"

Claude 将解释这些自然语言请求,并将其转换为适当的 GraphQL 查询和变异。

提供的工具

服务器提供以下工具:

  1. 列出所有数据模型

    • 列出您 Amplify 应用中可用的所有数据模型
  2. 获取模型详情

    • 显示特定模型的字段和关系的详细信息
  3. 运行 GraphQL 查询和变异

    • 执行自定义的 GraphQL 查询和变异以获得最大的灵活性
    • 处理所有数据操作(列出、获取、创建、更新、删除)
  4. 获取关系详情

    • 显示复杂数据结构中的模型间关系
  5. 列出枚举类型

    • 显示您数据模型中可用的所有枚举类型
  6. 手动登录(如有需要):

    • 如果自动登录失败,可以手动进行认证

示例对话

以下是与 Claude 的典型对话流程:

:@amplify-data-api 我有哪些可用的数据模型?

Claude:我将检查您的 Amplify 应用中的可用数据模型。

我找到了以下模型:

  • 故事
  • 角色
  • 地点
  • 世界 [每个模型的更多细节...]

:@amplify-data-api 告诉我关于故事模型的信息

Claude:这是故事模型的详细信息:

字段:

  • id: ID(必需)
  • title: String(必需)
  • description: String
  • numberOfPages: Int [其他字段...]

:@amplify-data-api 能不能创建一个名为 "Claude 的冒险" 的故事,讲述一位AI探索魔法世界的故事?

Claude:我将使用 GraphQL 变异为您创建这个故事。这是我要提交的内容:

mutation CreateStory {
  createStory(
    input: {
      title: "Claude 的冒险"
      description: "讲述一位AI探索魔法世界的故事"
      status: "草稿"
    }
  ) {
    id
    title
    description
    status
    createdAt
    updatedAt
  }
}

:是的,请创建它

Claude:我已经创建了这个故事!这是新的记录:

{
  "id": "abc113",
  "title": "Claude 的冒险",
  "description": "讲述一位AI探索魔法世界的故事",
  "status": "草稿",
  "createdAt": "2023-06-15T10:30:45Z",
  "updatedAt": "2023-06-15T10:30:45Z"
}

:@amplify-data-api 现在让我们给这个故事添加一个角色

Claude:[继续自然地互动...]

安全注意事项

  • 环境变量中的凭据:使用环境变量以更好地保护凭据
  • 权限:使用适当的 Cognito 组来控制访问(ADMINS 组具有完全访问权限)
  • 数据敏感性:注意通过 AI 助手访问的数据
  • 访问控制:MCP 服务器只能访问经过身份验证的用户有权访问的数据
  • 用户角色:为了实现全部功能,请使用具有管理员权限的用户的凭据

故障排除

  • 认证问题:验证您的 Cognito 凭据和用户池设置
  • 缺少模型:确保您的 amplify_outputs.json 文件是最新的
  • 连接问题:检查 Claude Desktop 日志中的错误
  • 权限错误:验证您的用户是否具有适当的 Cognito 权限
  • 受限访问:如果您无法看到某些模型或记录,请检查您的用户是否有权访问它们

开发者指南

  • TypeScript 源码位于 src/ 目录
  • 编译后的 JavaScript 输出到 build/
  • 源码更改后运行 npm run build

作为 ZIP 文件分发

如果您收到的是 ZIP 文件,请按照以下步骤操作:

  1. 解压 ZIP 文件 到计算机上的目录
  2. 打开终端 并导航到解压的目录
  3. 安装依赖项
    npm install
    
  4. 构建项目
    npm run build
    
  5. 配置 Claude Desktop,如上文“针对 Claude Desktop 的配置”部分所示,使用正确的路径和环境变量
  6. 重启 Claude Desktop 以应用更改

如果您想将此项目分发给其他人:

  1. 确保所有更改已提交
  2. 包括所有必要的文件
    • src/ 目录及其所有 TypeScript 源文件
    • package.json 和其他配置文件
    • 此 README.md 文件
    • (可选)如果已经构建了项目,则包括 build/ 目录
  3. 创建整个目录的 ZIP 文件
  4. 分享 ZIP 文件 并附上上述步骤的说明

命令行选项

选项:
  --amplify-outputs <path>   指向 amplify_outputs.json 文件的路径
  --help, -h                 显示此帮助信息

环境变量:
  AMPLIFY_USERNAME           用于自动登录的 Cognito 用户名
  AMPLIFY_PASSWORD           用于自动登录的 Cognito 密码

额外资源


需要更多帮助?请联系您的开发团队寻求支持。