use_aws MCP Server
amazon-q-cli is great, and it is great because it has use_aws MCP tool to interact with aws API. Wouldn't it be greater if this use_aws was portable, and use it across different AI tools, whichever you're currently using?
A standalone Model Context Protocol (MCP) server that provides AWS CLI functionality through a standardized interface.
This server replicates the functionality of the use_aws tool from the Amazon Q Developer CLI.
Demo
Features
- AWS CLI Integration: Execute AWS CLI commands with proper parameter handling
- Safety Checks: Automatic detection of read-only vs. write operations
- User Agent Management: Proper AWS CLI user agent setup for tracking
- Parameter Formatting: Automatic conversion of parameters to kebab-case for CLI compatibility
- Error Handling: Comprehensive error handling and output formatting
- MCP Protocol: Full Model Context Protocol compliance
- Human-Readable Descriptions: Rich command descriptions using terminal formatting
Installation
Prerequisites
- Rust (1.70 or later), Cargo
- AWS CLI installed and configured
- AWS credentials configured (via AWS CLI, environment variables, or IAM roles)
Building
The binary will be available at target/release/use_aws.
Usage
Running the MCP Server
The server communicates via stdin/stdout using JSON-RPC protocol.
MCP Client Integration
To use this server with an MCP client, first install it using Cargo:
Then configure your MCP client with:
Command Descriptions
The server provides human-readable descriptions of AWS CLI commands. You can see this in action by running the example:
This will output something like:
Running aws cli command:
Service name: s3
Operation name: list-buckets
Parameters:
- max-items: "10"
- query: "Buckets[].Name"
Profile name: development
Region: us-west-2
Label: List S3 buckets with query
✅ This command is read-only (no acceptance required)
Tool Specification
The server provides a single tool called use_aws with the following schema:
Examples
List S3 Buckets
Describe EC2 Instances
List Lambda Functions with Profile
Safety Features
Read-Only Operation Detection
The server automatically detects read-only operations based on the operation name prefix:
- Read-only prefixes:
get,describe,list,ls,search,batch_get - Write operations: All other operations require explicit user acceptance
Output Truncation
Large outputs are automatically truncated to prevent memory issues, with a maximum response size of 100KB.
Development
Running Tests
Building for Development
Running with Logging
RUST_LOG=use_aws=debug
Examples
# Run the description demo
Architecture
The project is structured as follows:
src/lib.rs: Core library with types and constantssrc/error.rs: Error handling typessrc/use_aws.rs: Core AWS CLI functionality (replicated from original)src/mcp_server.rs: MCP server implementationsrc/main.rs: Binary entry pointexamples/description_demo.rs: Example demonstrating command descriptions
Dependencies
If you do not have Cargo (the Rust package manager) installed, you can get it by installing Rust using rustup:
|
Follow the on-screen instructions to complete the installation. After installation, restart your terminal and ensure Cargo is available by running:
You should see the installed Cargo version printed.
This project is distributed as a Rust crate. The following dependencies are managed automatically by Cargo:
tokioserdeserde_jsoneyrebstrconvert_caseasync-traitthiserrortracingtracing-subscribercrossterm
test/dev dependencies:
tokio-test
You do not need to install these manually; Cargo will handle them during installation.
License
MIT, Apache-2.0
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
Security
This server executes AWS CLI commands, which may have security implications:
- Ensure proper AWS credentials and permissions
- Review all commands before execution
- Use read-only operations when possible
- Consider running in a restricted environment
Troubleshooting
Common Issues
- AWS CLI not found: Ensure AWS CLI is installed and in PATH
- Permission denied: Check AWS credentials and permissions
- Invalid region: Verify the region name is correct
- Parameter errors: Check parameter names and values
Debug Mode
Run with debug logging to see detailed information:
RUST_LOG=use_aws=debug