项目简介

DBAgent 是一个利用模型上下文协议(MCP)构建的 Agent 应用示例。它包含 MCP 客户端和服务端组件,旨在演示如何通过模块化的 MCP 服务器为大型语言模型(LLM)提供访问数据库、分析图片和执行网络搜索等外部工具的能力,从而构建更强大、能处理复杂任务的 Agent。

主要功能点

  • 数据库交互能力: 通过定制的工具(仓库中未完全展示具体代码,但系统提示和 README 提及)允许 Agent 执行 SQL 查询、读取表结构等数据库操作。
  • 图片分析能力: 利用基于 MCP 的图像分析服务器,Agent 可以调用工具对图片内容进行识别和描述。
  • 网络搜索能力: 利用基于 MCP 的网络搜索服务器,Agent 可以调用工具获取最新的网络信息。
  • MCP 客户端框架: 包含一个 MCP 客户端实现,负责连接配置的 MCP 服务器,发现工具,并将 LLM 的工具调用请求转发给相应的服务器执行。
  • LLM 交互集成: 整合 LLM API,通过系统提示引导 LLM 在需要时调用可用的工具,并处理工具返回结果。

安装步骤

  1. 安装 Python: 确保安装了 Python 3.10 或更高版本(推荐 3.12+)。
  2. 安装 uv: 安装现代 Python 包管理器 'uv'。
    curl -LsSf https://astral.sh/uv/install.sh | sh
    # 根据提示将uv添加到PATH
  3. 克隆仓库: 克隆 DBAgent 仓库到本地。
    git clone https://github.com/liuquehuan/DBAgent.git
    cd DBAgent
  4. 创建并激活虚拟环境:
    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
  5. 安装 LLM API 依赖: 安装 'dbagent.py' 所需的 LLM API 客户端库(如 'openai' 或其他)。如果使用 OpenAI,确保已安装 'openai'。
    # 确保在虚拟环境激活状态下
    uv add openai httpx python-dotenv psycopg2
  6. 数据库设置: 根据 'README.md' 中的 SQL 脚本,设置 PostgreSQL 数据库,并导入 'furnitures.csv', 'imgs.csv', '3000_imgs.csv' 数据。
  7. 配置 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" # 或其他模型名称
    # 可能需要数据库连接信息,根据实际使用的数据库工具实现确定
  8. 配置 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'。

基本使用方法

  1. 激活虚拟环境: 确保你位于项目目录下,并且虚拟环境已激活('source mcp_server/.venv/bin/activate')。
  2. 运行 Agent 客户端:
    python dbagent.py
  3. 与 Agent 交互: 程序启动后,将在命令行提示你输入问题。你可以输入需要 Agent 完成的任务,Agent 将利用配置的 MCP 服务器提供的工具来尝试完成任务。
  4. 退出: 输入 'quit', 'exit', 或 '\q' 退出程序。

信息

分类

数据库与文件