
AWS S3 Tables MCP Server: Setup for Claude, Cursor and Other Apps
Lets your AI assistant browse and query Amazon S3 Tables, and load CSV or Parquet files into them if you allow writes.
This AWS Labs server runs on your computer and uses your AWS credentials. It lists your table buckets, namespaces and tables and runs read-only SQL on them.
It starts in read-only mode. Adding the --allow-write flag turns on tools that create tables and append data. Even then, the source has no tool that deletes a table, bucket or namespace.
Good for
- Data teams that keep Iceberg tables in S3 Tables and want to query them in plain words
- Analysts who want to turn a CSV in S3 into a queryable table
- Teams that want a read-only view of their S3 Tables by default
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.
Client does not support this transport.
Client does not support this transport.
Install s3-tables-mcp-server
Claude Code
- 1
Copy this prompt.
Add the s3-tables-mcp-server server to Claude Code. Run this command: claude mcp add s3-tables -- uvx awslabs.s3-tables-mcp-server 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 uv (Python).
Built from the package data we hold. Not yet tested by us.
Tools
Lists your S3 table buckets
Returns the table buckets in your AWS account for a region.
Try: “List my S3 table buckets.”
Network ·
list_table_bucketsLists the namespaces in your table buckets
Returns the namespaces, which group tables inside a table bucket.
Try: “What namespaces do I have in S3 Tables?”
Network ·
list_namespacesLists your S3 tables
Returns the tables in your table buckets.
Try: “List all tables in the sales namespace.”
Network ·
list_tablesRuns a read-only SQL query on a table
Runs a SQL query against S3 Tables through the Iceberg catalog. You give the table bucket ARN, region, namespace and query. It reads only.
Try: “Find the top 3 customers by spending in the transactions table.”
Network ·
query_databaseShows where a table's metadata file lives
Returns the S3 location of the table's metadata, which holds its schema and settings.
Try: “Show the schema location of the customer_data table.”
Network ·
get_table_metadata_locationShows a table's maintenance settings
Returns the maintenance configuration of one table, such as compaction and cleanup settings.
Try: “What maintenance is configured for the customers table?”
Network ·
get_table_maintenance_configShows the status of a table's maintenance jobs
Returns whether the maintenance jobs on a table have run and how they ended.
Try: “Did the last maintenance job on customers succeed?”
Network ·
get_maintenance_job_statusShows the metadata table setup of a regular S3 bucket
Returns the metadata table configuration of an ordinary S3 bucket, which feeds the S3 Metadata tables.
Try: “Query all available metadata about test-bucket.”
Network ·
get_bucket_metadata_configCreates a table bucket
Creates a new S3 table bucket. Only works when the server is started with --allow-write.
Try: “Create a table bucket named hello-world.”
Write ·
create_table_bucketCreates a namespace in a table bucket
Creates a namespace to group tables. Only works with --allow-write.
Try: “Create a namespace called retail_data in hello-world.”
Write ·
create_namespaceCreates a table in a namespace
Creates an Iceberg table with the schema you give. Only works with --allow-write.
Try: “Create a customers table with id, name and signup_date.”
Write ·
create_tableLoads a CSV file from S3 into a table
Reads a CSV file in S3 and imports it into an S3 table. Only works with --allow-write.
Try: “Create an S3 table from s3://my-bucket/data.csv.”
Write ·
import_csv_to_tableLoads a Parquet file from S3 into a table
Reads a Parquet file in S3 and imports it into an existing table. Only works with --allow-write.
Try: “Import s3://my-bucket/events.parquet into the events table.”
Write ·
import_parquet_to_tableAdds rows to a table
Appends the rows you give to an existing Iceberg table. It adds rows and does not update or delete. Only works with --allow-write.
Try: “Append these 5 rows to the orders table.”
Write ·
append_rows_to_tableRenames a table or moves it to another namespace
Renames a table, or moves it to a different namespace in the same bucket. Only works with --allow-write.
Try: “Rename the table old_orders to orders.”
Write ·
rename_tablePoints a table at a new metadata file
Updates the location of the table's metadata file. Only works with --allow-write.
Try: “Update the metadata location of the orders table to the new file.”
Write ·
update_table_metadata_location
Read from the source code
Permissions
low risk · 2 things to watch
Low risk
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
--allow-write lets it create tables and add rows
It is off by default. Turn it on only with an IAM policy limited to the buckets you mean, and keep a backup of important data. github.com
Table contents go to your AI provider
Rows returned by a query are sent to the model. Query only data you can share. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Read-only is the default. Add --allow-write to the server arguments to enable the tools that create or change resources. |
|---|---|
| Talks to | Amazon S3 Tables in your AWS region |
| Sign-in and keys | Uses your AWS credentials from a named AWS profile (AWS_PROFILE) and AWS_REGION, or environment variables. |
| Scopes |
|
Questions
Can it change or delete my tables?
By default it cannot change anything. With --allow-write it can create buckets, namespaces and tables, load files, append rows, rename tables and change a table's metadata location. It has no tool that deletes tables, buckets or namespaces.
How do I run it read-only?
Do nothing. Read-only is the default. Write tools return a permission error until you add the --allow-write flag.
Can it update or delete rows with SQL?
No. SQL queries are read-only, and the only write is appending new rows.
Can it turn a CSV file into a table?
Yes, with --allow-write. Ask it to create a table from a CSV in S3, and it also loads Parquet files into existing tables.
Which AWS permissions does it need?
The s3tables read actions for the buckets you query. Add the matching create and write actions only if you use --allow-write. The README advises least privilege and separate profiles per environment.
Does it run in the cloud or on my computer?
On your computer, with your own AWS credentials. It calls S3 Tables in your AWS region.
Information
updated Nov 2, 2026
- Publisher
- Amazon Web Services (official)
- Package
awslabs.s3-tables-mcp-server- Registry
- PyPI
- Transport
- stdio
- License
- Apache-2.0
- Last commit
- Oct 30, 2026
- Open issues
- 143
- Listed in
- Docker MCP Catalog
Other AWS MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- AWS S3 Tables MCP Server README · github.com
- S3 Tables server source · github.com