项目简介

MCP数据库工具箱是一个基于Model Context Protocol (MCP) 的服务器实现,它将各种数据库(包括SQL、NoSQL、图数据库和数据仓库)的操作封装成标准化的工具。AI代理可以通过MCP协议与该工具箱进行通信,从而执行数据库查询、管理等任务,无需直接处理复杂的数据库驱动和连接细节。它以Docker镜像形式提供,开箱即用,支持多种主流数据库。

主要功能点

  • 统一数据库接口: 通过单一的MCP协议,连接和操作20多种不同类型的数据库。
  • 工具化数据库操作: 将常见的数据库操作(如列出表、执行SQL查询等)封装成可供AI模型调用的标准化工具(Tools)。
  • 零配置快速启动: 提供预构建的Docker镜像,大部分主流数据库只需通过环境变量配置凭证即可快速启动。
  • 灵活的工具定义: 对于某些数据库或自定义需求,支持通过YAML文件定义额外的工具。
  • 企业级安全: 通过环境变量或Docker Secrets等安全机制管理数据库凭证。
  • 云原生支持: 针对容器化和无服务器环境进行优化。

安装步骤

  1. 安装Docker: 确保您的系统已安装Docker。
  2. 拉取基础镜像: 打开终端或命令行工具,执行以下命令拉取MCP数据库工具箱的基础Docker镜像:
    docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
  3. 准备数据库凭证: 根据您要连接的数据库类型,准备相应的连接信息,例如数据库主机、端口、用户名、密码等。这些信息通常以环境变量的形式在启动Docker容器时提供。
  4. 准备自定义工具文件(如果需要): 对于一些数据库(如SQLite、Redshift、MongoDB等),您可能需要创建一个 '.yaml' 文件来定义特定的数据库操作工具。请参考仓库文档中对应数据库的配置示例。

服务器配置示例 (PostgreSQL)

以下是MCP客户端如何配置启动一个连接PostgreSQL数据库的MCP服务器的示例(JSON格式,MCP客户端实际使用时替换其中的占位符,MCP客户端无需理解Docker命令细节):

{
  "postgres_server": {
    "command": "docker",
    "args": [
      "run", "--rm", "-i",
      "-e", "POSTGRES_HOST",
      "-e", "POSTGRES_DATABASE",
      "-e", "POSTGRES_USER",
      "-e", "POSTGRES_PASSWORD",
      "-e", "POSTGRES_PORT",
      "us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
      "--prebuilt", "postgres",
      "--stdio"
    ],
    "env": {
      "POSTGRES_HOST": "数据库主机地址 (例如: localhost 或 IP 地址)",
      "POSTGRES_DATABASE": "要连接的数据库名称 (例如: mydatabase)",
      "POSTGRES_USER": "数据库登录用户名 (例如: postgres)",
      "POSTGRES_PASSWORD": "数据库登录密码",
      "POSTGRES_PORT": "数据库服务端口 (默认为 5432)"
    }
  }
}
  • 配置说明:
    • '"command": "docker"':指示MCP客户端使用'docker'命令来启动MCP服务器。
    • '"args"':一个字符串数组,包含了传递给'docker'命令的所有参数,用于启动和配置MCP数据库工具箱的Docker容器。
      • '--rm -i': 这是标准的Docker运行参数,'--rm'表示容器停止后自动删除,'-i'表示保持标准输入流开放,以支持MCP协议的'stdio'传输模式。
      • '-e <ENV_VAR>': 这些参数用于将后续'env'中定义的环境变量(如'POSTGRES_HOST'、'POSTGRES_USER'等)传递给运行中的Docker容器,用于配置数据库连接。
      • 'us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest': 这是MCP数据库工具箱的Docker镜像的完整名称,指向了您之前拉取的基础镜像。
      • '--prebuilt postgres': 这是MCP数据库工具箱的特定参数,指示它使用针对PostgreSQL数据库的预配置工具集。
      • '--stdio': 这是MCP服务器的启动参数,指示它通过标准输入/输出流与MCP客户端进行通信,这是MCP协议支持的一种传输方式。
    • '"env"':这是一个键值对对象,包含了MCP客户端在执行'command'之前需要设置的环境变量。这些变量的值将直接用于数据库的连接配置。请务必将示例中的占位符替换为您实际的数据库连接信息。

基本使用方法

  1. 启动MCP服务器: AI代理或您自己的MCP客户端将根据上述配置,通过执行'docker'命令启动MCP数据库工具箱容器。该容器即作为MCP服务器运行。
  2. 建立连接与初始化: 客户端向MCP服务器发送MCP 'initialize' JSON-RPC请求,协商协议版本并获取服务器的基本信息和能力声明。
  3. 发现可用工具: 客户端发送MCP 'tools/list' JSON-RPC请求,从MCP服务器获取所有可用的数据库操作工具列表。这些工具包括其名称、功能描述和所需的参数 schema。例如,您可能会发现 'list_tables'(列出数据库中的表信息)和 'execute_sql'(执行任意SQL查询)等工具。
  4. 调用数据库工具: 客户端根据AI代理的需求,选择并调用合适的数据库操作工具。例如,AI代理可以构造一个MCP 'tools/call' 请求,指定调用 'execute_sql' 工具,并提供'sql'参数(如 'SELECT * FROM users;')。
  5. 接收并处理结果: MCP服务器执行相应的数据库操作,并将结果(通常是JSON格式的数据)通过JSON-RPC响应返回给客户端。客户端或AI代理随后解析这些结果,以供进一步分析或决策。

信息

分类

数据库与文件