MCP2Lambda

Un puente que permite a los clientes MCP y LLMs acceder y ejecutar funciones de AWS Lambda como herramientas.

Documentación

MCP2Lambda

smithery badge

MCP2Lambda MCP server

Ejecute cualquier función de AWS Lambda como una herramienta de Modelo de Lenguaje Grande (LLM) sin cambios de código utilizando el Protocolo de Contexto de Modelo (MCP) de Anthropic.

graph LR
    A[Model] <--> B[MCP Client]
    B <--> C["MCP2Lambda<br>(MCP Server)"]
    C <--> D[Lambda Function]
    D <--> E[Other AWS Services]
    D <--> F[Internet]
    D <--> G[VPC]
    
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style C fill:#bfb,stroke:#333,stroke-width:4px
    style D fill:#fbb,stroke:#333,stroke-width:2px
    style E fill:#fbf,stroke:#333,stroke-width:2px
    style F fill:#dff,stroke:#333,stroke-width:2px
    style G fill:#ffd,stroke:#333,stroke-width:2px

Este servidor MCP actúa como un puente entre los clientes MCP y las funciones de AWS Lambda, permitiendo que los modelos de IA generativa accedan y ejecuten funciones Lambda como herramientas. Esto es útil, por ejemplo, para acceder a recursos privados como aplicaciones internas y bases de datos sin necesidad de proporcionar acceso a la red pública. Este enfoque permite que el modelo utilice otros servicios de AWS, redes privadas e Internet público.

Desde una perspectiva de seguridad, este enfoque implementa la separación de funciones al permitir que el modelo invoque las funciones Lambda pero no acceda directamente a los otros servicios de AWS. El cliente solo necesita credenciales de AWS para invocar las funciones Lambda. Las funciones Lambda pueden entonces interactuar con otros servicios de AWS (usando el rol de la función) y acceder a redes públicas o privadas.

El servidor MCP da acceso a dos herramientas:

  1. La primera herramienta puede autodescubrir todas las funciones Lambda en su cuenta que coincidan con un prefijo o una lista permitida de nombres. Esta herramienta comparte los nombres de las funciones y sus descripciones con el modelo.

  2. La segunda herramienta permite invocar esas funciones Lambda por nombre pasando los parámetros requeridos.

No se requieren cambios de código. Debe cambiar estas configuraciones para mejorar los resultados:

Selección de Estrategia

La puerta de enlace admite dos estrategias diferentes para manejar funciones Lambda:

  1. Modo de Pre-Detección (predeterminado: habilitado): Registra cada función Lambda como una herramienta individual al inicio. Esto proporciona una interfaz más intuitiva donde cada función aparece como su propia herramienta con nombre.

  2. Modo Genérico: Utiliza dos herramientas genéricas (list_lambda_functions y invoke_lambda_function) para interactuar con las funciones Lambda.

Puede controlar este comportamiento a través de:

  • Variable de entorno: PRE_DISCOVERY=true|false
  • Indicador de línea de comandos: --no-pre-discovery (deshabilita el modo de pre-detección)

Ejemplo:

# Disable pre-discovery mode
export PRE_DISCOVERY=false
python main.py

# Or using CLI flag to disable pre-discovery
python main.py --no-pre-discovery
  1. Para proporcionar al cliente MCP el conocimiento necesario para usar una función Lambda, la descripción de la función Lambda debe indicar qué hace la función y qué parámetros utiliza. Consulte las funciones de muestra para una demostración rápida y más detalles.

  2. Para ayudar al modelo a usar las herramientas disponibles a través de AWS Lambda, puede agregar algo como esto a su prompt de sistema:

Use the AWS Lambda tools to improve your answers.

Resumen

MCP2Lambda permite que los LLM interactúen con funciones de AWS Lambda como herramientas, extendiendo sus capacidades más allá de la generación de texto. Esto permite que los modelos:

  • Accedan a datos en tiempo real y privados, incluidas fuentes de datos en sus VPC
  • Ejecuten código personalizado usando una función Lambda como entorno de sandbox
  • Interactúen con servicios y API externos usando el acceso a Internet (y ancho de banda) de las funciones Lambda
  • Realicen cálculos especializados o procesamiento de datos

El servidor utiliza el protocolo MCP, que estandariza la forma en que los modelos de IA pueden acceder a herramientas externas.

Por defecto, solo las funciones cuyo nombre comienza con mcp2lambda- estarán disponibles para el modelo.

Requisitos previos

  • Python 3.12 o superior
  • Cuenta de AWS con credenciales configuradas
  • Funciones de AWS Lambda (funciones de muestra proporcionadas en el repositorio)
  • Una aplicación que use Amazon Bedrock con la API de Converse
  • Un cliente compatible con MCP como Claude Desktop

