| Crates.io | use_aws_mcp |
| lib.rs | use_aws_mcp |
| version | 0.1.0 |
| created_at | 2025-06-27 05:30:04.418938+00 |
| updated_at | 2025-06-27 05:30:04.418938+00 |
| description | MCP server for AWS CLI operations |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1728196 |
| size | 975,973 |
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.
cargo build --release
The binary will be available at target/release/use_aws.
./target/release/use_aws_mcp
The server communicates via stdin/stdout using JSON-RPC protocol.
To use this server with an MCP client, first install it using Cargo:
cargo install use_aws
Then configure your MCP client with:
{
"name": "use_aws_mcp",
"command": "use_aws_mcp",
"env": {},
"timeout": 30000
}
The server provides human-readable descriptions of AWS CLI commands. You can see this in action by running the example:
cargo run --example description_demo
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)
The server provides a single tool called use_aws with the following schema:
{
"name": "use_aws",
"description": "Execute AWS CLI commands with proper parameter handling and safety checks",
"inputSchema": {
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "AWS service name (e.g., s3, ec2, lambda)"
},
"operation_name": {
"type": "string",
"description": "AWS CLI operation name (e.g., list-buckets, describe-instances)"
},
"parameters": {
"type": "object",
"description": "Optional parameters for the AWS CLI command",
"additionalProperties": true
},
"region": {
"type": "string",
"description": "AWS region (e.g., us-west-2, eu-west-1)"
},
"profile_name": {
"type": "string",
"description": "Optional AWS profile name"
},
"label": {
"type": "string",
"description": "Optional label for the operation"
}
},
"required": ["service_name", "operation_name", "region"]
}
}
{
"name": "use_aws",
"arguments": {
"service_name": "s3",
"operation_name": "ls",
"region": "us-west-2"
}
}
{
"name": "use_aws",
"arguments": {
"service_name": "ec2",
"operation_name": "describe-instances",
"region": "us-west-2",
"parameters": {
"instance-ids": "i-1234567890abcdef0"
}
}
}
{
"name": "use_aws",
"arguments": {
"service_name": "lambda",
"operation_name": "list-functions",
"region": "us-west-2",
"profile_name": "development"
}
}
The server automatically detects read-only operations based on the operation name prefix:
get, describe, list, ls, search, batch_getLarge outputs are automatically truncated to prevent memory issues, with a maximum response size of 100KB.
cargo test
cargo build
RUST_LOG=use_aws=debug cargo run
# Run the description demo
cargo run --example description_demo
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 descriptionsIf you do not have Cargo (the Rust package manager) installed, you can get it by installing Rust using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Follow the on-screen instructions to complete the installation. After installation, restart your terminal and ensure Cargo is available by running:
cargo --version
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-subscribercrosstermtest/dev dependencies:
tokio-testYou do not need to install these manually; Cargo will handle them during installation.
MIT, Apache-2.0
This server executes AWS CLI commands, which may have security implications:
Run with debug logging to see detailed information:
RUST_LOG=use_aws=debug ./target/release/use_aws