项目简介
DBAgent 是一个利用模型上下文协议(MCP)构建的 Agent 应用示例。它包含 MCP 客户端和服务端组件,旨在演示如何通过模块化的 MCP 服务器为大型语言模型(LLM)提供访问数据库、分析图片和执行网络搜索等外部工具的能力,从而构建更强大、能处理复杂任务的 Agent。
主要功能点
- 数据库交互能力: 通过定制的工具(仓库中未完全展示具体代码,但系统提示和 README 提及)允许 Agent 执行 SQL 查询、读取表结构等数据库操作。
- 图片分析能力: 利用基于 MCP 的图像分析服务器,Agent 可以调用工具对图片内容进行识别和描述。
- 网络搜索能力: 利用基于 MCP 的网络搜索服务器,Agent 可以调用工具获取最新的网络信息。
- MCP 客户端框架: 包含一个 MCP 客户端实现,负责连接配置的 MCP 服务器,发现工具,并将 LLM 的工具调用请求转发给相应的服务器执行。
- LLM 交互集成: 整合 LLM API,通过系统提示引导 LLM 在需要时调用可用的工具,并处理工具返回结果。
安装步骤
- 安装 Python: 确保安装了 Python 3.10 或更高版本(推荐 3.12+)。
- 安装 uv: 安装现代 Python 包管理器 'uv'。
curl -LsSf https://astral.sh/uv/install.sh | sh # 根据提示将uv添加到PATH - 克隆仓库: 克隆 DBAgent 仓库到本地。
git clone https://github.com/liuquehuan/DBAgent.git cd DBAgent - 创建并激活虚拟环境:
mkdir mcp_server # 如果不存在 cd mcp_server uv python pin 3.12 # 可选,指定Python版本 uv init uv add "mcp[cli]" python-dotenv httpx openai psycopg2 # 添加必要的依赖 cd .. source mcp_server/.venv/bin/activate - 安装 LLM API 依赖: 安装 'dbagent.py' 所需的 LLM API 客户端库(如 'openai' 或其他)。如果使用 OpenAI,确保已安装 'openai'。
# 确保在虚拟环境激活状态下 uv add openai httpx python-dotenv psycopg2 - 数据库设置: 根据 'README.md' 中的 SQL 脚本,设置 PostgreSQL 数据库,并导入 'furnitures.csv', 'imgs.csv', '3000_imgs.csv' 数据。
- 配置 LLM API 密钥和数据库连接: 在项目根目录下创建 '.env' 文件,设置 LLM API 密钥和可能的数据库连接信息。例如:
OPENAI_API_KEY="你的OpenAI API密钥" OPENAI_BASE_URL="https://api.openai.com/v1/chat/completions" # 或其他模型的API地址 OPENAI_MODEL="gpt-4o" # 或其他模型名称 # 可能需要数据库连接信息,根据实际使用的数据库工具实现确定 - 配置 MCP 服务器: 复制或创建 'servers_config.json' 文件。需要根据你的系统路径修改服务器脚本的绝对路径。
服务器配置
DBAgent 客户端 ('dbagent.py') 通过读取 'servers_config.json' 文件来知晓并连接 MCP 服务器。这个 JSON 文件包含一个 'mcpServers' 对象,其中键是服务器名称,值是该服务器的配置对象。
每个 MCP 服务器的配置对象应包含以下关键信息:
- 'command': 启动该 MCP 服务器进程的命令。通常是服务器脚本的解释器(如 'python')或特定的启动工具(如 'npx' 结合 '@modelcontextprotocol/inspector')。
- 'args': 传递给 'command' 的参数列表。例如,服务器脚本文件的路径。
- 'env': (可选) 为服务器进程设置的环境变量字典。
示例配置(基于仓库内容):
{ "mcpServers": { "image-analyzer-server": { "command": "python", "args": [ "/path/to/your/DBAgent/mcp_server/image_analyzer.py" // 将此路径替换为 image_analyzer.py 的实际绝对路径 ], "env": {} // 可选,如果需要为该服务器设置特定环境变量 }, "web-search-server": { "command": "python", "args": [ "/path/to/your/DBAgent/mcp_server/web_search.py" // 将此路径替换为 web_search.py 的实际绝对路径 ], "env": { "BIGMODEL_API_KEY": "换成你的智谱AI API KEY" // 示例,web search工具可能需要的环境变量 } } // 如果有数据库相关的MCP服务器,也在此添加配置 // 例如: // "database-server": { // "command": "python", // "args": [ // "/path/to/your/DBAgent/mcp_server/database_tool_server.py" // 假设的数据库工具服务器脚本 // ], // "env": { // "DATABASE_URL": "postgresql://user:password@host:port/dbname" // } // } } }
请根据你实际部署的服务器脚本位置和所需的启动方式(例如,使用 'npx @modelcontextprotocol/inspector' 启动进行调试)修改 'command' 和 'args'。
基本使用方法
- 激活虚拟环境: 确保你位于项目目录下,并且虚拟环境已激活('source mcp_server/.venv/bin/activate')。
- 运行 Agent 客户端:
python dbagent.py - 与 Agent 交互: 程序启动后,将在命令行提示你输入问题。你可以输入需要 Agent 完成的任务,Agent 将利用配置的 MCP 服务器提供的工具来尝试完成任务。
- 退出: 输入 'quit', 'exit', 或 '\q' 退出程序。
信息
分类
数据库与文件