MCP2Lambda

Uma ponte que permite que clientes MCP e LLMs acessem e executem funções AWS Lambda como ferramentas.

Documentação

MCP2Lambda

smithery badge

MCP2Lambda MCP server

Execute qualquer função AWS Lambda como uma ferramenta de Large Language Model (LLM) sem alterações de código usando o Model Context Protocol (MCP) da 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 atua como uma ponte entre clientes MCP e funções AWS Lambda, permitindo que modelos de IA generativa acessem e executem funções Lambda como ferramentas. Isso é útil, por exemplo, para acessar recursos privados, como aplicações internas e bancos de dados, sem a necessidade de fornecer acesso público à rede. Essa abordagem permite que o modelo use outros serviços AWS, redes privadas e a internet pública.

Do ponto de vista de segurança, essa abordagem implementa segregação de funções ao permitir que o modelo invoque as funções Lambda, mas não acesse os outros serviços AWS diretamente. O cliente só precisa de credenciais AWS para invocar as funções Lambda. As funções Lambda podem então interagir com outros serviços AWS (usando a role da função) e acessar redes públicas ou privadas.

O servidor MCP dá acesso a duas ferramentas:

  1. A primeira ferramenta pode descobrir automaticamente todas as funções Lambda na sua conta que correspondam a um prefixo ou a uma lista permitida de nomes. Esta ferramenta compartilha os nomes das funções e suas descrições com o modelo.

  2. A segunda ferramenta permite invocar essas funções Lambda pelo nome, passando os parâmetros necessários.

Nenhuma alteração de código é necessária. Você deve alterar estas configurações para melhorar os resultados:

Seleção de Estratégia

O gateway suporta duas estratégias diferentes para lidar com funções Lambda:

  1. Modo Pré-Descoberta (padrão: habilitado): Registra cada função Lambda como uma ferramenta individual na inicialização. Isso fornece uma interface mais intuitiva, onde cada função aparece como sua própria ferramenta nomeada.

  2. Modo Genérico: Usa duas ferramentas genéricas (list_lambda_functions e invoke_lambda_function) para interagir com funções Lambda.

Você pode controlar esse comportamento através de:

  • Variável de ambiente: PRE_DISCOVERY=true|false
  • Flag de CLI: --no-pre-discovery (desabilita o modo pré-descoberta)

Exemplo:

# 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 fornecer ao cliente MCP o conhecimento necessário para usar uma função Lambda, a descrição da função Lambda deve indicar o que a função faz e quais parâmetros ela usa. Veja as funções de exemplo para uma demonstração rápida e mais detalhes.

  2. Para ajudar o modelo a usar as ferramentas disponíveis via AWS Lambda, você pode adicionar algo como isto ao seu system prompt:

Use the AWS Lambda tools to improve your answers.

Visão Geral

O MCP2Lambda permite que LLMs interajam com funções AWS Lambda como ferramentas, estendendo suas capacidades além da geração de texto. Isso permite que os modelos:

  • Acessem dados em tempo real e privados, incluindo fontes de dados em suas VPCs
  • Executem código personalizado usando uma função Lambda como ambiente sandbox
  • Interajam com serviços e APIs externos usando o acesso à internet (e largura de banda) das funções Lambda
  • Realizem cálculos especializados ou processamento de dados

O servidor usa o protocolo MCP, que padroniza a forma como modelos de IA podem acessar ferramentas externas.

Por padrão, apenas funções cujo nome começa com mcp2lambda- estarão disponíveis para o modelo.

Pré-requisitos

  • Python 3.12 ou superior
  • Conta AWS com credenciais configuradas
  • Funções AWS Lambda (funções de exemplo fornecidas no repositório)
  • Uma aplicação usando Amazon Bedrock com a Converse API
  • Um cliente compatível com MCP, como o Claude Desktop

Instalação

Instalando via Smithery

Para instalar o MCP2Lambda para Claude Desktop automaticamente via Smithery:

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

