关于 dynamodb
DynamoDB MCP 服务是面向 AWS DynamoDB 的 MCP 服务,支持细粒度的工具控制和可配置的访问级别。它适合需要让 Agent 或助手读写 DynamoDB 数据、同时限制操作范围的团队。项目支持标准 AWS 凭证链,也可连接本地 DynamoDB 或 LocalStack。
主要功能
- 01表、条目、查询、扫描与批量操作
- 02按工具组或单个工具启用和禁用
- 03按表名限制可访问的范围
- 04支持 AWS 凭证链与自定义端点
适用场景
- 01在 MCP 客户端中查询 DynamoDB 表数据
- 02使用只读模式让 Agent 安全地检查数据
- 03在本地 DynamoDB 或 LocalStack 中开发测试
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y aws-dynamodb-mcp-serverAWS_REGIONAWS region for DynamoDB (or use AWS_DEFAULT_REGION).AWS_ACCESS_KEY_ID密钥AWS access key ID (uses AWS credential chain if not set).AWS_SECRET_ACCESS_KEY密钥AWS secret access key (uses AWS credential chain if not set).DYNAMODB_ENDPOINTCustom endpoint for local DynamoDB or LocalStack.DYNAMODB_ENABLED_TOOL_GROUPSComma-separated tool groups to enable (readonly, readwrite, admin).DYNAMODB_ENABLED_TOOLSComma-separated whitelist of specific tools to enable.DYNAMODB_DISABLED_TOOLSComma-separated blacklist of specific tools to disable.DYNAMODB_ALLOWED_TABLESRestrict operations to specific tables (comma-separated); all tables accessible if not set.SKIP_HEALTH_CHECKSSkip startup health checks.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | 返回的表的最大数量(1-100)。默认值:100 |
| exclusiveStartTableName | string | 否 | 上一次请求中最后评估的表名。用于分页。 |
详细介绍
DynamoDB MCP 服务
用于 AWS DynamoDB 的 MCP 服务,可对工具进行精细控制。提供全面的 DynamoDB 操作,并支持配置访问级别。
功能
- 完整的 DynamoDB 操作:表、项目、查询、扫描和批量操作
- 精细的访问控制:按组或单独启用/禁用工具
- 表级访问控制:将操作限制在指定的表中
- AWS 凭证支持:支持使用显式凭证或 AWS 凭证链
- 自定义端点:支持本地 DynamoDB 或 LocalStack
可用工具
工具名称较短,因为 MCP 客户端通常会在名称前加上服务名称作为前缀(例如,dynamodb:list_tables)。
只读工具(组:readonly)
| 工具 | 描述 |
|---|---|
list_tables | 分页列出所有 DynamoDB 表 |
describe_table | 获取表元数据、架构和索引 |
get_item | 根据主键检索单个项目 |
query_items | 使用键条件查询项目 |
scan_table | 扫描表,可选使用筛选条件 |
batch_get_items | 跨表获取多个项目 |
读写工具(组:readwrite)
| 工具 | 描述 |
|---|---|
put_item | 创建或替换项目 |
update_item | 更新指定属性 |
delete_item | 根据主键删除项目 |
batch_write_items | 批量执行写入/删除操作 |
管理工具(组:admin)
| 工具 | 描述 |
|---|---|
create_table | 创建新表 |
delete_table | 删除表及其所有数据 |
update_table | 更新表设置 |
配置
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
AWS_REGION | 是 | AWS 区域(或 AWS_DEFAULT_REGION) |
AWS_ACCESS_KEY_ID | 否 | AWS 访问密钥(未设置时使用凭证链) |
AWS_SECRET_ACCESS_KEY | 否 | AWS 秘密密钥(未设置时使用凭证链) |
DYNAMODB_ENDPOINT | 否 | 自定义端点(用于本地 DynamoDB) |
DYNAMODB_ENABLED_TOOL_GROUPS | 否 | 以逗号分隔的组:readonly、readwrite、admin |
DYNAMODB_ENABLED_TOOLS | 否 | 将指定工具加入允许列表 |
DYNAMODB_DISABLED_TOOLS | 否 | 将指定工具加入禁止列表 |
DYNAMODB_ALLOWED_TABLES | 否 | 将操作限制在指定的表中(以逗号分隔) |
工具访问控制
可通过以下三种方式控制哪些工具可用:
1. 工具组(大多数情况下推荐):
# Read-only access
DYNAMODB_ENABLED_TOOL_GROUPS="readonly"
# Read and write, no table management
DYNAMODB_ENABLED_TOOL_GROUPS="readonly,readwrite"
# All operations (default)
DYNAMODB_ENABLED_TOOL_GROUPS="readonly,readwrite,admin"
2. 将指定工具加入允许列表:
# Only allow specific operations
DYNAMODB_ENABLED_TOOLS="get_item,query_items,scan_table"
3. 将指定工具加入禁止列表:
# Enable all except dangerous operations
DYNAMODB_DISABLED_TOOLS="delete_table,create_table"
优先级:DYNAMODB_ENABLED_TOOLS > DYNAMODB_DISABLED_TOOLS > DYNAMODB_ENABLED_TOOL_GROUPS
表级访问控制
将所有操作限制为仅针对特定表:
# Only allow access to Users and Orders tables
DYNAMODB_ALLOWED_TABLES="Users,Orders"
设置 DYNAMODB_ALLOWED_TABLES 后:
list_tables仅返回允许列表中的表- 对未获允许的表进行操作会返回“Access denied”错误
- 如果请求中包含任何未获允许的表,批量操作将失败
- 表名区分大小写(DynamoDB 表名区分大小写)
- 使用
list_tables分页时,limit会在筛选前应用
注意: 如果未设置或设置为空字符串,则所有表均可访问(不进行筛选)。
适用于:
- 多租户环境:每个客户端只能访问自己的表
- 开发环境:保护生产表
- 将 AI Agent 的影响范围限制在特定表
Claude Desktop 配置
将以下内容添加到 claude_desktop_config.json:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dynamodb": {
"command": "npx",
"args": ["-y", "aws-dynamodb-mcp-server"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "your-access-key",
"AWS_SECRET_ACCESS_KEY": "your-secret-key",
"DYNAMODB_ENABLED_TOOL_GROUPS": "readonly,readwrite"
}
}
}
}
使用本地 DynamoDB
使用本地 DynamoDB 或 LocalStack 进行开发:
{
"mcpServers": {
"dynamodb-local": {
"command": "npx",
"args": ["-y", "aws-dynamodb-mcp-server"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "local",
"AWS_SECRET_ACCESS_KEY": "local",
"DYNAMODB_ENDPOINT": "http://localhost:8000"
}
}
}
}
示例
查询项目
Query all orders for customer "C123" from the last 30 days:
- Table: Orders
- Key condition: customerId = :cid AND orderDate > :date
- Values: {":cid": "C123", ":date": "2025-01-01"}
创建表
Create a Users table with:
- Partition key: userId (String)
- Billing: Pay per request
批量操作
Get user profiles for IDs: user1, user2, user3 from the Users table
开发
设置
cd experimental/dynamodb
npm run install-all
npm run build
测试
# Unit tests
npm run test:run
# Integration tests
npm run test:integration
# Manual tests (requires AWS credentials)
npm run test:manual
资源
| 资源 | 描述 |
|---|---|
dynamodb://config | 服务配置和工具组映射 |
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。