Gives Claude direct access to the AWS CLI through four tools: execute arbitrary AWS commands with shell-safe parsing, suggest commands from natural language, list regions, and check caller identity. Built with subprocess isolation instead of shell expansion, so it won't run piped commands or redirects. The call_aws tool can modify resources using whatever credentials your AWS profile provides, so you'll want to scope it to a limited IAM role and keep it on manual approval. Good fit when you need Claude to inspect infrastructure, fetch logs, or run read-heavy AWS operations without switching to the console. Logs go to stderr and a local file to keep stdout clean for MCP protocol messages.
A Python Model Context Protocol (MCP) server that lets MCP-compatible clients inspect and operate AWS through the AWS CLI. It supports command execution with validation, command suggestions, AWS region lookup, and caller identity checks.
This server can execute AWS CLI commands using the credentials available to the process. It blocks shell operators by using subprocess.run(..., shell=False) and flags destructive-looking commands, but it cannot replace IAM least privilege or human review. Use scoped AWS profiles or roles, prefer non-production accounts for testing, and keep destructive commands on manual approval in your MCP client.
PATHWhen published to PyPI, install or run the server like a standard Python MCP package:
uvx mdev-aws-mcp-server
For local development from source:
git clone https://github.com/musaddiq-dev/aws-cli-mcp-server.git
cd aws-cli-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e .
Before running this server, install the AWS CLI using the official AWS CLI install guide, then configure credentials using the official AWS CLI sign-in guide and AWS CLI configuration guide. AWS recommends short-term credentials where possible; avoid long-term IAM user keys unless your use case requires them.
Copy the example environment file and adjust values as needed.
cp .env.example .env
| Variable | Description | Default |
|---|---|---|
AWS_REGION | Default AWS region | us-east-1 |
AWS_PROFILE | AWS credentials profile | default |
AWS_MCP_WORKING_DIR | Working directory for file operations | /tmp/aws-mcp-work |
AWS_MCP_REQUIRE_CONFIRMATION | Emit warnings for destructive-looking operations | true |
AWS_MCP_LOG_LEVEL | Application log level | INFO |
mdev-aws-mcp-server
From a local checkout before PyPI publication, run:
python -m aws_mcp_server.server
For published installs, prefer uvx. MCP servers using stdio must write protocol messages only to stdout; this server writes logs to stderr and a local file under ~/.aws-mcp-server/logs.
Most MCP clients accept this mcpServers JSON shape:
{
"mcpServers": {
"aws": {
"command": "uvx",
"args": ["mdev-aws-mcp-server"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
For local development from this repository, use the installed console script path instead:
{
"mcpServers": {
"aws": {
"command": "/absolute/path/to/aws-cli-mcp-server/.venv/bin/mdev-aws-mcp-server",
"args": [],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
claude mcp add aws --env AWS_PROFILE=default --env AWS_REGION=us-east-1 -- uvx mdev-aws-mcp-server
VS Code uses the same command/args/env model in its MCP configuration:
{
"servers": {
"aws": {
"type": "stdio",
"command": "uvx",
"args": ["mdev-aws-mcp-server"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
| Tool | Purpose | Safety |
|---|---|---|
call_aws | Execute an AWS CLI command | Can modify AWS resources |
suggest_aws_commands | Suggest common AWS CLI commands | Read-only |
get_aws_regions | List AWS regions | Read-only |
get_caller_identity | Return current AWS identity | Read-only |
pip install -e .
pip install -e '.[dev]'
pytest
ruff check .
ruff format .
pyright
python -m py_compile src/aws_mcp_server/server.py src/aws_mcp_server/config.py src/aws_mcp_server/aws/executor.py
python -m pytest
Manual AWS check, if credentials are configured:
aws sts get-caller-identity
This server is published through the standard Python MCP distribution path:
mdev-aws-mcp-serverio.github.musaddiq-dev/aws-cli-mcp-serveruvxstdioThe mcp-name marker at the top of this README is required for MCP Registry ownership verification. Users should prefer uvx mdev-aws-mcp-server in local MCP client configurations.
.env, AWS credentials, profiles, access keys, or account-specific outputs.call_aws on explicit manual approval in your MCP client.MIT
AWS_REGIONdefault: us-east-1Default AWS region
AWS_PROFILEdefault: defaultAWS credentials profile
AWS_MCP_WORKING_DIRdefault: /tmp/aws-mcp-workWorking directory for file operations
AWS_MCP_REQUIRE_CONFIRMATIONdefault: trueEmit warnings for destructive-looking operations
AWS_MCP_LOG_LEVELdefault: INFOApplication log level
silenceper/mcp-k8s
azure/containerization-assist
io.github.evozim/aws-builder
reza-gholizade/k8s-mcp-server
flux159/mcp-server-kubernetes