DynamoDB MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Allows managing Amazon DynamoDB resources, including table management, capacity management, and data operations such as creating tables, managing indexes, updating capacity, and performing CRUD operations on data

DynamoDB MCP 服务器

用于管理 Amazon DynamoDB 资源的模型上下文协议服务器。此服务器提供用于表管理、容量管理和数据操作的工具。

作者

伊曼·卡米亚比 ( ikmyb@icloud.com )

特征

表管理

  • 使用可自定义的配置创建新的 DynamoDB 表
  • 列出现有表
  • 获取表的详细信息
  • 配置表设置

指数管理

  • 创建和管理全局二级索引 (GSI)
  • 更新 GSI 容量
  • 创建本地二级索引 (LSI)

容量管理

  • 更新预配置的读/写容量单位
  • 管理表吞吐量设置

数据操作

  • 插入或替换表中的项目
  • 按主键检索项目
  • 更新特定项目属性
  • 带条件的查询表
  • 使用过滤器扫描表格

注意:不支持删除操作,以防止意外数据丢失。

设置

  1. 安装依赖项:
npm install
  1. 将 AWS 凭证配置为环境变量:
export AWS_ACCESS_KEY_ID="your_access_key" export AWS_SECRET_ACCESS_KEY="your_secret_key" export AWS_REGION="your_region"
  1. 构建服务器:
npm run build
  1. 启动服务器:
npm start

工具

创建表

使用指定的配置创建一个新的 DynamoDB 表。

参数:

  • tableName :要创建的表的名称
  • partitionKey :分区键的名称
  • partitionKeyType :分区键的类型(S=字符串,N=数字,B=二进制)
  • sortKey :(可选)排序键的名称
  • sortKeyType :(可选)排序键的类型
  • readCapacity :预配置的读取容量单位
  • writeCapacity :预配置的写入容量单位

例子:

{ "tableName": "Users", "partitionKey": "userId", "partitionKeyType": "S", "readCapacity": 5, "writeCapacity": 5 }

列表表

列出账户中的所有 DynamoDB 表。

参数:

  • limit :(可选)返回的最大表数
  • exclusiveStartTableName :(可选)分页起始表的名称

例子:

{ "limit": 10 }

描述表

获取有关 DynamoDB 表的详细信息。

参数:

  • tableName :要描述的表的名称

例子:

{ "tableName": "Users" }

创建_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 }

更新_gsi

更新全局二级索引的预配置容量。

参数:

  • tableName :表的名称
  • indexName :要更新的索引的名称
  • readCapacity :新的读取容量单位
  • writeCapacity :新的写入容量单位

例子:

{ "tableName": "Users", "indexName": "EmailIndex", "readCapacity": 10, "writeCapacity": 10 }

创建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" }

更新容量

更新表的预配置容量。

参数:

  • tableName :表的名称
  • readCapacity :新的读取容量单位
  • writeCapacity :新的写入容量单位

例子:

{ "tableName": "Users", "readCapacity": 10, "writeCapacity": 10 }

放置物品

在表中插入或替换项目。

参数:

  • tableName :表的名称
  • item :要放入表中的项目(作为 JSON 对象)

例子:

{ "tableName": "Users", "item": { "userId": "123", "name": "John Doe", "email": "john@example.com" } }

获取项目

通过主键从表中检索项目。

参数:

  • tableName :表的名称
  • key :要检索的项目的主键

例子:

{ "tableName": "Users", "key": { "userId": "123" } }

更新项目

更新表中项目的特定属性。

参数:

  • tableName :表的名称
  • key :要更新的项目的主键
  • updateExpression :更新表达式
  • expressionAttributeNames :属性名称映射
  • expressionAttributeValues :更新表达式的值
  • conditionExpression :(可选)更新条件
  • returnValues :(可选)返回什么值

例子:

{ "tableName": "Users", "key": { "userId": "123" }, "updateExpression": "SET #n = :name", "expressionAttributeNames": { "#n": "name" }, "expressionAttributeValues": { ":name": "Jane Doe" } }

查询表

使用关键条件和可选过滤器查询表。

参数:

  • tableName :表的名称
  • keyConditionExpression :关键条件表达式
  • expressionAttributeValues :关键条件表达式的值
  • expressionAttributeNames :(可选)属性名称映射
  • filterExpression :(可选)结果的过滤表达式
  • limit :(可选)返回的最大项目数

例子:

{ "tableName": "Users", "keyConditionExpression": "userId = :id", "expressionAttributeValues": { ":id": "123" } }

扫描表

使用可选过滤器扫描整个表。

参数:

  • tableName :表的名称
  • filterExpression :(可选)过滤表达式
  • expressionAttributeValues :(可选)过滤表达式的值
  • expressionAttributeNames :(可选)属性名称映射
  • limit :(可选)返回的最大项目数

例子:

{ "tableName": "Users", "filterExpression": "age > :minAge", "expressionAttributeValues": { ":minAge": 21 } }

示例问题

以下是您在使用此 DynamoDB MCP 服务器时可以向 Claude 询问的一些示例问题:

表管理

  • “创建一个名为‘Products’的新 DynamoDB 表,其分区键为‘productId’(字符串),排序键为‘timestamp’(数字)”
  • “列出我的账户中的所有 DynamoDB 表”
  • “用户表的当前配置是什么?”
  • “在用户表的电子邮件字段上添加全局二级索引”

容量管理

  • “将用户表容量更新为 20 个读取单元和 15 个写入单元”
  • “扩大用户表上的 EmailIndex GSI 容量”
  • “订单表的当前配置容量是多少?”

数据操作

  • “插入一个新用户,ID 为‘123’,名称为‘John Doe’,电子邮件为‘ john@example.com ’”
  • “获取 ID 为‘123’的用户”
  • “将用户‘123’的电子邮件地址更新为‘ john.doe@example.com ’”
  • “查找用户‘123’下的所有订单”
  • “列出所有超过 21 岁的用户”
  • “查询 EmailIndex 来查找电子邮件为‘ john@example.com ’的用户”

配置

设置AWS凭证

  1. 从 AWS 管理控制台获取 AWS 访问密钥 ID、秘密访问密钥和区域。
  2. 如果使用临时凭证(例如 IAM 角色),还可以获取会话令牌。
  3. 确保这些凭证具有 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 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

ID: 3voqtftc3c