基于MCP服务器的AI Agent数据库查询系统
一种现代人工智能代理系统,利用模型上下文协议(MCP)服务器通过矢量搜索和检索增强生成(RAG)实现智能数据库查询。
概述
该项目实现了一种基于智能代理的架构,该架构通过MCP服务器连接到Oracle数据库,处理自然语言查询,并使用向量嵌入和RAG技术返回上下文相关的结果。
建筑
User Query → AI Agent → MCP Server → Vector Database → RAG Pipeline → Results
↓
Oracle Database (via db_engine.py)该系统使用AI代理来:
- 解释自然语言查询
- 通过MCP服务器协议连接到数据库
- 使用向量嵌入执行语义搜索
- 使用上下文信息检索和增强结果
- 结构化、相关的回复
特性
- 自然语言查询:用简单的英语提问
- 语义搜索:根据含义查找相关信息,而不仅仅是关键字
- 上下文感知响应:利用RAG提供准确、有根据的答案
- Oracle数据库集成:通过现有的DB_engine直接连接到Oracle数据库
- MCP服务器:代理数据库通信的标准化协议
- 智能体编排:智能路由和多步骤查询处理
项目结构
.
├── agents/ # AI agent implementations
│ ├── base_agent.py
│ ├── database_agent.py
│ └── query_agent.py
├── mcp/ # MCP server integration
│ ├── server.py # Server with Oracle DB integration
│ ├── client.py
│ └── protocol.py
├── vector_db/ # Vector database connectors
│ ├── base.py
│ ├── chroma_store.py
│ └── factory.py
├── rag/ # RAG pipeline components
│ ├── pipeline.py
│ ├── retriever.py
│ ├── generator.py
│ └── chunker.py
├── embeddings/ # Embedding model utilities
│ ├── base.py
│ ├── openai_embeddings.py
│ └── factory.py
├── config/ # Configuration management
│ └── settings.py
├── db_engine.py # Oracle database connection
├── main.py # Main application entry point
├── example_mcp_server.py # MCP server example
├── example_usage.py # Usage examples
└── requirements.txt # Python dependencies安装
先决条件
- Python 3.9+
- Oracle数据库访问(在中配置 db_engine.py)
- OpenAI API密钥(用于嵌入和LLM)
设置
- 克隆存储库
cd aiAgents_database- 安装依赖项
pip install -r requirements.txt- 配置环境变量
cp .env.example .env- 编辑
.env将您的凭据归档
# LLM Configuration
LLM_API_KEY=your-openai-api-key
LLM_MODEL=gpt-4
LLM_PROVIDER=openai
# RAG Configuration
EMBEDDING_MODEL=text-embedding-ada-002
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
TOP_K_RESULTS=5
# MCP Server Configuration
MCP_SERVER_URL=http://localhost
MCP_SERVER_PORT=8080
# Vector Database
VECTOR_DB_TYPE=chroma用法
运行主应用程序
python main.py这将启动一个交互式CLI,您可以在其中:
- 询问自然语言查询
- 将文档添加到知识库
- 查看查询历史记录
- 获取命令帮助
示例会话:
Query: What are the sales trends for Q3?
Processing query...
Query type: retrieval
------------------------------------------------------------
Answer:
Based on the retrieved data, Q3 sales showed a 12% increase
compared to Q2, reaching $1.8M in total revenue...
------------------------------------------------------------
Sources: 3 documents
------------------------------------------------------------运行MCP服务器
单独启动MCP服务器以处理数据库请求:
python example_mcp_server.py服务器将于启动 localhost:8080 (可配置)具有以下端点:
/mcp-主MCP协议端点/health-健康检查端点
示例用法
运行示例以查看不同组件的运行情况:
python example_usage.py这表明:
- RAG查询处理
- MCP客户端使用情况
- 数据库代理交互
- 查询代理分类
组件
1.数据库代理(代理/数据库_agent.py)
协调整个查询处理工作流:
from agents import DatabaseAgent
agent = DatabaseAgent(vector_store, mcp_client, rag_pipeline)
result = agent.process("What are the top selling products?")2.查询代理(代理/query_agent.py)
解释和分类用户查询:
from agents import QueryAgent
query_agent = QueryAgent()
analysis = query_agent.process("Show me all customers")
# Returns: {'query_type': 'retrieval', 'action': 'search_database', ...}3.RAG管道(抹布/流水线.py)
处理文档检索和答案生成:
from rag import RAGPipeline
result = rag_pipeline.query("What is RAG?", k=5)
print(result['answer'])4.MCP服务器(mcp/server.py)
通过Oracle集成提供标准化的数据库访问:
from mcp import MCPServer
from db_engine import conn
server = MCPServer(db_connection=conn)
server.run()5.矢量存储(vector_db/chroma_store.py)
管理语义搜索的向量嵌入:
from vector_db import create_vector_store
vector_store = create_vector_store(config)
vector_store.add_documents(documents, metadatas)
results = vector_store.similarity_search(query, k=5)配置
系统通过环境变量和 config/settings.py 模块。
关键设置:
- LLM_API_KEY(LLM_API_密钥):您的OpenAI API密钥
- 嵌入模型:生成嵌入的模型
- CHUNK_SIZE:文档处理的文本块大小
- TOP_K_结果:要检索的结果数
- MCP_SERVER_PORT:MCP服务器的端口
数据库集成
该系统通过以下方式与您现有的Oracle数据库集成 db_engine.py:
from db_engine import conn, engine
# Connection is automatically used by MCP server
# SQLAlchemy engine available for ORM operationsAPI示例
将文档添加到知识库
documents = [
"Product X sold 1000 units in Q1",
"Revenue increased 25% year-over-year"
]
agent.add_knowledge(documents)使用筛选器进行查询
result = agent.process(
query="Show sales data",
context={'filter': {'category': 'electronics'}}
)直接MCP查询
from mcp import MCPClient
client = MCPClient(config)
response = client.query_database("SELECT * FROM dual")测试
运行示例用法以验证设置:
python example_usage.py预期输出显示查询分类和处理示例。
故障排除
导入错误
- 确保安装了所有依赖项:
pip install -r requirements.txt - 检查Python版本:
python --version(应为3.9+)
API密钥错误
- 验证您的
.env文件已存在LLM_API_KEY集 - 确保API密钥有效并且有足够的信用
数据库连接错误
- 检查 db_engine.py 凭证
- 验证Oracle数据库是否可访问
- 测试连接:
python -c "from db_engine import conn; print(conn)"
MCP服务器未启动
- 检查端口8080是否可用
- 在中尝试其他端口
.env:MCP_SERVER_PORT=8081
路线图
- \[\]支持多个矢量数据库后端(Pinecone、Weaviate)
- \[\]具有思维链的高级代理推理
- \[\]多模式RAG(图像、表格)
- \[\]实时交互的流式响应
- \[\]查询优化和结果缓存
- \[\]增强的MCP服务器功能(身份验证、速率限制)
- \[\]Web UI,便于交互
- \[\]从自然语言生成SQL查询
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
致谢
- 模型上下文协议(MCP)社区
- 用于GPT和嵌入的OpenAI
- ChromaDB用于矢量数据库
- Oracle数据库平台
- 开源AI代理框架
支持
对于问题或疑问:
- 在GitHub上打开一个问题
- 检查现有文档
- 查看中的示例代码 example_usage.py
______________________________________________________________________
使用克劳德代码构建 -一种用于数据库查询的智能人工智能代理系统
