放大数据API MCP服务器
此MCP(模型上下文协议)服务器允许您通过自然语言与AWS Amplify Gen2应用程序的数据进行交互。它允许像Claude这样的人工智能助手使用对话语言而不是复杂的代码或命令对Amplify数据模型执行操作。
特性
- 💬 自然语言接口:用简单的英语提问和给出指示
- 🔍 查看架构信息:列出模型、查看字段详细信息并探索关系
- 📊 查询数据:运行自定义GraphQL查询以列出和检索数据
- ✏️ 修改数据:通过GraphQL突变创建、更新和删除记录
- 🔐 安全认证:使用带有环境变量的Cognito身份验证
重要身份验证要求
此MCP服务器使用Cognito身份验证来访问您的Amplify数据。 您的Amplify项目必须配置为使用基于Cognito的身份验证。 服务器将只能访问经过身份验证的用户有权访问的数据模型和记录。
为了获得最佳功能,我们强烈建议:
- 创建一个 管理员 Cognito用户池中的用户组
- 将适当的用户添加到此组
- 为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组中)
安装
- 克隆存储库:
git clone https://github.com/dbsmith7491/aws-amplify-data-mcp.git
cd aws-amplify-data-mcp- 安装依赖项:
npm install- 构建项目:
npm run buildClaude桌面配置
要将其与Claude Desktop一起使用,请执行以下操作:
- 打开Claude Desktop配置文件:
- Mac/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %AppData%\Claude\claude_desktop_config.json
如果文件不存在,则创建该文件。
- 添加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组中用户的凭据。
- 重新启动克劳德桌面
使用自然语言处理您的数据
配置后,您可以使用Claude中的日常语言与Amplify数据进行交互。只需包括 @amplify-data-api 在邮件开头添加标签,将您的问题引导到Amplify服务器。
自然语言示例
以下是一些如何与数据交互的示例:
- "@放大数据api 我的应用程序中有哪些数据模型?"
- "@放大数据api 告诉我故事模型有哪些字段”
- "@放大数据api 你能列出我数据库中的所有故事吗?"
- "@放大数据api 查找标题中包含“冒险”的故事
- "@放大数据api 创建一个名为“克劳德”的新角色,他是一名人工智能助理
- "@放大数据api 更新ID为“abc123”的故事,将其标题更改为“旅程开始”
- "@放大数据api 删除ID为“xyz789”的故事
- "@放大数据api 人物和故事之间的关系是什么?"
- "@放大数据api 给我看故事“abc123”中的所有角色
- "@放大数据api 上个月创作了多少故事?"
Claude将解释这些自然语言请求,并将其转换为适当的GraphQL查询和突变。
可用工具
服务器提供以下工具:
- 列出所有数据模型:
- 列出Amplify应用程序中的所有可用数据模型
- 获取模型详细信息:
- 显示有关特定模型的字段和关系的详细信息
- 运行GraphQL查询和突变:
- 执行自定义GraphQL查询和突变,以获得最大的灵活性 - 处理所有数据操作(列表、获取、创建、更新、删除)
- 获取关系详细信息:
- 显示复杂数据结构模型之间的关系
- 列出枚举:
- 显示数据模型中可用的所有枚举类型
- 手动登录 (如果需要):
- 如果自动身份验证失败,请手动进行身份验证
对话示例
以下是与克劳德的典型对话流程:
你:@amplified data api我有哪些可用的数据模型? 克劳德:我会查看你的Amplify应用程序,了解可用的数据模型。 我找到了以下型号: - 故事 - 角色 - 位置 - 世界 \[关于每个模型的更多细节…\] 你:@amplified数据api告诉我Story模型的情况 克劳德:以下是Story模型的详细信息: 领域: - id:id(必填) - title:字符串(必填) - description:字符串 - 页数:Int \[其他领域…\] 你:@amplified data api你能创建一个名为“克劳德的冒险”的新故事,讲述一个人工智能探索神奇世界的故事吗? 克劳德:我将使用GraphQL突变为您创建故事。以下是我将提交的内容: ``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 } }`**你**:是的,请创建它 **克劳德**我创造了故事!这是新的记录:`json { "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文件,请按照以下步骤操作:
- 解压缩ZIP文件 到计算机上的某个目录
- 打开终端 并导航到提取的目录
- 安装依赖项:
npm install- 构建项目:
npm run build- 配置Claude桌面 如上文“Claude Desktop的配置”部分所示,使用正确的路径和环境变量
- 重新启动克劳德桌面 应用更改
如果您想将此项目分发给其他人:
- 确保所有更改都已提交
- 包括所有必要的文件:
- src/ 包含所有TypeScript源文件的目录 - package.json 以及其他配置文件 - 此README.md文件 - (可选) build/ 目录(如果您已经构建了项目)
- 创建ZIP文件 整个目录
- 共享ZIP文件 并附有遵循上述步骤的说明
命令行选项
Options:
--amplify-outputs
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额外资源
______________________________________________________________________
需要更多帮助?请联系您的开发团队以获取支持。
