D

DynamoDB MCP 管理工具

@imankamyabi/dynamodb-mcp-server
0 Stars 27 次浏览 imankamyabi 更新于 2026-08-23

通过模型上下文协议(Model Context Protocol)启用对 DynamoDB 资源的管理,支持表和索引的创建、容量管理和数据操作,但不提供删除功能,以防止意外的数据丢失。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "dynamodb": {
      "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"
      ],
      "command": "docker",
      "env": {
        "AWS_ACCESS_KEY_ID": "your_access_key",
        "AWS_REGION": "your_region",
        "AWS_SECRET_ACCESS_KEY": "your_secret_key",
        "AWS_SESSION_TOKEN": "your_session_token"
      }
    }
  }
}

该服务需要配置环境变量:AWS_ACCESS_KEY_ID、AWS_REGION、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN

服务介绍

DynamoDB MCP 服务器

一个用于管理 Amazon DynamoDB 资源的 Model Context Protocol 服务器。此服务器提供了表管理、容量管理和数据操作的工具。

作者

Iman Kamyabi (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

工具

create_table

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

参数:

  • tableName: 要创建的表的名称
  • partitionKey: 分区键的名称
  • partitionKeyType: 分区键的类型 (S=字符串, N=数字, B=二进制)
  • 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": "john@example.com"
  }
}

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',电子邮件为 '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 文件。

相关 MCP 服务