Pular para o conteúdo

Servidor MCP Python para Banco de Dados Relacional

O gerador connection conecta um Servidor MCP Python a um projeto de Banco de Dados Relacional Python, tornando a sessão do banco de dados disponível para todas as ferramentas registradas no servidor.

Antes de usar este gerador, certifique-se de ter:

  1. Um projeto py#mcp-server
  2. Um projeto py#rdb
  1. Instale o Nx Console VSCode Plugin se ainda não o fez
  2. Abra o console Nx no VSCode
  3. Clique em Generate (UI) na seção "Common Nx Commands"
  4. Procure por @aws/nx-plugin - connection
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate

    Selecione seu projeto de servidor MCP como origem e seu projeto de banco de dados relacional como destino. Se o projeto contiver múltiplos componentes de servidor MCP, especifique sourceComponent para desambiguar.

    ParâmetroTipoPadrãoDescrição
    sourceProject Obrigatóriostring-O projeto de origem
    targetProject Obrigatóriostring-O projeto de destino para conectar
    sourceComponent string-O componente de origem para conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem.
    targetComponent string-O componente de destino para conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino.
    preferInstallDependencies booleantrueSe deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que os geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final.
    • Directorypackages/my_service
      • project.json Adiciona uma dependência de my_mcp_server-dev no target dev do banco de dados
      • pyproject.toml Adiciona o pacote do banco de dados como uma dependência do workspace
      • Directorymy_service
        • Directorymy_mcp_server
          • Dockerfile Adiciona o pacote CA do RDS usado para conexões diretas ao Aurora

    Importe session_context do seu pacote de banco de dados e use-o dentro das suas ferramentas do servidor MCP:

    packages/my_service/my_service/my_mcp_server/server.py
    from sqlmodel import select
    from my_scope.my_db import session_context
    from my_scope.my_db.models.example import ExampleModel
    @mcp.tool()
    async def list_examples() -> str:
    """List all example records."""
    async with session_context() as session:
    items = (await session.execute(select(ExampleModel))).all()
    return str([item.model_dump() for item in items])

    Executar o gerador novamente com um destino diferente adiciona o segundo banco de dados junto ao primeiro. Ambos os contextos de sessão estão disponíveis para todas as ferramentas:

    packages/my_service/my_service/my_mcp_server/server.py
    from my_scope.my_db import session_context as my_db_session_context
    from my_scope.other_db import session_context as other_db_session_context

    O construto do servidor MCP gerado implementa IGrantable e IConnectable, então você pode conceder acesso de rede e IAM ao banco de dados diretamente no construto.

    packages/infra/src/stacks/application-stack.ts
    import { RuntimeNetworkConfiguration } from 'aws-cdk-lib/aws-bedrockagentcore';
    import { MyDatabase } from ':my-scope/common-constructs';
    const db = new MyDatabase(this, 'Db', { vpc, ... });
    const myMcpServer = new MyMcpServer(this, 'MyMcpServer', {
    networkConfiguration: RuntimeNetworkConfiguration.usingVpc(this, {
    vpc,
    vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
    }),
    });
    db.allowDefaultPortFrom(myMcpServer);
    db.grantConnect(myMcpServer);

    allowDefaultPortFrom abre a regra do grupo de segurança para que o runtime do servidor MCP possa alcançar a porta do banco de dados. grantConnect concede permissão IAM rds-db:connect à função de execução do servidor.

    Quando o servidor MCP se conecta diretamente ao cluster Aurora (sem RDS Proxy), o gerador de conexão atualiza o Dockerfile gerado do servidor MCP para instalar o pacote CA do Amazon RDS no armazenamento de confiança do sistema:

    ADD https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem /usr/local/share/ca-certificates/rds-global-bundle.crt
    RUN update-ca-certificates

    Ao usar RDS Proxy, você não precisa configurar o pacote CA do RDS no runtime do servidor MCP.

    Terminal window
    pnpm nx <mcp-server-name>-dev <project-name>

    Isso inicia o servidor MCP e todos os bancos de dados conectados. A variável de ambiente LOCAL_DEV=true faz com que o cliente do banco de dados se conecte ao seu banco de dados Docker local em vez do Aurora.