代理MCP数据库编排器
使用模型上下文协议(MCP)和AI代理与AWS托管数据库服务进行自然语言交互的智能架构模式。
目录
______________________________________________________________________
概述
Agent MCP Database Orchestrator是一个智能中间件系统,使用户能够通过自然语言与多个AWS管理的数据库服务进行交互。该系统接受自然语言查询,使用AI代理确定最佳数据库引擎和路由策略,与特定于引擎的MCP服务器协调,并向客户返回统一的结果。
主要特点
- 🧠 自然语言处理:使用简明英语查询任何AWS数据库
- 🎯 智能路由:AI代理会自动为您的查询选择最佳的数据库引擎
- 🔄 多数据库协调:跨多个数据库无缝执行查询
- 🔒 企业安全:IAM身份验证、RBAC和全面的审计日志记录
- 📊 架构发现:探索所有引擎的数据库结构
- 🚀 高性能:使用连接池并行执行查询
- 📈 可观测性:内置监控、跟踪和健康检查
支持的AWS数据库服务
- 关系的:RDS(PostgreSQL、MySQL、MariaDB、Oracle、SQL Server)、Aurora(PostgreSQL、MySQL)
- 非关系型数据库:DynamoDB、DocumentDB、密钥空间
- 图:海王星
- 缓存:弹性,MemoryDB
- 专业:时间流,QLDB
______________________________________________________________________
需求
术语表
- MCP编排器:接收自然语言输入并与特定于发动机的MCP服务器协调的中央智能路由系统
- 特定于发动机的MCP服务器:针对特定AWS数据库引擎量身定制的MCP服务器实现
- 路由代理:分析自然语言查询以确定适当数据库引擎的AI代理
- 查询翻译器:将自然语言转换为特定于引擎的查询语法的组件
- AWS托管数据库服务:AWS数据库产品集合
- 用户:提交自然语言查询的最终客户或开发人员
- 自然语言查询:用户请求用简单的英语表达,而不是数据库特定的语法
用户故事和接受标准
1.自然语言查询处理
用户故事: 作为一名开发人员,我想使用自然语言查询任何AWS托管的数据库,这样我就不需要学习多种特定于数据库的查询语言
验收标准:
- 当用户提交自然语言查询时,MCP编排器应接受输入并启动处理
- MCP编排器应支持所有AWS托管数据库服务的自然语言查询
- 当用户提交查询时,MCP编排器应以一致的格式返回结果,而不管底层数据库引擎如何
- MCP编排器应在翻译过程中保留用户自然语言查询的语义意图
2.智能查询路由
用户故事: 作为一名系统架构师,我希望编排器能够智能地将查询路由到正确的数据库引擎,以便对最合适的数据源执行查询
验收标准:
- 当MCP编排器收到自然语言查询时,路由代理应分析该查询以确定目标数据库引擎
- 路由代理在做出路由决策时,应考虑查询语义、数据模型要求和可用的数据库引擎
- 如果多个数据库引擎可以满足一个查询,那么路由代理应根据查询特征和性能考虑选择最佳引擎
- 路由代理应为其路由决策提供推理,以实现透明度和调试
- 当识别出目标数据库引擎时,MCP编排器应与相应的特定于引擎的MCP服务器建立连接
3.特定于发动机的MCP服务器
用户故事: 作为一名数据库管理员,我希望每个AWS数据库引擎都有自己的专用MCP服务器,以便利用引擎特定的功能和优化
验收标准:
- MCP编排器应为每个支持的AWS托管数据库服务维护与特定于引擎的MCP服务器的连接
- 当特定于引擎的MCP服务器不可用时,MCP编排器应返回一条错误消息,指示服务不可用
- 特定于引擎的MCP服务器应将自然语言查询转换为其数据库引擎的本地查询语法
- 特定于引擎的MCP服务器应对目标数据库执行查询,并将结果返回给MCP编排器
- 引擎特定的MCP服务器应处理引擎特定的身份验证和连接管理
4.多数据库查询协调
用户故事: 作为一名开发人员,我希望系统能够处理可能跨越多个数据库的复杂查询,这样我就可以在不进行手动协调的情况下检索全面的结果
验收标准:
- 当自然语言查询需要来自多个数据库引擎的数据时,路由代理应识别所有所需的数据源
- MCP编排器应协调多个特定于引擎的MCP服务器之间的并行或顺序查询
- MCP编排器应将多个数据库引擎的结果合并为统一的响应
- 执行跨数据库查询时,MCP编排器应在适用的情况下维护事务语义
- MCP编排器应提供查询执行计划,显示访问了哪些数据库
5.安全和授权
用户故事: 作为一名安全工程师,我希望所有数据库访问都经过身份验证和授权,以便数据保持安全和合规
验收标准:
- MCP编排器应在处理任何查询之前对用户进行身份验证
- MCP编排器应验证用户是否有权访问所请求的数据库引擎
- 连接到AWS托管数据库服务时,特定于引擎的MCP服务器应使用IAM身份验证或数据库本机身份验证
- MCP编排器应记录所有查询请求、路由决策和结果,以供审计之用
- 如果用户缺乏对数据库引擎的授权,则MCP编排器应在不执行查询的情况下返回授权错误
6.查询透明度和调试
用户故事: 作为一名开发人员,我想了解我的自然语言查询是如何被解释和执行的,这样我就可以改进我的查询并解决问题
验收标准:
- MCP编排器应解释如何解释自然语言查询
- MCP编排器应显示选择了哪个数据库引擎以及原因
- MCP编排器应显示每个访问的数据库引擎的翻译后的本地查询语法
- 当发生错误时,MCP编排器应提供详细的错误消息,包括查询管道中的故障点
- MCP编排器应在响应中包括执行时间和性能指标
7.容错性和可靠性
用户故事: 作为一名系统操作员,我希望编排器能够优雅地处理故障,使系统保持可靠并提供有用的反馈
验收标准:
- 当特定于引擎的MCP服务器发生故障时,MCP编排器应以指数回退方式重试请求最多三次
- 如果所有重试尝试都失败,则MCP编排器应向用户返回详细的错误消息
- 当数据库连接超时时,MCP编排器应终止查询并在30秒内返回超时错误
- 即使单个特定于发动机的MCP服务器不可用,MCP编排器也应继续运行
- MCP编排器应监控所有特定于发动机的MCP服务器的运行状况并报告状态
8.模式发现
用户故事: 作为一名开发人员,我想执行模式发现和元数据查询,以便了解可用数据库的结构
验收标准:
- MCP编排器应支持对所有数据库引擎的模式信息进行自然语言查询
- 当用户请求模式信息时,MCP编排器应向相应的特定于引擎的MCP服务器查询元数据
- 无论数据库引擎如何,MCP编排器都应以标准化的格式返回模式信息
- MCP编排器应支持有关表结构、索引、关系和约束的查询
- MCP编排器应提供可用数据库及其引擎的目录
9.数据操作
用户故事: 作为一名开发人员,我想通过自然语言执行数据操作,这样我就可以在不编写特定于引擎的语法的情况下修改数据
验收标准:
- MCP编排器应支持INSERT、UPDATE和DELETE操作的自然语言请求
- 当用户请求修改数据时,MCP编排器应在执行前要求明确确认
- 查询翻译器应将自然语言数据操作请求转换为安全的参数化查询
- MCP编排器应在数据操作后返回受影响的行数
- 如果数据操作请求不明确,则MCP编排器应在执行前要求用户澄清
10.可扩展的引擎支持
用户故事: 作为一名系统架构师,我希望编排器支持多个AWS数据库引擎,以便系统可以服务于不同的用例
验收标准:
- MCP编排器应支持RDS Aurora PostgreSQL、Aurora MySQL、PostgreSQL、MySQL、MariaDB、Oracle和SQL Server的特定于引擎的MCP服务器
- MCP编排器应支持DynamoDB、DocumentDB、Neptune、ElastiCache、MemoryDB、Timestream、QLDB和Keyspace的特定于引擎的MCP服务器
- MCP编排器应允许在不重新启动系统的情况下动态注册新的特定于发动机的MCP服务器
- MCP编排器应维护一个支持的数据库引擎及其功能的注册表
- 当添加新的AWS托管数据库服务时,MCP编排器应支持通过标准化的特定于引擎的MCP服务器接口进行集成
______________________________________________________________________
建筑与设计
高级体系结构
graph TB
User[User/Client] -->|Natural Language Query| API[API Gateway]
API --> Orchestrator[MCP Orchestrator]
Orchestrator --> NLU[NL Understanding Agent]
Orchestrator --> Router[Routing Agent]
Orchestrator --> Coordinator[Query Coordinator]
Orchestrator --> Merger[Result Merger]
Router --> Registry[Engine Registry]
Coordinator --> RDS_PG[RDS PostgreSQL MCP]
Coordinator --> RDS_MY[RDS MySQL MCP]
Coordinator --> Aurora_PG[Aurora PostgreSQL MCP]
Coordinator --> Aurora_MY[Aurora MySQL MCP]
Coordinator --> DDB[DynamoDB MCP]
Coordinator --> DocDB[DocumentDB MCP]
Coordinator --> Neptune[Neptune MCP]
Coordinator --> Cache[ElastiCache MCP]
Coordinator --> Memory[MemoryDB MCP]
Coordinator --> Time[Timestream MCP]
Coordinator --> QLDB[QLDB MCP]
Coordinator --> Keyspaces[Keyspaces MCP]
RDS_PG --> RDS_PG_DB[(RDS PostgreSQL)]
RDS_MY --> RDS_MY_DB[(RDS MySQL)]
Aurora_PG --> Aurora_PG_DB[(Aurora PostgreSQL)]
Aurora_MY --> Aurora_MY_DB[(Aurora MySQL)]
DDB --> DDB_DB[(DynamoDB)]
DocDB --> DocDB_DB[(DocumentDB)]
Neptune --> Neptune_DB[(Neptune)]
Cache --> Cache_DB[(ElastiCache)]
Memory --> Memory_DB[(MemoryDB)]
Time --> Time_DB[(Timestream)]
QLDB --> QLDB_DB[(QLDB)]
Keyspaces --> Keyspaces_DB[(Keyspaces)]核心组件
1.API网关
所有用户请求的入口点,处理HTTP/WebSocket连接。
关键终点:
POST /query-提交自然语言查询WS /session-交互式查询会话GET /schema/{engine?}-架构发现GET /health-系统健康检查
2.身份验证与授权模块
使用IAM、API密钥或OAuth确保对数据库资源的访问安全。
3.自然语言理解代理
从自然语言查询中解析和理解用户意图。
能力:
- 提取查询意图(SELECT、INSERT、UPDATE、DELETE、SCHEMA)
- 识别实体(表、列、值、条件)
- 检测查询复杂性(单数据库与多数据库)
- 处理歧义并要求澄清
4.路由代理
确定执行查询的最佳数据库引擎。
路由策略:
- Single:路由到一个数据库
- 并行:同时跨多个数据库执行
- 顺序:按依赖关系顺序执行查询
- 联合:协调复杂的跨数据库查询
5.发动机注册表
维护可用数据库引擎及其功能的目录。
6.查询翻译器
将自然语言意图转换为特定于引擎的查询语法。
支持的翻译:
- SQL(PostgreSQL、MySQL、Oracle、SQL Server)
- NoSQL(DynamoDB PartiQL、DocumentDB MongoDB、Keyspace CQL)
- 图表(海王星Gremlin)
- 专业(时间流、QLDB PartiQL)
7.查询协调员
跨一个或多个特定于引擎的MCP服务器执行查询。
特征:
- 连接池
- 超时处理
- 使用指数回退重试
- 交易协调
8.特定于发动机的MCP服务器
所有数据库引擎MCP服务器的标准化接口。
责任:
- 接受来自协调器的本机查询
- 管理数据库连接和身份验证
- 对目标数据库执行查询
- 以标准格式返回结果
9.结果合并
将多个数据库引擎的结果合并到统一的响应中。
能力:
- 合并来自多个来源的数据
- 处理架构差异
- 应用后处理(排序、过滤、聚合)
- 生成执行摘要
10.审计记录器
记录所有操作以确保安全性、合规性和调试。
11.健康监测
监控所有特定于发动机的MCP服务器的运行状况和可用性。
数据流
sequenceDiagram
participant User
participant API
participant Auth
participant NLU
participant Router
participant Translator
participant Coordinator
participant MCP_Server
participant Database
participant Merger
User->>API: Natural Language Query
API->>Auth: Authenticate & Authorize
Auth-->>API: Token Valid
API->>NLU: Parse Query
NLU-->>API: Query Intent
API->>Router: Route Query
Router-->>API: Routing Decision
API->>Translator: Translate to Native Query
Translator-->>API: Native Query
API->>Coordinator: Execute Query
Coordinator->>MCP_Server: Send Native Query
MCP_Server->>Database: Execute
Database-->>MCP_Server: Results
MCP_Server-->>Coordinator: Results
Coordinator->>Merger: Merge Results
Merger-->>API: Unified Results
API-->>User: Response with Explanation关键接口
QueryIntent
interface QueryIntent {
operation: 'select' | 'insert' | 'update' | 'delete' | 'schema' | 'describe';
entities: Entity[];
filters: Filter[];
joins?: Join[];
aggregations?: Aggregation[];
sorting?: Sort[];
confidence: number;
ambiguities?: Ambiguity[];
}路线决策
interface RoutingDecision {
primary: EngineTarget;
secondary?: EngineTarget[];
strategy: 'single' | 'parallel' | 'sequential' | 'federated';
rationale: string;
confidence: number;
}NativeQuery
interface NativeQuery {
engine: string;
syntax: string;
query: string;
parameters: Record;
estimatedCost?: number;
}执行结果
interface ExecutionResult {
queryId: string;
engine: string;
status: 'success' | 'error' | 'timeout';
data?: any[];
rowCount?: number;
executionTime: number;
error?: Error;
}错误处理
错误类别:
- 身份验证错误
- 授权错误
- 验证错误
- 路由错误
- 执行错误
- 翻译错误
重试策略:
- 连接失败:3次重试,指数回退(1s、2s、4s)
- 超时错误:不重试
- 瞬态错误:2次重试,延迟1秒
- 身份验证错误:不重试
部署架构
graph TB
subgraph "Public Subnet"
ALB[Application Load Balancer]
API[API Gateway Instances]
end
subgraph "Private Subnet - Orchestrator"
Orch1[Orchestrator Instance 1]
Orch2[Orchestrator Instance 2]
Orch3[Orchestrator Instance 3]
end
subgraph "Private Subnet - MCP Servers"
MCP_RDS[RDS MCP Servers]
MCP_NoSQL[NoSQL MCP Servers]
MCP_Graph[Graph MCP Servers]
MCP_Cache[Cache MCP Servers]
MCP_TS[Time Series MCP Servers]
end
subgraph "Data Tier"
RDS[(RDS/Aurora)]
DDB[(DynamoDB)]
DocDB[(DocumentDB)]
Neptune[(Neptune)]
Cache[(ElastiCache)]
Memory[(MemoryDB)]
Time[(Timestream)]
end
ALB --> API
API --> Orch1
API --> Orch2
API --> Orch3
Orch1 --> MCP_RDS
Orch1 --> MCP_NoSQL
Orch1 --> MCP_Graph
Orch1 --> MCP_Cache
Orch1 --> MCP_TS
MCP_RDS --> RDS
MCP_NoSQL --> DDB
MCP_NoSQL --> DocDB
MCP_Graph --> Neptune
MCP_Cache --> Cache
MCP_Cache --> Memory
MCP_TS --> Time部署注意事项:
- 编排器:具有自动扩展功能的容器化服务(ECS/EKS)
- 特定于发动机的MCP服务器:每种发动机类型单独服务
- 高可用性:多AZ部署,每个组件2个以上实例
- 负载平衡:API网关的应用程序负载平衡器
- 服务发现:AWS云地图或内部DNS
- 配置:AWS系统管理器参数存储/机密管理器
- 监控:CloudWatch指标、X射线追踪
安全
- 网络安全:具有安全组的VPC
- 加密:TLS用于所有通信,静态加密
- IAM集成:服务到服务身份验证的IAM角色
- 秘密管理:用于凭据的AWS Secrets Manager
- 审计日志:记录到CloudWatch的所有查询
- 输入验证:对所有用户输入进行消毒
- 查询安全:参数化查询以防止注入
监测和可观察性
韵律学:
- 查询延迟(p50、p95、p99)
- 查询吞吐量(查询/秒)
- 按类别划分的错误率
- 发动机可用性
- 连接池利用率
- 缓存命中率
登录中:
- 结构化JSON日志
- 用于跟踪的相关ID
- 集中到CloudWatch日志
追踪:
- AWS X射线分布式跟踪
- 端到端查询流可见性
______________________________________________________________________
实施计划
第一阶段:基础(任务1-3)
任务1:设置项目结构和核心接口
- 为编排器、代理、MCP服务器和共享实用程序创建目录结构
- 为所有核心组件定义TypeScript接口
- 设置配置管理
- 创建共享类型包
任务2:实现引擎注册表和配置
- 2.1 创建具有注册/注销功能的引擎注册表服务
- 2.2 为所有AWS数据库类型创建引擎功能定义
- 2.3 使用基于环境的配置实现配置管理器
任务3:实现身份验证和授权模块
- 3.1 创建身份验证服务(IAM、API密钥、会话令牌)
- 3.2 创建授权服务(RBAC、权限检查)
- 3.3 为身份验证事件实施审核日志记录
第二阶段:智能层(任务4-6)
任务4:实现自然语言理解代理
- 4.1 创建NLU代理核心(意图提取、实体识别)
- 4.2 实施模糊检测和澄清
- 4.3 添加上下文感知查询理解
任务5:实现路由代理
- 5.1 使用评分系统创建路线决策引擎
- 5.2 实现路由原理生成器
- 5.3 添加发动机性能匹配
任务6:实现查询翻译器
- 6.1 为关系数据库创建SQL转换器
- 6.2 创建NoSQL转换器(DynamoDB、DocumentDB、密钥空间)
- 6.3 创建专门的数据库翻译器(Neptune、Timestream、QLDB)
- 6.4 实施查询验证和优化
第3阶段:执行层(任务7-9)
任务7:实现特定于引擎的MCP服务器接口
- 7.1 创建基本MCP服务器接口
- 7.2 实施RDS/Aurora MCP服务器
- 7.3 实施NoSQL MCP服务器
- 7.4 实施专用数据库MCP服务器
- 7.5 为MCP服务器实施IAM身份验证
任务8:实现查询协调器
- 8.1 创建执行计划生成器
- 8.2 实现查询执行引擎
- 8.3 添加重试和错误处理
- 8.4 实施交易协调
任务9:实施结果合并
- 9.1 创建结果合并逻辑
- 9.2 实施后处理操作
- 9.3 创建执行摘要生成器
- 9.4 实现结果格式化
第4阶段:API和功能(任务10-12)
任务10:实现API网关
- 10.1 创建REST API端点
- 10.2 为交互式会话实现WebSocket支持
- 10.3 添加API中间件(身份验证、日志记录、速率限制)
- 10.4 实现响应格式
任务11:实现模式发现
- 11.1 创建架构发现服务
- 11.2 实现关系数据库模式发现
- 11.3 实现NoSQL模式发现
- 11.4 实现专门的数据库模式发现
任务12:实施数据操作
- 12.1 创建数据修改处理程序(INSERT、UPDATE、DELETE)
- 12.2 添加数据修改的安全机制
- 12.3 实施修改结果报告
第5阶段:操作(任务13-15)
任务13:实施审计日志记录
- 13.1 创建审计日志服务
- 13.2 实施查询审核日志记录
- 13.3 添加安全事件日志记录
任务14:实施健康监测
- 14.1 创建健康监测服务
- 14.2 实施健康状况报告
- 14.3 添加指标集合
任务15:实现查询解释
- 15.1 创建解释生成器
- 15.2 添加执行计划可视化
- 15.3 实施错误解释
第6阶段:部署和测试(任务16-18)
任务16:创建部署配置
- 16.1 创建Docker容器
- 16.2 创建Kubernetes/ECS部署清单
- 16.3 以代码形式创建基础设施(地形/CloudFormation)
任务17:创建示例实现和文档
- 17.1 创建示例查询
- 17.2 创建API文档(OpenAPI规范)
- 17.3 创建部署指南
任务18:创建集成测试(可选)
- 18.1 创建端到端测试套件
- 18.2 创建特定于发动机的测试
- 18.3 创建性能测试
______________________________________________________________________
入门指南
先决条件
- Node.js 18+或Python 3.9+
- 部署Docker和Kubernetes/ECS
- 可访问托管数据库服务的AWS帐户
- IAM数据库访问权限
快速开始
- 克隆存储库
git clone
cd agentic-mcp-database-orchestrator- 安装依赖项
npm install
# or
pip install -r requirements.txt- 配置发动机
编辑 config/engines.json 要添加数据库终结点,请执行以下操作:
{
"engines": [
{
"id": "aurora-postgres-prod",
"type": "relational",
"mcpServerUrl": "http://localhost:3001",
"credentials": "arn:aws:secretsmanager:..."
}
]
}- 启动编排器
npm run start
# or
python -m orchestrator.main- 使用查询进行测试
curl -X POST http://localhost:3000/query \
-H "Content-Type: application/json" \
-d '{"query": "Show me all users created in the last 7 days"}'查询示例
简单选择:
"Show me all customers from the users table"聚合:
"What's the total revenue by product category this month?"多数据库:
"Get user profiles from PostgreSQL and their recent orders from DynamoDB"架构发现:
"What tables are available in the sales database?"数据修改:
"Update the email address for user ID 12345 to newemail@example.com"配置
看 docs/configuration.md 了解详细的配置选项。
部署
看 docs/deployment.md 获取生产部署说明。
贡献
欢迎投稿!请看 CONTRIBUTING.md 作为指导方针。
许可证
\[您的许可证在这里\]
______________________________________________________________________
架构图
组件体系结构
graph LR
subgraph "MCP Orchestrator Core"
API[API Layer]
Auth[Authentication & Authorization]
NLU[NL Understanding Agent]
Router[Routing Agent]
Translator[Query Translator]
Coordinator[Query Coordinator]
Merger[Result Merger]
Logger[Audit Logger]
Monitor[Health Monitor]
end
subgraph "Registry & Configuration"
EngineReg[Engine Registry]
CapReg[Capability Registry]
Config[Configuration Manager]
end
subgraph "Engine-Specific MCP Servers"
MCP1[Relational DB MCP]
MCP2[NoSQL MCP]
MCP3[Graph DB MCP]
MCP4[Cache MCP]
MCP5[Time Series MCP]
end
API --> Auth
Auth --> NLU
NLU --> Router
Router --> EngineReg
Router --> Translator
Translator --> Coordinator
Coordinator --> MCP1
Coordinator --> MCP2
Coordinator --> MCP3
Coordinator --> MCP4
Coordinator --> MCP5
MCP1 --> Merger
MCP2 --> Merger
MCP3 --> Merger
MCP4 --> Merger
MCP5 --> Merger
Merger --> API______________________________________________________________________
联系与支持
如有疑问、问题或意见,请 打开一个问题 或联系维修人员。
