自然语言数据API

通过自然语言与AWS Amplify Gen2应用数据进行交互的MCP服务器,支持查询、修改数据模型等操作。

  • by dbsmith7491
  • JavaScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 dbsmith7491/aws-amplify-data-mcp

使用说明

放大数据API MCP服务器

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

特性

  • 💬 自然语言接口:用简单的英语提问和给出指示
  • 🔍 查看架构信息:列出模型、查看字段详细信息并探索关系
  • 📊 查询数据:运行自定义GraphQL查询以列出和检索数据
  • ✏️ 修改数据:通过GraphQL突变创建、更新和删除记录
  • 🔐 安全认证:使用带有环境变量的Cognito身份验证

重要身份验证要求

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

为了获得最佳功能,我们强烈建议:

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

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

// In your Amplify model definition
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桌面配置

要将其与Claude Desktop一起使用,请执行以下操作:

  1. 打开Claude Desktop配置文件:

    • Mac/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %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中的日常语言与Amplify数据进行交互。只需包括 @amplify-data-api 在邮件开头添加标签,将您的问题引导到Amplify服务器。

自然语言示例

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

  • "@放大数据api 我的应用程序中有哪些数据模型?"
  • "@放大数据api 告诉我故事模型有哪些字段”
  • "@放大数据api 你能列出我数据库中的所有故事吗?"
  • "@放大数据api 查找标题中包含“冒险”的故事
  • "@放大数据api 创建一个名为“克劳德”的新角色,他是一名人工智能助理
  • "@放大数据api 更新ID为“abc123”的故事,将其标题更改为“旅程开始”
  • "@放大数据api 删除ID为“xyz789”的故事
  • "@放大数据api 人物和故事之间的关系是什么?"
  • "@放大数据api 给我看故事“abc123”中的所有角色
  • "@放大数据api 上个月创作了多少故事?"

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

可用工具

服务器提供以下工具:

  1. 列出所有数据模型:

    • 列出Amplify应用程序中的所有可用数据模型
  2. 获取模型详细信息:

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

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

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

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

    • 如果自动身份验证失败,请手动进行身份验证

对话示例

以下是与克劳德的典型对话流程:

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

克劳德:我会查看你的Amplify应用程序,了解可用的数据模型。

我找到了以下型号:

  • 故事
  • 角色
  • 位置
  • 世界 [关于每个模型的更多细节…]

你:@amplified数据api告诉我Story模型的情况

克劳德:以下是Story模型的详细信息:

领域:

  • id:id(必填)
  • title:字符串(必填)
  • description:字符串
  • 页数:Int [其他领域…]

你:@amplified data api你能创建一个名为“克劳德的冒险”的新故事,讲述一个人工智能探索神奇世界的故事吗?

克劳德:我将使用GraphQL突变为您创建故事。以下是我将提交的内容:

mutation CreateStory {
  createStory(
    input: {
      title: "Claude's Adventure"
      description: "A tale about an AI exploring a magical world"
      status: "draft"
    }
  ) {
    id
    title
    description
    status
    createdAt
    updatedAt
  }
}

你:是的,请创建它

克劳德我创造了故事!这是新的记录:

{
  "id": "abc123",
  "title": "Claude's Adventure",
  "description": "A tale about an AI exploring a magical world",
  "status": "draft",
  "createdAt": "2023-06-15T10:30:45Z",
  "updatedAt": "2023-06-15T10:30:45Z"
}

你:@amplified data api现在让我们为这个故事添加一个角色

克劳德:[自然地继续互动…]

安全考虑

  • 环境变量中的凭据:使用环境变量来提高凭据的安全性
  • 权限:使用适当的Cognito组来控制访问(ADMINS组用于完全访问)
  • 数据敏感性:注意你通过人工智能助手访问的数据
  • 访问控制: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桌面 如上文“Claude Desktop的配置”部分所示,使用正确的路径和环境变量
  6. 重新启动克劳德桌面 应用更改

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

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

命令行选项

Options:
  --amplify-outputs <path>   Path to the amplify_outputs.json file
  --help, -h                 Show this help message

Environment Variables:
  AMPLIFY_USERNAME           Cognito username for automatic login
  AMPLIFY_PASSWORD           Cognito password for automatic login

额外资源


需要更多帮助?请联系您的开发团队以获取支持。