Lets an AI client list, query, and modify AWS DynamoDB tables and items with configurable tool and table access controls.
Also known as pulsemcp/mcp-servers, aws-dynamodb-mcp-server
- Stars
- 81
- Tools
- 13
- Downloads, 30 days
- 220
- Latest version
- 0.2.7
- Last commit
- Oct 9, 2026
- License
- MIT
What is DynamoDB MCP?
DynamoDB is an MCP server. Lets an AI client list, query, and modify AWS DynamoDB tables and items with configurable tool and table access controls. It exposes 13 tools, such as list_tables, describe_table, get_item.
Summary generated from the project's README
How to install DynamoDB MCP
Formats verified 10 Nov 2026Install DynamoDB MCP in Claude Code
$ claude mcp add --env AWS_REGION=<AWS_REGION> --env AWS_ACCESS_KEY_ID=<YOUR_AWS_ACCESS_KEY_ID> --env AWS_SECRET_ACCESS_KEY=<YOUR_AWS_SECRET_ACCESS_KEY> dynamodb -- npx -y aws-dynamodb-mcp-serverInstall DynamoDB MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"dynamodb": {
"command": "npx",
"args": [
"-y",
"aws-dynamodb-mcp-server"
],
"env": {
"AWS_REGION": "<AWS_REGION>",
"AWS_ACCESS_KEY_ID": "<YOUR_AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_AWS_SECRET_ACCESS_KEY>"
}
}
}
}Install DynamoDB MCP in VS Code
.vscode/mcp.json
{
"servers": {
"dynamodb": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"aws-dynamodb-mcp-server"
],
"env": {
"AWS_REGION": "<AWS_REGION>",
"AWS_ACCESS_KEY_ID": "<YOUR_AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_AWS_SECRET_ACCESS_KEY>"
}
}
}
}Install DynamoDB MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"dynamodb": {
"command": "npx",
"args": [
"-y",
"aws-dynamodb-mcp-server"
],
"env": {
"AWS_REGION": "<AWS_REGION>",
"AWS_ACCESS_KEY_ID": "<YOUR_AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_AWS_SECRET_ACCESS_KEY>"
}
}
}
}Install DynamoDB MCP in Codex
~/.codex/config.toml
[mcp_servers.dynamodb] command = "npx" args = ["-y", "aws-dynamodb-mcp-server"] [mcp_servers.dynamodb.env] AWS_REGION = "<AWS_REGION>" AWS_ACCESS_KEY_ID = "<YOUR_AWS_ACCESS_KEY_ID>" AWS_SECRET_ACCESS_KEY = "<YOUR_AWS_SECRET_ACCESS_KEY>"
Install DynamoDB MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"dynamodb": {
"command": "npx",
"args": [
"-y",
"aws-dynamodb-mcp-server"
],
"env": {
"AWS_REGION": "<AWS_REGION>",
"AWS_ACCESS_KEY_ID": "<YOUR_AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_AWS_SECRET_ACCESS_KEY>"
}
}
}
}DynamoDB MCP tools 13
Detected from the READMElist_tablesdescribe_tableget_itemquery_itemsscan_tablebatch_get_itemsput_itemupdate_itemdelete_itembatch_write_itemscreate_tabledelete_table
| list_tables | — | |
| describe_table | — | |
| get_item | — | |
| query_items | — | |
| scan_table | — | |
| batch_get_items | — | |
| put_item | — | |
| update_item | — | |
| delete_item | — | |
| batch_write_items | — | |
| create_table | — | |
| delete_table | — |
Show all 13 toolsShow fewer tools
update_table
| update_table | — |
Configuration
AWS_REGIONRequiredAWS region for DynamoDB (or use AWS_DEFAULT_REGION).
AWS_ACCESS_KEY_IDSecretAWS access key ID (uses AWS credential chain if not set).
AWS_SECRET_ACCESS_KEYSecretAWS secret access key (uses AWS credential chain if not set).
DYNAMODB_ALLOWED_TABLESRestrict operations to specific tables (comma-separated); all tables accessible if not set.
DYNAMODB_DISABLED_TOOLSComma-separated blacklist of specific tools to disable.
DYNAMODB_ENABLED_TOOLSComma-separated whitelist of specific tools to enable.
DYNAMODB_ENABLED_TOOL_GROUPSComma-separated tool groups to enable (readonly, readwrite, admin).
DYNAMODB_ENDPOINTCustom endpoint for local DynamoDB or LocalStack.
SKIP_HEALTH_CHECKSSkip startup health checks.
| Name | Description | |
|---|---|---|
| AWS_REGION | AWS region for DynamoDB (or use AWS_DEFAULT_REGION). | Required |
| AWS_ACCESS_KEY_ID | AWS access key ID (uses AWS credential chain if not set). | Secret |
| AWS_SECRET_ACCESS_KEY | AWS secret access key (uses AWS credential chain if not set). | Secret |
| DYNAMODB_ALLOWED_TABLES | Restrict operations to specific tables (comma-separated); all tables accessible if not set. | |
| DYNAMODB_DISABLED_TOOLS | Comma-separated blacklist of specific tools to disable. | |
| DYNAMODB_ENABLED_TOOLS | Comma-separated whitelist of specific tools to enable. | |
| DYNAMODB_ENABLED_TOOL_GROUPS | Comma-separated tool groups to enable (readonly, readwrite, admin). | |
| DYNAMODB_ENDPOINT | Custom endpoint for local DynamoDB or LocalStack. | |
| SKIP_HEALTH_CHECKS | Skip startup health checks. |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubDynamoDB MCP Server
An MCP server for AWS DynamoDB with fine-grained tool control. Provides comprehensive DynamoDB operations with configurable access levels.
Features
- Complete DynamoDB Operations: Tables, items, queries, scans, and batch operations
- Fine-grained Access Control: Enable/disable tools by group or individually
- Table-level Access Control: Restrict operations to specific tables
- AWS Credential Support: Works with explicit credentials or AWS credential chain
- Custom Endpoints: Support for local DynamoDB or LocalStack
Available Tools
Tool names are kept short since MCP clients typically prefix them with the server name (e.g., dynamodb:list_tables).
Readonly Tools (Group: readonly)
| Tool | Description |
|---|---|
list_tables |
List all DynamoDB tables with pagination |
describe_table |
Get table metadata, schema, and indexes |
get_item |
Retrieve single item by primary key |
query_items |
Query items using key conditions |
scan_table |
Scan table with optional filters |
batch_get_items |
Get multiple items across tables |
ReadWrite Tools (Group: readwrite)
| Tool | Description |
|---|---|
put_item |
Create or replace an item |
update_item |
Update specific attributes |
delete_item |
Delete item by primary key |
batch_write_items |
Batch put/delete operations |
Admin Tools (Group: admin)
| Tool | Description |
|---|---|
create_table |
Create a new table |
delete_table |
Delete a table and all data |
update_table |
Update table settings |
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
AWS_REGION |
Yes | AWS region (or AWS_DEFAULT_REGION) |
AWS_ACCESS_KEY_ID |
No | AWS access key (uses credential chain if not set) |
AWS_SECRET_ACCESS_KEY |
No | AWS secret key (uses credential chain if not set) |
DYNAMODB_ENDPOINT |
No | Custom endpoint (for local DynamoDB) |
DYNAMODB_ENABLED_TOOL_GROUPS |
No | Comma-separated groups: readonly, readwrite, admin |
DYNAMODB_ENABLED_TOOLS |
No | Whitelist specific tools |
DYNAMODB_DISABLED_TOOLS |
No | Blacklist specific tools |
DYNAMODB_ALLOWED_TABLES |
No | Restrict operations to specific tables (comma-separated) |
Tool Access Control
Control which tools are available using three methods:
1. Tool Groups (recommended for most cases):
# 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. Whitelist Specific Tools:
# Only allow specific operations
DYNAMODB_ENABLED_TOOLS="get_item,query_items,scan_table"
3. Blacklist Specific Tools:
# Enable all except dangerous operations
DYNAMODB_DISABLED_TOOLS="delete_table,create_table"
Priority: DYNAMODB_ENABLED_TOOLS > DYNAMODB_DISABLED_TOOLS > DYNAMODB_ENABLED_TOOL_GROUPS
Table-level Access Control
Restrict all operations to specific tables only:
# Only allow access to Users and Orders tables
DYNAMODB_ALLOWED_TABLES="Users,Orders"
When DYNAMODB_ALLOWED_TABLES is set:
list_tablesonly returns tables in the allowed list- Operations on non-allowed tables return an "Access denied" error
- Batch operations fail if any table in the request is not allowed
- Table names are matched case-sensitively (DynamoDB table names are case-sensitive)
- When using pagination with
list_tables, thelimitapplies before filtering
Note: If not set or set to an empty string, all tables are accessible (no filtering).
This is useful for:
- Multi-tenant environments where each client should only access their tables
- Development environments where you want to protect production tables
- Limiting the blast radius of AI agents to specific tables
Claude Desktop Configuration
Add to your 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"
}
}
}
}
Using Local DynamoDB
For development with local DynamoDB or 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"
}
}
}
}
Examples
Query Items
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 Table
Create a Users table with:
- Partition key: userId (String)
- Billing: Pay per request
Batch Operations
Get user profiles for IDs: user1, user2, user3 from the Users table
Development
Setup
cd experimental/dynamodb
npm run install-all
npm run build
Testing
# Unit tests
npm run test:run
# Integration tests
npm run test:integration
# Manual tests (requires AWS credentials)
npm run test:manual
Resources
| Resource | Description |
|---|---|
dynamodb://config |
Server configuration and tool group mappings |
License
MIT
DynamoDB MCP questions
How do I add DynamoDB MCP to Claude Code?
Run claude mcp add --env AWS_REGION=<AWS_REGION> --env AWS_ACCESS_KEY_ID=<YOUR_AWS_ACCESS_KEY_ID> --env AWS_SECRET_ACCESS_KEY=<YOUR_AWS_SECRET_ACCESS_KEY> dynamodb -- npx -y aws-dynamodb-mcp-server in your terminal. Add --scope user to make it available in every project.
How do I add DynamoDB MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does DynamoDB MCP provide?
It exposes 13 tools, including list_tables, describe_table, get_item, query_items, scan_table.
How do I give the DynamoDB MCP server read-only access?
Set the DYNAMODB_ENABLED_TOOL_GROUPS environment variable to "readonly". Add "readwrite" and "admin" only if you need write or table-management operations.
Can I restrict the DynamoDB MCP server to specific tables?
Yes, set DYNAMODB_ALLOWED_TABLES to a comma-separated list of table names. Operations on other tables then return an "Access denied" error.
Which tools does the DynamoDB MCP server provide?
It provides readonly tools like list_tables and query_items, readwrite tools like put_item and delete_item, and admin tools like create_table and delete_table.
What happens if I set both an enabled-tools whitelist and a disabled-tools blacklist?
The whitelist takes precedence, followed by the blacklist, then the enabled tool groups.