Skip to main content
Glama
baryhuang

AWS Resources MCP Server

by baryhuang

Servidor MCP de recursos de AWS

Centro de Docker Centro de Docker

Descripción general

Una implementación de servidor de Protocolo de contexto de modelo (MCP) que proporciona código Python generado en ejecución para consultar cualquier recurso de AWS a través de boto3.

Bajo su propio riesgo : No limité las operaciones a ReadyOnly para que los operadores más precavidos puedan usar esta herramienta para realizar operaciones de gestión. Su rol de usuario de AWS determinará los permisos que puede realizar.

Demostración: Solucionar el error de permisos de Dynamodb

https://github.com/user-attachments/assets/de88688d-d7a0-45e1-94eb-3f5d71e9a7c7

Related MCP server: MCP Development Server

¿Por qué otro servidor AWS MCP?

Probé AWS Chatbot con acceso para desarrolladores. El plan gratuito tiene un límite de 25 consultas mensuales para recursos. El siguiente plan cuesta $19 al mes e incluye el 90% de las funciones que no uso. Los resultados están en formato JSON y tienen muchas restricciones.

Intenté usar aws-mcp pero encontré algunos problemas:

  1. Problemas de configuración : tuve que clonar un repositorio git y lidiar con la configuración local

  2. Problemas de estabilidad : no era lo suficientemente estable en mi Mac

  3. Pila de Node.js : como desarrollador de Python, no pude contribuir de manera efectiva a la base de código de Node.js

Así que creé este nuevo enfoque que:

  • Se ejecuta directamente desde una imagen de Docker: no es necesario clonar git

  • Utiliza Python y boto3 para una mejor estabilidad.

  • Facilita la contribución de los usuarios de Python

  • Incluye un entorno sandbox adecuado para la ejecución del código.

  • Mantiene todo en contenedores y limpio.

Para obtener más información sobre el Protocolo de contexto de modelo y cómo funciona, consulte la documentación MCP de Anthropic .

Componentes

Recursos

El servidor expone el siguiente recurso:

  • aws://query_resources : un recurso dinámico que proporciona acceso a los recursos de AWS a través de consultas boto3

Consultas de ejemplo

A continuación se muestran algunos ejemplos de consultas que puedes ejecutar:

  1. Lista de depósitos S3:

s3 = session.client('s3')
result = s3.list_buckets()
  1. Obtenga la última implementación de CodePipeline:

def get_latest_deployment(pipeline_name):
    codepipeline = session.client('codepipeline')

    result = codepipeline.list_pipeline_executions(
        pipelineName=pipeline_name,
        maxResults=5
    )

    if result['pipelineExecutionSummaries']:
        latest_execution = max(
            [e for e in result['pipelineExecutionSummaries']
             if e['status'] == 'Succeeded'],
            key=itemgetter('startTime'),
            default=None
        )

        if latest_execution:
            result = codepipeline.get_pipeline_execution(
                pipelineName=pipeline_name,
                pipelineExecutionId=latest_execution['pipelineExecutionId']
            )
        else:
            result = None
    else:
        result = None

    return result

result = get_latest_deployment("your-pipeline-name")

Nota : Todos los fragmentos de código deben establecer una variable result que se devolverá al cliente. Esta result se convertirá automáticamente a formato JSON, gestionando correctamente los objetos específicos de AWS y los valores de fecha y hora.

Herramientas

El servidor ofrece una herramienta para ejecutar consultas de AWS:

  • aws_resources_query_or_modify

    • Ejecute un fragmento de código boto3 para consultar o modificar recursos de AWS

    • Aporte:

      • code_snippet (cadena): código Python que utiliza boto3 para consultar recursos de AWS

      • El código debe establecer una variable result con la salida de la consulta.

    • Importaciones permitidas:

      • boto3

      • operador

      • json

      • fecha y hora

      • pytz

      • dateutil

      • re

      • tiempo

    • Funciones integradas disponibles:

      • Tipos básicos: dict, lista, tupla, conjunto, str, int, float, bool

      • Operaciones: len, max, min, ordenado, filtro, mapa, suma, cualquiera, todo

      • Manejo de objetos: hasattr, getattr, isinstance

      • Otros: imprimir, importar

Detalles de implementación

El servidor incluye varias características de seguridad:

  • Análisis de código basado en AST para validar las importaciones y la estructura del código

  • Entorno de ejecución restringido con funciones integradas limitadas

  • Serialización JSON de resultados con manejo adecuado de objetos específicos de AWS

  • Manejo y reporte adecuado de errores

Configuración

Prerrequisitos

Necesitará credenciales de AWS con los permisos adecuados para consultar los recursos de AWS. Puede obtenerlas de las siguientes maneras:

  1. Creación de un usuario de IAM en su cuenta de AWS

  2. Generación de claves de acceso para acceso programático

  3. Asegúrese de que el usuario de IAM tenga los permisos necesarios para los servicios de AWS que desea consultar

Se requieren las siguientes variables de entorno:

  • AWS_ACCESS_KEY_ID : Su clave de acceso de AWS

  • AWS_SECRET_ACCESS_KEY : Su clave secreta de AWS

  • AWS_SESSION_TOKEN : (opcional) token de sesión de AWS si se utilizan credenciales temporales

  • AWS_DEFAULT_REGION : región de AWS (el valor predeterminado es 'us-east-1' si no está configurado)

