MCP2Lambda
Uma ponte que permite que clientes MCP e LLMs acessem e executem funções AWS Lambda como ferramentas.
Documentação
MCP2Lambda
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:
-
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.
-
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:
-
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.
-
Modo Genérico: Usa duas ferramentas genéricas (
list_lambda_functionseinvoke_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
-
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.
-
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
-
Clone o repositório:
git clone https://github.com/yourusername/mcp2lambda.git cd mcp2lambda -
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.
-
Instale o AWS SAM CLI: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
-
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
-
Navegue até o diretório mcp_client_bedrock:
cd mcp_client_bedrock -
Instale as dependências:
uv pip install -e . -
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
-
Inicie o servidor MCP2Lambda em um terminal:
cd mcp2lambda uv run main.py -
Execute o cliente Bedrock em outro terminal:
cd mcp_client_bedrock python main.py -
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