aws-readonly-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
aws-readonly-mcp
A small MCP server that lets an AI agent browse DynamoDB and S3 without being able to change anything.
Guardrails
Read-only at the SDK layer. A botocore hook blocks every AWS operation that is not on an explicit allowlist (
ListTables,Query,GetObject, ...). Writes fail before the request leaves your machine, even if the credentials could write. Keep IAM read-only too.Capped results. Item lists and object reads are limited (default 50 items, 100 KB). Large results come back with a
next_tokenfor paging.Optional scoping. Limit which tables and buckets the agent can see.
No binary dumps. Binary S3 objects return metadata only.
Redaction. Sensitive values are scrubbed before the agent sees them (see below).
Audit log. Every call is recorded to an append-only JSONL file (see below).
Related MCP server: sqlgate-mcp
Tools
Service | Tools |
DynamoDB |
|
S3 |
|
Install and run
Once published: uvx aws-readonly-mcp. From source:
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
aws-readonly-mcp # speaks MCP over stdioIt uses the standard AWS credential chain (AWS_PROFILE, env vars, SSO, ...).
Configuration (environment variables)
Variable | Default | Meaning |
|
| Max items per DynamoDB page / S3 listing |
|
| Max bytes returned by |
| (all) | Comma-separated table allowlist |
| (all) | Comma-separated bucket allowlist |
| (none) | Extra attribute/key names to redact, e.g. |
| (none) | JSON list of extra regexes to scrub from values, e.g. |
|
| Set |
|
| Audit log path, or |
|
|
|
Redaction
Applied to every result, recursively:
Key names. Any key containing
password,passwd,secret,token,apikey,privatekey,authorizationorcredentialhas its whole value replaced with[REDACTED]. Names fromAWS_MCP_REDACT_ATTRIBUTESare matched exactly.Value patterns. AWS access key IDs, PEM private keys and JWTs are scrubbed from any string, plus your own regexes.
Text secrets.
DB_PASSWORD=hunter2or"api_key": "abc"inside a text file (for example in S3) has its value scrubbed.
Limits: redaction hides values; it can't recognise a secret with no telltale name or shape, and an agent can still probe a hidden attribute through filter expressions. For anything truly off limits, use the table and bucket allowlists.
Audit log
One JSON object per line, written to a file only you can read (mode 0600):
{"ts": "2026-10-17T22:10:03.512+00:00", "tool": "s3_read_object",
"args": {"bucket": "cfg", "key": "app.env"}, "status": "ok", "duration_ms": 41.3,
"summary": {"redactions": 2, "size": 71, "bytes_returned": 71, "truncated": false}}statusisok,errororblocked(guardrail refusal).Arguments are logged after redaction; results are never logged, only a size summary.
Fails closed by default. The server refuses to start if the log isn't writable, and if an entry can't be written mid-session the call returns an error instead of data. Set
AWS_MCP_AUDIT_FAIL_CLOSED=0for best-effort logging (warning on stderr, calls still succeed).Fail closed means a full disk or a broken path takes the tool offline. That is the point, but monitor it.
Releasing to PyPI
One-time setup, then every GitHub Release publishes automatically:
On pypi.org, add a pending publisher for project
aws-readonly-mcp: your GitHub user/repo, workflowpublish.yml, environmentpypi.In the GitHub repo, create an environment named
pypi(Settings > Environments).Bump
versioninpyproject.tomlandsrc/aws_readonly_mcp/__init__.py, then create a GitHub Release.
After that, anyone can run it with uvx aws-readonly-mcp.
Use with Claude Desktop
{
"mcpServers": {
"aws-readonly": {
"command": "/absolute/path/to/.venv/bin/aws-readonly-mcp",
"env": {
"AWS_PROFILE": "my-readonly-profile",
"AWS_MCP_ALLOWED_BUCKETS": "my-data-bucket"
}
}
}
}Tests
pytestTests run against moto, so no AWS account is needed.
Ideas for next versions
Step Functions and CloudWatch Logs tools, a --profile flag, and log rotation.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Discover Frontier inference capabilities and read sanitized usage through read-only tools.
Read-only finance and operations controls for AI agents with evidence and safe next actions.
Amazon Ads, Seller Central, Vendor Central and AMC data for AI agents. Read-only by default.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to inspect schemas, walk Delta table history, run read-only DuckDB queries, and check data-quality and job-run status safely.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query Postgres, BigQuery and DuckDB read-only through policy-checked SQL, with AST-based guards that refuse writes and dangerous functions, column masking on the way out, and an audit log of every query. Also exposes schema browsing and query-planning tools so agents can see allowed tables, columns and costs before running anything.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to securely discover database schemas and execute read-only SQL queries through guardrailed tools that block mutations and clamp result sizes.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to safely explore and query MySQL, MariaDB, PostgreSQL, SQLite and StarRocks databases through read-only tools for schema listing, table description, schema search, row sampling, query execution, and plan explanation. Enforces least-privilege accounts, engine-level read-only sessions with timeouts, parsed SQL guardrails, and column masking so runaway or unsafe queries are refused.8MIT