Instalação Manual

  1. Clone o repositório:

    git clone https://github.com/yourusername/mcp2lambda.git
    cd mcp2lambda
    
  2. Configure as credenciais AWS. Por exemplo, usando o AWS CLI:

    aws configure
    

Funções Lambda de Exemplo

Este repositório inclui três funções Lambda de exemplo que demonstram diferentes casos de uso. Essas funções têm permissões básicas e só podem gravar em logs do CloudWatch.

CustomerIdFromEmail

Recupera um ID de cliente com base em um endereço de e-mail. Esta função recebe um parâmetro de e-mail e retorna o ID de cliente associado, demonstrando como construir ferramentas simples de consulta. A função é codificada para responder ao endereço de e-mail user@example.com. Por exemplo, você pode pedir ao modelo para obter o ID de cliente para o e-mail user@example.com.

CustomerInfoFromId

Recupera informações detalhadas do cliente com base em um ID de cliente. Esta função retorna detalhes do cliente, como nome, e-mail e status, mostrando como o Lambda pode fornecer dados específicos de contexto. A função é codificada para responder ao ID de cliente retornado pela função anterior. Por exemplo, você pode pedir ao modelo para "Obter o status do cliente para o e-mail user@example.com". Isso usará ambas as funções para chegar ao resultado.

RunPythonCode

Executa código Python arbitrário dentro de um ambiente sandbox do Lambda. Esta função poderosa permite que o Claude escreva e execute código Python para realizar cálculos, processamento de dados ou outras operações não incorporadas ao modelo. Por exemplo, você pode pedir ao modelo para "Calcular o número de números primos entre 1 e 10, 1 e 100, e assim por diante até 1M".

Implantando Funções Lambda de Exemplo

O repositório inclui funções Lambda de exemplo no diretório sample_functions.

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

  2. Implante as funções de exemplo:

    cd sample_functions
    sam build
    sam deploy
    

As funções de exemplo serão implantadas com o prefixo mcp2lambda-.

Usando com Amazon Bedrock

O MCP2Lambda também pode ser usado com a Converse API do Amazon Bedrock, permitindo que você use o protocolo MCP com qualquer um dos modelos suportados pelo Bedrock.

O diretório mcp_client_bedrock contém uma implementação de cliente que conecta o MCP2Lambda aos modelos do Amazon Bedrock.

Veja https://github.com/mikegc-aws/amazon-bedrock-mcp para mais informações.

Pré-requisitos

  • Acesso ao Amazon Bedrock e permissões para usar modelos como Claude, Mistral, Llama, etc.
  • Boto3 configurado com credenciais apropriadas

Instalação e Configuração

  1. Navegue até o diretório mcp_client_bedrock:

    cd mcp_client_bedrock
    
  2. Instale as dependências:

    uv pip install -e .
    
  3. Execute o cliente:

    python main.py
    

Configuração

O cliente está configurado para usar o Claude 3.7 Sonnet da Anthropic por padrão, mas você pode modificar o model_id em main.py para usar outros modelos Bedrock:

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

Você também pode personalizar o system prompt no mesmo arquivo para alterar como o modelo se comporta.

Uso

  1. Inicie o servidor MCP2Lambda em um terminal:

    cd mcp2lambda
    uv run main.py
    
  2. Execute o cliente Bedrock em outro terminal:

    cd mcp_client_bedrock
    python main.py
    
  3. Interaja com o modelo através da interface de linha de comando. O modelo terá acesso às funções Lambda implantadas anteriormente.

Usando com Claude Desktop

Adicione o seguinte ao seu arquivo de configuração do Claude Desktop:

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

Para ajudar o modelo a usar ferramentas via AWS Lambda, no seu perfil de configurações, você pode adicionar às suas preferências pessoais uma frase como:

Use the AWS Lambda tools to improve your answers.

Iniciando o Servidor MCP

Inicie o servidor MCP localmente:

cd mcp2lambda
uv run main.py