mcpField
D
DynamoDB MCP Server

DynamoDB MCP Server

本地服务
github.com/imankamyabi数据库1794 周前更新

关于 DynamoDB MCP Server

DynamoDB MCP Server 提供管理 Amazon DynamoDB 表、索引、容量和项目的工具,适用于通过 MCP 客户端操作 DynamoDB 的用户。为降低意外数据丢失风险,它不支持删除操作。

主要功能

  1. 01创建和查看表
  2. 02创建和管理二级索引
  3. 03调整预置容量
  4. 04插入、读取和更新项目
  5. 05使用筛选条件查询和扫描

适用场景

  1. 01配置表和二级索引
  2. 02调整表或索引容量
  3. 03读取或更新表中的项目
  4. 04通过查询或扫描查找记录

MCP 相关

它向 MCP 客户端提供 DynamoDB 管理和数据操作工具,涵盖表、索引、容量及项目操作。不提供删除操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dynamodb": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DynamoDB MCP Server

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

作者

Iman Kamyabi ([email protected])

功能

表管理
  • 创建可自定义配置的 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=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 凭证
  1. 从 AWS Management Console 获取 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 License 许可。这意味着你可以自由使用、修改和分发该软件,但须遵守 MIT License 的条款和条件。更多详情请参阅项目仓库中的 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。