Bỏ qua để đến nội dung

Kết nối Python MCP Server với Cơ sở dữ liệu Quan hệ

Generator connection kết nối một Python MCP Server với dự án Python Relational Database, làm cho phiên cơ sở dữ liệu có sẵn cho tất cả các công cụ được đăng ký trong server.

Trước khi sử dụng generator này, hãy đảm bảo bạn có:

  1. Một dự án py#mcp-server
  2. Một dự án py#rdb
  1. Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
  2. Mở Nx Console trong VSCode
  3. Nhấp Generate (UI) trong phần "Common Nx Commands"
  4. Tìm kiếm @aws/nx-plugin - connection
  5. Điền các tham số bắt buộc
    • Nhấp Generate

    Chọn dự án MCP server của bạn làm nguồn và dự án cơ sở dữ liệu quan hệ của bạn làm đích. Nếu dự án chứa nhiều thành phần MCP server, hãy chỉ định sourceComponent để phân biệt.

    Tham sốKiểuMặc địnhMô tả
    sourceProject Bắt buộcstring-Dự án nguồn
    targetProject Bắt buộcstring-Dự án đích để kết nối tới
    sourceComponent string-Component nguồn để kết nối từ đó (tên component, đường dẫn tương đối so với thư mục gốc của dự án nguồn, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm nguồn.
    targetComponent string-Component đích để kết nối tới (tên component, đường dẫn tương đối so với thư mục gốc của dự án đích, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm đích.
    preferInstallDependencies booleantrueCó nên cài đặt các dependencies sau khi generator chạy hay không. Đặt thành false để trì hoãn việc cài đặt khi chạy nhiều generator liên tiếp (việc cài đặt vẫn sẽ chạy nếu cần thiết để các generator tiếp theo có thể tính toán Nx project graph); cài đặt một lần vào cuối.
    • Thư mụcpackages/my_service
      • project.json Thêm dependency từ my_mcp_server-dev vào target dev của cơ sở dữ liệu
      • pyproject.toml Thêm gói cơ sở dữ liệu làm dependency workspace
      • Thư mụcmy_service
        • Thư mụcmy_mcp_server
          • Dockerfile Thêm gói RDS CA được sử dụng cho các kết nối Aurora trực tiếp

    Import session_context từ gói cơ sở dữ liệu của bạn và sử dụng nó bên trong các công cụ MCP server của bạn:

    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])

    Chạy generator lại với một target khác sẽ thêm cơ sở dữ liệu thứ hai bên cạnh cơ sở dữ liệu đầu tiên. Cả hai session context đều có sẵn cho tất cả các công cụ:

    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

    Construct MCP server được tạo triển khai IGrantableIConnectable, vì vậy bạn có thể cấp quyền truy cập mạng và IAM cho cơ sở dữ liệu trực tiếp trên construct.

    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 mở quy tắc security group để runtime MCP server có thể truy cập cổng cơ sở dữ liệu. grantConnect cấp quyền IAM rds-db:connect cho execution role của server.

    Yêu cầu SSL khi Kết nối mà không có RDS Proxy

    Phần tiêu đề “Yêu cầu SSL khi Kết nối mà không có RDS Proxy”

    Khi MCP server kết nối trực tiếp với Aurora cluster (không có RDS Proxy), connection generator cập nhật Dockerfile MCP server được tạo để cài đặt gói Amazon RDS CA vào system trust store:

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

    Khi sử dụng RDS Proxy, bạn không cần cấu hình gói RDS CA trong runtime MCP server.

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

    Lệnh này khởi động MCP server và tất cả các cơ sở dữ liệu được kết nối. Biến môi trường LOCAL_DEV=true khiến database client kết nối với cơ sở dữ liệu Docker cục bộ của nó thay vì Aurora.