AWS Resources MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides containerized deployment and cross-platform publishing of the MCP server, supporting multiple architectures including Linux/amd64, Linux/arm64, and Linux/arm/v7.

  • Enables querying GitHub resources through the AWS CodePipeline service, allowing access to repository deployment information and pipeline execution details.

  • Enables running generated Python code to interact with AWS resources through boto3, with support for various Python libraries and functions for AWS service interaction.

Servidor MCP de recursos de AWS

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

¿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" ] } } }
-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor de protocolo de contexto de modelo que permite a Claude ejecutar código Python usando boto3 para consultar y administrar recursos de AWS directamente desde las conversaciones.

  1. Overview
    1. Why Another AWS MCP Server?
      1. Components
        1. Resources
        2. Example Queries
        3. Tools
        4. Implementation Details
      2. Setup
        1. Prerequisites
        2. Installing via Smithery
        3. Docker Installation
      3. Cross-Platform Publishing
        1. Usage with Claude Desktop
          1. Running with Docker
          2. Running with Git clone
        ID: nx30klxurg