
Dynoxide MCP Server: A Local DynamoDB for Coding Agents
Gives Claude and Cursor a local DynamoDB they can create tables in, query and snapshot while you build.
Dynoxide is a DynamoDB emulator written in Rust, and this is its built-in server for coding agents. It runs on your computer against a local SQLite file or memory, not against AWS. The agent can create and delete tables, write items, run queries and take snapshots. Use the read-only option for data you care about.
Good for
- Developers testing DynamoDB code without an AWS account
- Teams who want an agent to explore a copy of exported data
- Single-table design users who load a OneTable data model for context
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Local server; ChatGPT cannot reach it.
Local server; n8n cannot reach it.
Install Dynoxide MCP
Claude Code
- 1
Copy this prompt.
Add the Dynoxide MCP server to Claude Code. Run this command: claude mcp add dynoxide -- npx -y dynoxide mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
The server is started with the mcp subcommand. Add --db-path data.db to keep data between runs, or --read-only to block writes.
Built from the package data we hold. Not yet tested by us.
Tools
Lists the tables in the database
Returns the names of all tables in the local DynamoDB emulator database.
Try: “List all tables.”
Read ·
list_tablesShows a table's schema and size
Returns key schema, indexes, item count, size, stream and TTL settings in a flat format meant for assistants.
Try: “Describe the Orders table.”
Read ·
describe_tableCreates a table
Creates a table with a key schema and optional indexes, vector indexes, billing mode and tags.
Try: “Create a Users table keyed by pk and sk.”
Write ·
create_tableChanges a table's settings
Adds or removes indexes, changes stream settings, billing mode, table class or deletion protection.
Try: “Add a GSI on email to Users.”
Delete ·
update_tableDeletes a table and its data
Removes a table with all its data. The server makes an automatic snapshot first so you can restore it.
Try: “Delete the Scratch table.”
Delete ·
delete_tableReads one item by key
Retrieves a single item by its primary key.
Try: “Get user#1 from Users.”
Read ·
get_itemInserts or replaces an item
Writes an item, replacing any item with the same key. Conditional writes are supported.
Try: “Put an item for user#2 in Users.”
Write ·
put_itemEdits an item's attributes
Applies an update expression with SET, REMOVE, ADD or DELETE to one item. Condition checks are supported.
Try: “Increment the login count for user#1.”
Delete ·
update_itemDeletes one item
Deletes a single item by key, unless the table has deletion protection.
Try: “Delete user#2 from Users.”
Delete ·
delete_itemReads up to 100 items
Fetches items from one or more tables in a single call.
Try: “Get these 20 users by key.”
Read ·
batch_get_itemWrites or deletes up to 25 items
Runs up to 25 put or delete operations across tables in one call.
Try: “Delete these 10 test items.”
Delete ·
batch_write_itemLoads up to 10,000 items fast
Bulk-inserts items into a table, overwriting items with the same key.
Try: “Load this seed data into Users.”
Write ·
bulk_put_itemsFinds items by key condition
Queries a table or index with a key condition, filters, projections and paging.
Try: “Find all orders for customer#5 after January.”
Read ·
queryReads through a whole table
Scans a table or index with an optional filter. The tool description tells assistants to prefer query when they know the partition key.
Try: “Scan Users for accounts with no email.”
Read ·
scanFinds nearest items in a vector index
Runs an exact nearest-neighbour search over a vector index and returns the true top results.
Try: “Find the 5 documents closest to this embedding.”
Read ·
search_vectorsReads up to 100 items as one snapshot
Gets several items atomically so they are consistent with each other.
Try: “Read these three records together.”
Read ·
transact_get_itemsWrites up to 100 changes all-or-nothing
Runs put, update, delete and condition-check actions atomically. All succeed or all fail.
Try: “Move 10 credits from user#1 to user#2 atomically.”
Delete ·
transact_write_itemsRuns a PartiQL statement
Executes one SELECT, INSERT, UPDATE or DELETE statement written in PartiQL.
Try: “SELECT * FROM Users WHERE pk = 'user#1'.”
Delete ·
execute_partiqlRuns several PartiQL statements
Executes a batch of PartiQL statements, which may be reads or writes.
Try: “Run these three PartiQL inserts.”
Delete ·
batch_execute_partiqlRuns PartiQL statements all-or-nothing
Executes up to 100 PartiQL statements as one transaction, rolled back if any fails.
Try: “Run these PartiQL updates as a transaction.”
Delete ·
execute_transaction_partiqlTurns TTL on or off for a table
Enables or disables Time to Live and sets the attribute holding the expiry time.
Try: “Enable TTL on Sessions using the expires_at attribute.”
Write ·
update_time_to_liveShows a table's TTL setting
Returns the TTL configuration for a table.
Try: “Is TTL on for Sessions?”
Read ·
describe_time_to_liveDeletes expired items now
Runs a TTL sweep that deletes expired items from every TTL-enabled table and returns how many were deleted.
Try: “Run a TTL sweep.”
Delete ·
sweep_ttlAdds tags to a table
Adds tags to a table.
Try: “Tag Users with env=dev.”
Write ·
tag_resourceRemoves tags from a table
Removes tags from a table.
Try: “Remove the env tag from Users.”
Delete ·
untag_resourceLists a table's tags
Returns the tags on a table.
Try: “What tags does Users have?”
Read ·
list_tags_of_resourceLists DynamoDB streams
Lists streams, optionally for one table.
Try: “List streams for Orders.”
Read ·
list_streamsShows a stream and its shards
Returns details about a stream including its shards.
Try: “Describe the Orders stream.”
Read ·
describe_streamOpens a stream for reading
Returns a shard iterator, starting from the oldest record or only new ones.
Try: “Get a shard iterator from the start of the stream.”
Read ·
get_shard_iteratorReads stream records
Reads change records using a shard iterator.
Try: “Read the latest records from the Orders stream.”
Read ·
get_recordsSaves the database state
Saves a copy of the current database to restore later. At most 20 snapshots are kept.
Try: “Take a snapshot called before-migration.”
Write ·
create_snapshotRolls the database back
Replaces all current data with the contents of a snapshot.
Try: “Restore the before-migration snapshot.”
Delete ·
restore_snapshotLists saved snapshots
Shows snapshot names, sizes and creation times, newest first.
Try: “List my snapshots.”
Read ·
list_snapshotsDeletes a snapshot
Removes a saved snapshot by name.
Try: “Delete the old-test snapshot.”
Delete ·
delete_snapshotShows database-level info
Returns storage mode, path, size, table count and, for imported data, any anonymisation notices.
Try: “Give me an overview of the database.”
Read ·
get_database_info
Read from the source code
Permissions
high risk · 3 things to watch · 3 advisories
High risk
The agent can create, change and delete tables and items in the local database, plus restore snapshots over current data. Point it at a copy and start it with the read-only flag if the data matters.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete tables, items and snapshots
delete_table, delete_item, restore_snapshot, sweep_ttl and the PartiQL tools remove or overwrite data in the database file. delete_table takes an automatic snapshot first, but point it at a copy of your data, or use --read-only. github.com
The HTTP mode needs care
The default is stdio. If you turn on the HTTP mode, keep the default 127.0.0.1 bind and a token. Non-loopback binds require an explicit token, and --no-auth works on loopback only. github.com
Vector search results can differ from AWS
The docs say four things about vector search will never match AWS, so a test can pass here and fail there. github.com
Security advisories
3 known advisories, all fixed in a newer version.
- A request with certain non-ASCII characters in an expression stops the Dynoxide server. npm package affected: >= 0.9.10, < 1.3.0; fixed in 1.3.0.high · Fixed in 1.3.0 (npm); 3.0.0 (dynoxide-rs crate) · GHSA-gwhp-7jch-7xj6
- DNS rebinding and cross-origin CSRF in the MCP HTTP transport. npm package affected: >= 0.9.3, < 0.9.13; fixed in 0.9.13.high · Fixed in 0.9.13 (npm and crate) · GHSA-fvh2-gm75-j4j7
- --help shows the MCP auth token when DYNOXIDE_MCP_AUTH_TOKEN is set. npm package affected: >= 0.10.0, < 1.3.0; fixed in 1.3.0.low · Fixed in 1.3.0 (npm); 3.0.0 (dynoxide-rs crate) · GHSA-3rv6-mrj3-vf9j
Technical details
| Turning on read-only | Start the server with the --read-only flag, which rejects every write tool. The read tools, including the query and scan tools, stay available. |
|---|---|
| Talks to | None needed for the default stdio mode |
| Sign-in and keys | No sign-in for the default stdio mode. The optional HTTP mode requires a bearer token, which Dynoxide generates and saves in a per-user config file. |
Questions
Is Dynoxide official?
It is the project's own server, made by the nubo-db team that builds Dynoxide. It is not made by Amazon, so it is not an official AWS DynamoDB server.
Does it connect to my AWS account?
No account or AWS key is involved in its setup. It is an emulator that stores data in a local SQLite file or in memory.
Can I run it read-only?
Yes. Start it with the --read-only flag and every write tool is rejected. Reads, queries and scans still work.
Are there security advisories?
Yes, three on the npm package, all fixed in the current release. They cover a crash from certain non-ASCII characters, the auth token appearing in --help output, and DNS rebinding in the HTTP mode. See the advisory details on this page.
Which clients does it work in?
Clients that can start a local program, such as Claude Code and Cursor. It also has an HTTP mode that uses a bearer token. See the install box for each app.
Can it work on a copy of real data?
Yes. The import command can load a DynamoDB export into memory and serve it over MCP, optionally anonymising it with rules. The data disappears when the process ends.
What license is it?
The npm package is licensed MIT or Apache-2.0.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
dynoxide- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 1.5.0
- License
- MIT OR Apache-2.0
- Last commit
- Oct 25, 2026
- Open issues
- 24
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 5Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- www.npmjs.com · npmjs.com