Skip to content

DynamoDB — Tables & Items

DynamoDB is Floci’s most-used database service. This guide covers the full lifecycle: table creation, item operations, querying, scanning, and the optional DynamoDB Admin web UI.

Go to DynamoDB in the sidebar → click Create Table.

FieldRequiredNotes
Table nameYesUnique within the region
Partition keyYesString, Number, or Binary
Sort keyNoEnables range queries
Billing modeYesPAY_PER_REQUEST (default) or PROVISIONED

For a simple user table:

  • Table name: users
  • Partition key: userId (String)

For an event log with time-ordered access:

  • Table name: events
  • Partition key: entityId (String)
  • Sort key: timestamp (Number)

Select a table → click Put Item. Items are entered as JSON:

{
"userId": "usr-001",
"email": "alice@example.com",
"role": "admin",
"createdAt": 1716400000
}

All attribute names and types are inferred from the JSON.

Get Item requires the exact partition key (and sort key if defined):

{ "userId": "usr-001" }

Querying returns items that share a partition key, optionally filtered by sort key range. In the Query panel:

  1. Enter the partition key value (e.g. entityId = "order-42")
  2. Optionally add a sort key condition (e.g. timestamp BETWEEN 1716000000 AND 1716999999)
  3. Add a filter expression to narrow results beyond the key conditions

Filter expressions support =, <>, <, >, begins_with, contains, and attribute_exists.

Scan reads every item in the table. Use it for:

  • Small tables where a full read is acceptable
  • Exploratory queries when you don’t know the key
  • Applying complex filter expressions across all items

Scans are paginated. Click Next page to load more.

The MCP seed_mock_data tool generates realistic fake items via Faker:

You: Seed 50 users into the "users" table
Claude: [calls seed_mock_data(target="dynamodb", target_name="users")]

You can also pass a custom_schema to control the shape:

{
"userId": "uuid",
"email": "email",
"role": "random_element(['admin','viewer','editor'])",
"score": "random_int(0,100)"
}

For a richer browsing experience, deploy the DynamoDB Admin recipe from the Marketplace:

  1. Go to Marketplace → find DynamoDB Admin → click Deploy
  2. Open http://localhost:8001

DynamoDB Admin gives you a table browser, item editor, and raw scan view — useful when working with complex nested documents.

import boto3
dynamo = boto3.resource(
"dynamodb",
endpoint_url="http://localhost:4566",
region_name="us-east-1",
aws_access_key_id="test",
aws_secret_access_key="test",
)
table = dynamo.Table("users")
# Put
table.put_item(Item={"userId": "usr-001", "email": "alice@example.com"})
# Get
response = table.get_item(Key={"userId": "usr-001"})
print(response["Item"])
# Query
from boto3.dynamodb.conditions import Key
response = table.query(
KeyConditionExpression=Key("userId").eq("usr-001")
)
import { DynamoDBClient, PutItemCommand, GetItemCommand } from "@aws-sdk/client-dynamodb";
import { marshall, unmarshall } from "@aws-sdk/util-dynamodb";
const client = new DynamoDBClient({
endpoint: "http://localhost:4566",
region: "us-east-1",
credentials: { accessKeyId: "test", secretAccessKey: "test" },
});
// Put
await client.send(new PutItemCommand({
TableName: "users",
Item: marshall({ userId: "usr-001", email: "alice@example.com" }),
}));
// Get
const { Item } = await client.send(new GetItemCommand({
TableName: "users",
Key: marshall({ userId: "usr-001" }),
}));
console.log(unmarshall(Item!));
ToolWhat it does
list_dynamodb_tablesLists all tables
create_dynamodb_tableCreates a table
delete_dynamodb_tableDeletes a table
put_dynamodb_itemPuts an item
get_dynamodb_itemGets an item by key
query_dynamodbQueries by key condition
scan_dynamodbFull table scan with optional filter
delete_dynamodb_itemDeletes an item