Dynamodb Mcp Remote — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Dynamodb Mcp Remote (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol server for managing Amazon DynamoDB resources. This server provides tools for table management, capacity management, and data operations.
Vignesh Kumar([email protected])
📋 Quick Reference: See QUICK_REFERENCE.md for common commands and configurations.
# Install dependencies
npm install
# Build the project
npm run build
# Set AWS credentials
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="us-east-1"
# Start the server (binds to 0.0.0.0:3000 by default)
npm start
# Test the health endpoint
curl http://localhost:3000/health# Run with custom host and port
MCP_HOST=127.0.0.1 MCP_PORT=8080 npm startThis MCP server runs exclusively in remote mode using Server-Sent Events (SSE) over HTTP for client connections.
Features:
Environment Variables:
MCP_HOST: Host to bind to (default: 0.0.0.0)MCP_PORT: Port to listen on (default: 3000)📖 For detailed configuration, security best practices, and deployment guides, see [REMOTE_MODE.md](REMOTE_MODE.md)
🚀 For Smithery usage and deployment, see [SMITHERY_USAGE.md](SMITHERY_USAGE.md)
Note: Delete operations are not supported to prevent accidental data loss.
npm installexport AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="your_region"npm run buildLocal Mode (stdio):
npm startRemote Mode (SSE over HTTP):
npm run start:remoteOr with custom host and port:
MCP_TRANSPORT_MODE=sse MCP_HOST=0.0.0.0 MCP_PORT=8080 npm startCreates a new DynamoDB table with specified configuration.
Parameters:
tableName: Name of the table to createpartitionKey: Name of the partition keypartitionKeyType: Type of partition key (S=String, N=Number, B=Binary)sortKey: (Optional) Name of the sort keysortKeyType: (Optional) Type of sort keyreadCapacity: Provisioned read capacity unitswriteCapacity: Provisioned write capacity unitsExample:
{
"tableName": "Users",
"partitionKey": "userId",
"partitionKeyType": "S",
"readCapacity": 5,
"writeCapacity": 5
}Lists all DynamoDB tables in the account.
Parameters:
limit: (Optional) Maximum number of tables to returnexclusiveStartTableName: (Optional) Name of the table to start from for paginationExample:
{
"limit": 10
}Gets detailed information about a DynamoDB table.
Parameters:
tableName: Name of the table to describeExample:
{
"tableName": "Users"
}Creates a global secondary index on a table.
Parameters:
tableName: Name of the tableindexName: Name of the new indexpartitionKey: Partition key for the indexpartitionKeyType: Type of partition keysortKey: (Optional) Sort key for the indexsortKeyType: (Optional) Type of sort keyprojectionType: Type of projection (ALL, KEYS_ONLY, INCLUDE)nonKeyAttributes: (Optional) Non-key attributes to projectreadCapacity: Provisioned read capacity unitswriteCapacity: Provisioned write capacity unitsExample:
{
"tableName": "Users",
"indexName": "EmailIndex",
"partitionKey": "email",
"partitionKeyType": "S",
"projectionType": "ALL",
"readCapacity": 5,
"writeCapacity": 5
}Updates the provisioned capacity of a global secondary index.
Parameters:
tableName: Name of the tableindexName: Name of the index to updatereadCapacity: New read capacity unitswriteCapacity: New write capacity unitsExample:
{
"tableName": "Users",
"indexName": "EmailIndex",
"readCapacity": 10,
"writeCapacity": 10
}Creates a local secondary index on a table (must be done during table creation).
Parameters:
tableName: Name of the tableindexName: Name of the new indexpartitionKey: Partition key for the tablepartitionKeyType: Type of partition keysortKey: Sort key for the indexsortKeyType: Type of sort keyprojectionType: Type of projection (ALL, KEYS_ONLY, INCLUDE)nonKeyAttributes: (Optional) Non-key attributes to projectreadCapacity: (Optional) Provisioned read capacity unitswriteCapacity: (Optional) Provisioned write capacity unitsExample:
{
"tableName": "Users",
"indexName": "CreatedAtIndex",
"partitionKey": "userId",
"partitionKeyType": "S",
"sortKey": "createdAt",
"sortKeyType": "N",
"projectionType": "ALL"
}Updates the provisioned capacity of a table.
Parameters:
tableName: Name of the tablereadCapacity: New read capacity unitswriteCapacity: New write capacity unitsExample:
{
"tableName": "Users",
"readCapacity": 10,
"writeCapacity": 10
}Inserts or replaces an item in a table.
Parameters:
tableName: Name of the tableitem: Item to put into the table (as JSON object)Example:
{
"tableName": "Users",
"item": {
"userId": "123",
"name": "John Doe",
"email": "[email protected]"
}
}Retrieves an item from a table by its primary key.
Parameters:
tableName: Name of the tablekey: Primary key of the item to retrieveExample:
{
"tableName": "Users",
"key": {
"userId": "123"
}
}Updates specific attributes of an item in a table.
Parameters:
tableName: Name of the tablekey: Primary key of the item to updateupdateExpression: Update expressionexpressionAttributeNames: Attribute name mappingsexpressionAttributeValues: Values for the update expressionconditionExpression: (Optional) Condition for updatereturnValues: (Optional) What values to returnExample:
{
"tableName": "Users",
"key": {
"userId": "123"
},
"updateExpression": "SET #n = :name",
"expressionAttributeNames": {
"#n": "name"
},
"expressionAttributeValues": {
":name": "Jane Doe"
}
}Queries a table using key conditions and optional filters.
Parameters:
tableName: Name of the tablekeyConditionExpression: Key condition expressionexpressionAttributeValues: Values for the key condition expressionexpressionAttributeNames: (Optional) Attribute name mappingsfilterExpression: (Optional) Filter expression for resultslimit: (Optional) Maximum number of items to returnExample:
{
"tableName": "Users",
"keyConditionExpression": "userId = :id",
"expressionAttributeValues": {
":id": "123"
}
}Scans an entire table with optional filters.
Parameters:
tableName: Name of the tablefilterExpression: (Optional) Filter expressionexpressionAttributeValues: (Optional) Values for the filter expressionexpressionAttributeNames: (Optional) Attribute name mappingslimit: (Optional) Maximum number of items to returnExample:
{
"tableName": "Users",
"filterExpression": "age > :minAge",
"expressionAttributeValues": {
":minAge": 21
}
}Here are some example questions you can ask Claude when using this DynamoDB MCP server:
First, start the server on your host:
npm startThen add this to your claude_desktop_config.json:
{
"mcpServers": {
"dynamodb": {
"url": "http://your-server-host:3000/sse"
}
}
}For local testing, use http://localhost:3000/sse.
Security Note: Ensure proper network security measures are in place:
Build the image:
docker build -t mcp/dynamodb-mcp-server -f Dockerfile .Run the server:
docker run -d --rm \
-e AWS_ACCESS_KEY_ID="your_access_key" \
-e AWS_SECRET_ACCESS_KEY="your_secret_key" \
-e AWS_REGION="your_region" \
-p 3000:3000 \
--name dynamodb-mcp \
mcp/dynamodb-mcp-serverWith custom port:
docker run -d --rm \
-e MCP_PORT=8080 \
-e AWS_ACCESS_KEY_ID="your_access_key" \
-e AWS_SECRET_ACCESS_KEY="your_secret_key" \
-e AWS_REGION="your_region" \
-p 8080:8080 \
--name dynamodb-mcp \
mcp/dynamodb-mcp-serverTo run in development mode with auto-reloading:
npm run watchLinux/Mac:
chmod +x test-remote.sh
./test-remote.shWindows (PowerShell):
.\test-remote.ps1Or manually test the endpoints:
# Start server
npm start
# In another terminal, test the health endpoint
curl http://localhost:3000/health
# Test SSE connection
curl -N -H "Accept: text/event-stream" http://localhost:3000/sseThis MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.