Instalación

Instalación a través de Smithery

Para instalar MCP2Lambda para Claude Desktop automáticamente a través de Smithery:

npx -y @smithery/cli install @danilop/MCP2Lambda --client claude

Instalación Manual

  1. Clone el repositorio:

    git clone https://github.com/yourusername/mcp2lambda.git
    cd mcp2lambda
    
  2. Configure las credenciales de AWS. Por ejemplo, usando la CLI de AWS:

    aws configure
    

Funciones Lambda de Muestra

Este repositorio incluye tres funciones Lambda de muestra que demuestran diferentes casos de uso. Estas funciones tienen permisos básicos y solo pueden escribir en los registros de CloudWatch.

CustomerIdFromEmail

Recupera un ID de cliente basado en una dirección de correo electrónico. Esta función toma un parámetro de correo electrónico y devuelve el ID de cliente asociado, demostrando cómo construir herramientas simples de búsqueda. La función está codificada para responder a la dirección de correo electrónico user@example.com. Por ejemplo, puede pedirle al modelo que obtenga el ID de cliente para el correo electrónico user@example.com.

CustomerInfoFromId

Recupera información detallada del cliente basada en un ID de cliente. Esta función devuelve detalles del cliente como nombre, correo electrónico y estado, mostrando cómo Lambda puede proporcionar datos específicos del contexto. La función está codificada para responder al ID de cliente devuelto por la función anterior. Por ejemplo, puede pedirle al modelo que "Obtenga el estado del cliente para el correo electrónico user@example.com". Esto usará ambas funciones para llegar al resultado.

RunPythonCode

Ejecuta código Python arbitrario dentro de un entorno sandbox de Lambda. Esta poderosa función permite a Claude escribir y ejecutar código Python para realizar cálculos, procesamiento de datos u otras operaciones no integradas en el modelo. Por ejemplo, puede pedirle al modelo que "Calcule el número de números primos entre 1 y 10, 1 y 100, y así sucesivamente hasta 1M".

Despliegue de Funciones Lambda de Muestra

El repositorio incluye funciones Lambda de muestra en el directorio sample_functions.

  1. Instale la CLI de AWS SAM: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html

  2. Despliegue las funciones de muestra:

    cd sample_functions
    sam build
    sam deploy
    

Las funciones de muestra se desplegarán con el prefijo mcp2lambda-.

Uso con Amazon Bedrock

MCP2Lambda también se puede usar con la API de Converse de Amazon Bedrock, permitiéndole usar el protocolo MCP con cualquiera de los modelos compatibles con Bedrock.

El directorio mcp_client_bedrock contiene una implementación de cliente que conecta MCP2Lambda con los modelos de Amazon Bedrock.

Consulte https://github.com/mikegc-aws/amazon-bedrock-mcp para más información.

Requisitos previos

  • Acceso a Amazon Bedrock y permisos para usar modelos como Claude, Mistral, Llama, etc.
  • Boto3 configurado con las credenciales apropiadas

Instalación y Configuración

  1. Navegue al directorio mcp_client_bedrock:

    cd mcp_client_bedrock
    
  2. Instale las dependencias:

    uv pip install -e .
    
  3. Ejecute el cliente:

    python main.py
    

Configuración

El cliente está configurado para usar Anthropic's Claude 3.7 Sonnet por defecto, pero puede modificar el model_id en main.py para usar otros modelos de Bedrock:

# Examples of supported models:
model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
#model_id = "us.amazon.nova-pro-v1:0"

También puede personalizar el prompt de sistema en el mismo archivo para cambiar cómo se comporta el modelo.

Uso

  1. Inicie el servidor MCP2Lambda en una terminal:

    cd mcp2lambda
    uv run main.py
    
  2. Ejecute el cliente de Bedrock en otra terminal:

    cd mcp_client_bedrock
    python main.py
    
  3. Interactúe con el modelo a través de la interfaz de línea de comandos. El modelo tendrá acceso a las funciones Lambda desplegadas anteriormente.

Uso con Claude Desktop

Agregue lo siguiente a su archivo de configuración de Claude Desktop:

{
  "mcpServers": {
    "mcp2lambda": {
      "command": "uv",
      "args": [
        "--directory",
        "<full path to the mcp2lambda directory>",
        "run",
        "main.py"
      ]
    }
  }
}

Para ayudar al modelo a usar herramientas a través de AWS Lambda, en su perfil de configuración, puede agregar a sus preferencias personales una frase como:

Use the AWS Lambda tools to improve your answers.

Iniciar el Servidor MCP

Inicie el servidor MCP localmente:

cd mcp2lambda
uv run main.py