También puede usar un perfil almacenado en el archivo ~/.aws/credentials . Para ello, configure la variable de entorno AWS_PROFILE con el nombre del perfil.

Nota: Mantenga seguras sus credenciales de AWS y nunca las envíe al control de versiones.

Instalación mediante herrería

Para instalar AWS Resources MCP Server para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install mcp-server-aws-resources-python --client claude

Instalación de Docker

Puedes crear la imagen localmente o descargarla de Docker Hub. La imagen está diseñada para la plataforma Linux.

Plataformas compatibles

  • Linux/amd64

  • Linux/arm64

  • Linux/arm/v7

Opción 1: Extraer desde Docker Hub

docker pull buryhuang/mcp-server-aws-resources:latest

Opción 2: Construir localmente

docker build -t mcp-server-aws-resources .

Ejecute el contenedor:

docker run \
  -e AWS_ACCESS_KEY_ID=your_access_key_id_here \
  -e AWS_SECRET_ACCESS_KEY=your_secret_access_key_here \
  -e AWS_DEFAULT_REGION=your_AWS_DEFAULT_REGION \
  buryhuang/mcp-server-aws-resources:latest

O utilizando credenciales almacenadas y un perfil:

docker run \
  -e AWS_PROFILE=[AWS_PROFILE_NAME] \
  -v ~/.aws:/root/.aws \
  buryhuang/mcp-server-aws-resources:latest

Publicación multiplataforma

Para publicar la imagen de Docker en varias plataformas, puede usar el comando docker buildx . Siga estos pasos:

  1. Cree una nueva instancia de constructor (si aún no lo ha hecho):

    docker buildx create --use
  2. Construya y envíe la imagen para múltiples plataformas :

    docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t buryhuang/mcp-server-aws-resources:latest --push .
  3. Verifique que la imagen esté disponible para las plataformas especificadas :

    docker buildx imagetools inspect buryhuang/mcp-server-aws-resources:latest

Uso con Claude Desktop

Ejecutando con Docker

Ejemplo utilizando ACCESS_KEY_ID y SECRET_ACCESS_KEY

{
  "mcpServers": {
    "aws-resources": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AWS_ACCESS_KEY_ID=your_access_key_id_here",
        "-e",
        "AWS_SECRET_ACCESS_KEY=your_secret_access_key_here",
        "-e",
        "AWS_DEFAULT_REGION=us-east-1",
        "buryhuang/mcp-server-aws-resources:latest"
      ]
    }
  }
}

Ejemplo de uso de PROFILE y montaje de credenciales locales de AWS

{
  "mcpServers": {
    "aws-resources": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AWS_PROFILE=default",
        "-v",
        "~/.aws:/root/.aws",
        "buryhuang/mcp-server-aws-resources:latest"
      ]
    }
  }
}

Ejecutando con Git clone

Ejemplo ejecutándose con git clone y perfil

{
  "mcpServers": {
    "aws": {
      "command": "/Users/gmr/.local/bin/uv",
      "args": [
        "--directory",
        "/<your-path>/mcp-server-aws-resources-python",
        "run",
        "src/mcp_server_aws_resources/server.py",
        "--profile",
        "testing"
      ]
    }
  }
}

Available Tools

1 tool
aws_resources_query_or_modifyC

Execute a boto3 code snippet to query or modify AWS resources

ParametersJSON Schema
NameRequiredDescriptionDefault
code_snippetYesPython code using boto3 to query or modify AWS resources. The code should have default execution setting variable named 'result'. Example code: 'result = boto3.client('s3').list_buckets()'

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool can 'query or modify' AWS resources, implying both read and write operations, but fails to detail critical aspects like authentication requirements, error handling, rate limits, or safety considerations. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded in a single sentence: 'Execute a boto3 code snippet to query or modify AWS resources.' It efficiently conveys the core purpose without unnecessary details, though it could be slightly improved by structuring usage hints separately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (executing arbitrary code for AWS operations) and the absence of annotations and output schema, the description is incomplete. It lacks information on return values, error cases, security implications, and operational constraints, which are crucial for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'code_snippet' parameter well-documented in the schema. The description adds no additional meaning beyond what the schema provides, as it only repeats the boto3 and AWS context. According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Execute a boto3 code snippet to query or modify AWS resources.' It specifies the action (execute), technology (boto3), and target (AWS resources). However, it doesn't distinguish from siblings since there are none, so it cannot achieve the full differentiation required for a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions querying or modifying AWS resources but offers no context about specific scenarios, prerequisites, or exclusions. This lack of usage direction limits its effectiveness for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedaws_resources_query_or_modify

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as executing boto3 code snippets for AWS operations.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'aws_resources_query_or_modify' follows a clear verb_noun pattern and is descriptive.

Tool Count2/5

A single tool for an AWS resources server is too few for the apparent scope, as AWS involves many distinct services and operations. This forces all functionality through one generic interface, which is insufficient for comprehensive coverage.

Completeness2/5

The tool surface is severely incomplete for an AWS resources domain. While the tool allows generic boto3 execution, it lacks specific operations for common AWS resources (e.g., EC2 instances, S3 buckets, IAM roles), leaving significant gaps that will likely cause agent failures.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your AWS environment. This allows for natural language querying and management of your AWS resources during conversations. Think of better Amazon Q alternative.
    1
    3
    296
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI assistants like Claude to perform Python development tasks through file operations, code analysis, project management, and safe code execution.
    9
    MIT