关于 DynamoDB MCP Server
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
DynamoDB MCP Server
用于管理 Amazon DynamoDB 资源的 Model Context Protocol 服务。此服务提供表管理、容量管理和数据操作工具。
作者
Iman Kamyabi ([email protected])
功能
表管理
- 创建可自定义配置的 DynamoDB 表
- 列出已有表
- 获取详细的表信息
- 配置表设置
索引管理
- 创建和管理全局二级索引(GSI)
- 更新 GSI 容量
- 创建本地二级索引(LSI)
容量管理
- 更新预置读/写容量单位
- 管理表吞吐量设置
数据操作
- 在表中插入或替换项目
- 根据主键检索项目
- 更新特定项目属性
- 根据条件查询表
- 使用筛选条件扫描表
注意:不支持删除操作,以防意外丢失数据。
设置
- 安装依赖项:
npm install
- 将 AWS 凭证配置为环境变量:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="your_region"
- 构建服务:
npm run build
- 启动服务:
npm start
工具
create_table
使用指定配置创建新的 DynamoDB 表。
参数:
tableName:要创建的表的名称partitionKey:分区键的名称partitionKeyType:分区键的类型(S=String,N=Number,B=Binary)sortKey:(可选)排序键的名称sortKeyType:(可选)排序键的类型readCapacity:预置读容量单位writeCapacity:预置写容量单位
示例:
{
"tableName": "Users",
"partitionKey": "userId",
"partitionKeyType": "S",
"readCapacity": 5,
"writeCapacity": 5
}
list_tables
列出账户中的所有 DynamoDB 表。
参数:
limit:(可选)返回的表的最大数量exclusiveStartTableName:(可选)分页时作为起始位置的表的名称
示例:
{
"limit": 10
}
describe_table
获取 DynamoDB 表的详细信息。
参数:
tableName:要查看的表的名称
示例:
{
"tableName": "Users"
}
create_gsi
在表上创建全局二级索引。
参数:
tableName:表的名称indexName:新索引的名称partitionKey:索引的分区键partitionKeyType:分区键的类型sortKey:(可选)索引的排序键sortKeyType:(可选)排序键的类型projectionType:投影类型(ALL、KEYS_ONLY、INCLUDE)nonKeyAttributes:(可选)要投影的非键属性readCapacity:预置读容量单位writeCapacity:预置写容量单位
示例:
{
"tableName": "Users",
"indexName": "EmailIndex",
"partitionKey": "email",
"partitionKeyType": "S",
"projectionType": "ALL",
"readCapacity": 5,
"writeCapacity": 5
}
update_gsi
更新全局二级索引的预置容量。
参数:
tableName:表的名称indexName:要更新的索引的名称readCapacity:新的读容量单位writeCapacity:新的写容量单位
示例:
{
"tableName": "Users",
"indexName": "EmailIndex",
"readCapacity": 10,
"writeCapacity": 10
}
create_lsi
在表上创建本地二级索引(必须在创建表时完成)。
参数:
tableName:表的名称indexName:新索引的名称partitionKey:表的分区键partitionKeyType:分区键的类型sortKey:索引的排序键sortKeyType:排序键的类型projectionType:投影类型(ALL、KEYS_ONLY、INCLUDE)nonKeyAttributes:(可选)要投影的非键属性readCapacity:(可选)预置读容量单位writeCapacity:(可选)预置写容量单位
示例:
{
"tableName": "Users",
"indexName": "CreatedAtIndex",
"partitionKey": "userId",
"partitionKeyType": "S",
"sortKey": "createdAt",
"sortKeyType": "N",
"projectionType": "ALL"
}
update_capacity
更新表的预置容量。
参数:
tableName:表的名称readCapacity:新的读容量单位writeCapacity:新的写容量单位
示例:
{
"tableName": "Users",
"readCapacity": 10,
"writeCapacity": 10
}
put_item
在表中插入或替换项目。
参数:
tableName:表的名称item:要放入表中的项目(JSON 对象)
示例:
{
"tableName": "Users",
"item": {
"userId": "123",
"name": "John Doe",
"email": "[email protected]"
}
}
get_item
根据主键从表中检索项目。
参数:
tableName:表的名称key:要检索项目的主键
示例:
{
"tableName": "Users",
"key": {
"userId": "123"
}
}
update_item
更新表中项目的特定属性。
参数:
tableName:表的名称key:要更新项目的主键updateExpression:更新表达式expressionAttributeNames:属性名称映射expressionAttributeValues:更新表达式的值conditionExpression:(可选)更新条件returnValues:(可选)要返回的值
示例:
{
"tableName": "Users",
"key": {
"userId": "123"
},
"updateExpression": "SET #n = :name",
"expressionAttributeNames": {
"#n": "name"
},
"expressionAttributeValues": {
":name": "Jane Doe"
}
}
query_table
使用键条件和可选筛选条件查询表。
参数:
tableName:表的名称keyConditionExpression:键条件表达式expressionAttributeValues:键条件表达式的值expressionAttributeNames:(可选)属性名称映射filterExpression:(可选)结果筛选表达式limit:(可选)要返回的最大项目数
示例:
{
"tableName": "Users",
"keyConditionExpression": "userId = :id",
"expressionAttributeValues": {
":id": "123"
}
}
scan_table
扫描整个表,并可选择使用筛选条件。
参数:
tableName:表的名称filterExpression:(可选)筛选表达式expressionAttributeValues:(可选)筛选表达式的值expressionAttributeNames:(可选)属性名称映射limit:(可选)要返回的最大项目数
示例:
{
"tableName": "Users",
"filterExpression": "age > :minAge",
"expressionAttributeValues": {
":minAge": 21
}
}
示例问题
使用此 DynamoDB MCP 服务时,可以向 Claude 提出以下示例问题:
表管理
- “创建一个名为 ‘Products’ 的新 DynamoDB 表,分区键为 ‘productId’(字符串),排序键为 ‘timestamp’(数字)”
- “列出我账户中的所有 DynamoDB 表”
- “Users 表的当前配置是什么?”
- “在 Users 表的 email 字段上添加全局二级索引”
容量管理
- “将 Users 表的容量更新为 20 个读取单位和 15 个写入单位”
- “提高 Users 表上 EmailIndex GSI 的容量”
- “Orders 表当前预置容量是多少?”
数据操作
- “插入一个新用户,ID 为 ‘123’,姓名为 ‘John Doe’,邮箱为 ‘[email protected]’”
- “获取 ID 为 ‘123’ 的用户”
- “将用户 ‘123’ 的邮箱地址更新为 ‘[email protected]’”
- “查找用户 ‘123’ 下的所有订单”
- “列出所有年龄超过 21 岁的用户”
- “查询 EmailIndex,查找邮箱为 ‘[email protected]’ 的用户”
配置
设置 AWS 凭证
- 从 AWS Management Console 获取 AWS 访问密钥 ID、秘密访问密钥和区域。
- 如果使用临时凭证(例如 IAM 角色),还需获取会话令牌。
- 确保这些凭证拥有执行 DynamoDB 操作所需的权限。
在 Claude Desktop 中使用
将以下内容添加到你的 claude_desktop_config.json 中:
Docker(推荐)
{
"mcpServers": {
"dynamodb": {
"command": "docker",
"args": [ "run", "-i", "--rm", "-e", "AWS_ACCESS_KEY_ID", "-e", "AWS_SECRET_ACCESS_KEY", "-e", "AWS_REGION", "-e", "AWS_SESSION_TOKEN", "mcp/dynamodb-mcp-server" ],
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key",
"AWS_SECRET_ACCESS_KEY": "your_secret_key",
"AWS_REGION": "your_region",
"AWS_SESSION_TOKEN": "your_session_token"
}
}
}
}
构建
Docker:
docker build -t mcp/dynamodb-mcp-server -f Dockerfile .
开发
要在开发模式下运行并启用自动重新加载:
npm run dev
许可证
此 MCP 服务采用 MIT License 许可。这意味着你可以自由使用、修改和分发该软件,但须遵守 MIT License 的条款和条件。更多详情请参阅项目仓库中的 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。