Labsco
MCP SERVER

AWS CLI

by runjivu

The AWS CLI as a single MCP tool, with read-only operations detected automatically and everything else flagged for approval.

Cloud Resources & Infrastructure as Code
Summary
One tool that reaches all of AWS, with the write path marked.

Exposing the CLI rather than a curated set of tools means there is nothing missing, which is the trade-off: any operation is reachable, so the read-only prefix check is doing real work in keeping accidental writes visible. The profile caveat is the practical gotcha — clients that are not shells will silently use the wrong account unless you say which one.

What it is

A standalone Rust server that reproduces the `use_aws` tool from the Amazon Q Developer CLI so any MCP client can have it. One tool takes a service, an operation and its parameters, formats them for the CLI, runs the command and returns the output — with parameter names converted to kebab-case and a human-readable description of what is about to run.

What you get
  • `use_aws` — call any AWS CLI operation, with `service_name`, `operation_name` and `region` required, and optional `parameters`, `profile_name` and `label`
  • An automatic read-only check based on the operation prefix: `get`, `describe`, `list`, `ls`, `search` and `batch_get` run without ceremony, and everything else is treated as a write requiring explicit user acceptance
  • A readable rendering of the command before it runs — service, operation, parameters, profile, region and label — so what is about to happen is visible rather than buried in a JSON blob
  • Output truncation with a maximum response size of 100KB, so a large listing does not swamp the context
Requirements

AWS CLI installed and configured, and AWS credentials available through the CLI, environment variables or an IAM role. Rust 1.70 or later and Cargo; install with `cargo install use_aws_mcp` and point the client at the `use_aws_mcp` command over stdio, with a generous timeout. Non-shell clients such as Cursor do not inherit your shell environment, so name the profile explicitly on each call — the README's advice is to tell the client which profile to use rather than relying on `AWS_DEFAULT_PROFILE` being present.

Setup effort

One command plus a key — cargo install use_aws_mcp, then supply credentials