此示例演示了如何通过 模型上下文协议(MCP) 服务器架构将 AWS Bedrock 的对话式 AI 能力与关系型数据库进行集成。该示例利用 Bedrock 的 Converse API 实现仅查询模式下的数据库自然语言交互,而 MCP 服务器则处理数据库操作的复杂性和安全协议。

该架构作为参考实现,供希望在其数据库应用程序中集成生成式 AI 能力的开发者参考。虽然示例主要关注 RDS PostgreSQL 和 SQLite,但该模式可以轻松适应其他支持 MCP 服务器集成的数据库系统。
此示例展示了:
列出在此示例中使用的 AWS 资源
git clone https://github.com/aws-samples/sample-for-bedrock-integration-with-database-mcp-server
确保已安装 Node.js(v10.13.0 或更高版本)
安装 AWS CDK
npm install -g aws-cdk
使用您的凭证配置 AWS CLI,并使用 Bedrock 可用的区域
aws configure
手动在 MacOS 和 Linux 上创建虚拟环境:
python3 -m venv .venv
激活虚拟环境
source .venv/bin/activate
一旦激活虚拟环境,就可以安装所需的依赖项。
pip install -r requirements.txt
使用 npm 安装 PostgreSQL MCP 服务器
npm install -g @modelcontextprotocol/server-postgres
pip install mcp psycopg2-binary
用户必须有权访问用于此示例的 Bedrock 模型。此示例假设以下设置:
更改 dbconfig.ini 文件,包含以下信息:
使用适当的数据库类型选项运行。如果没有提供数据库类型,聊天会话将默认使用 SQLite 并在 src/data 文件夹中创建名为 mymcpdb.db 的数据库。您可以通过修改 此文件 指向现有的 SQLite 数据库。
cd src
python3 chat.py --db-type [sqlite / postgres]
提问如下:(数据库用户必须具有执行这些操作的权限)
以下服务将根据使用情况和运行时间产生费用。请在需要时删除或禁用对此资源的访问。
配置的数据库用户必须有足够的权限执行这些操作。由于此示例仅适用于只读指令,因此这些操作必须使用数据库工具在示例外部执行。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users (name, email) VALUES
('John Doe', 'john.doe@example.com'),
('Jane Smith', 'jane.smith@example.com'),
('Bob Wilson', 'bob.wilson@example.com'),
('Alice Johnson', 'alice.j@example.com'),
('Tom Brown', 'tom.brown@example.com');
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
INSERT INTO products (name, price) VALUES
('Amazon Echo Dot (5th Gen)', 49.99),
('Kindle Paperwhite 8GB', 139.99),
('Fire TV Stick 4K', 49.99),
('Ring Video Doorbell', 99.99),
('Amazon Smart Plug', 24.99);