A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/runjivu/use_aws_mcp below:

runjivu/use_aws_mcp: amazon-q-cli use_aws tool into independant mcp

🌟 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?

use_aws_mcp is 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.

The binary will be available at target/release/use_aws.

🔗 MCP Client Integration

To use this server with an MCP client, first install it using Cargo:

cargo install use_aws_mcp

Then configure your MCP client with:

{
  "mcpServers": {
    "use_aws_mcp": {
      "name": "use_aws_mcp",
      "command": "use_aws_mcp",
      "timeout": 300,
      "env": {},
      "disabled": false
    }
  }
}
⚠️ Important Caveat for Using MCP Client

With q cli, mcp clients are shell process, so credentials env like AWS_DEFAULT_PROFILE are automatically transfered to mcp server.

However, non shell mcp clients like cursor cannot take advantage of this, so it is best advised to require mcp clients directly to use specific aws profile.

📋 User Flow:

  1. Set mcp.json above
  2. Set API key, or login to specific profile using aws sso login
  3. Ask away mcp client aws related questions! and be sure to require it to use specific profile.
Running the MCP Server Locally
./target/release/use_aws_mcp

The server communicates via stdin/stdout using JSON-RPC protocol.

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"
    }
  }
}
List Lambda Functions with Profile
{
  "name": "use_aws",
  "arguments": {
    "service_name": "lambda",
    "operation_name": "list-functions",
    "region": "us-west-2",
    "profile_name": "development"
  }
}
Read-Only Operation Detection

The server automatically detects read-only operations based on the operation name prefix:

Large outputs are automatically truncated to prevent memory issues, with a maximum response size of 100KB.

🔨 Building for Development
RUST_LOG=use_aws=debug cargo run
# Run the description demo
cargo run --example description_demo

The project is structured as follows:

If 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:

You should see the installed Cargo version printed.

This project is distributed as a Rust crate. The following dependencies are managed automatically by Cargo:

test/dev dependencies:

You do not need to install these manually; Cargo will handle them during installation.

MIT, Apache-2.0

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

This server executes AWS CLI commands, which may have security implications:

  1. AWS CLI not found: Ensure AWS CLI is installed and in PATH
  2. Permission denied: Check AWS credentials and permissions
  3. Invalid region: Verify the region name is correct
  4. Parameter errors: Check parameter names and values

Run with debug logging to see detailed information:

RUST_LOG=use_aws=debug ./target/release/use_aws

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4