项目简介
MCP数据库工具箱是一个基于Model Context Protocol (MCP) 的服务器实现,它将各种数据库(包括SQL、NoSQL、图数据库和数据仓库)的操作封装成标准化的工具。AI代理可以通过MCP协议与该工具箱进行通信,从而执行数据库查询、管理等任务,无需直接处理复杂的数据库驱动和连接细节。它以Docker镜像形式提供,开箱即用,支持多种主流数据库。
主要功能点
- 统一数据库接口: 通过单一的MCP协议,连接和操作20多种不同类型的数据库。
- 工具化数据库操作: 将常见的数据库操作(如列出表、执行SQL查询等)封装成可供AI模型调用的标准化工具(Tools)。
- 零配置快速启动: 提供预构建的Docker镜像,大部分主流数据库只需通过环境变量配置凭证即可快速启动。
- 灵活的工具定义: 对于某些数据库或自定义需求,支持通过YAML文件定义额外的工具。
- 企业级安全: 通过环境变量或Docker Secrets等安全机制管理数据库凭证。
- 云原生支持: 针对容器化和无服务器环境进行优化。
安装步骤
- 安装Docker: 确保您的系统已安装Docker。
- 拉取基础镜像: 打开终端或命令行工具,执行以下命令拉取MCP数据库工具箱的基础Docker镜像:
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest - 准备数据库凭证: 根据您要连接的数据库类型,准备相应的连接信息,例如数据库主机、端口、用户名、密码等。这些信息通常以环境变量的形式在启动Docker容器时提供。
- 准备自定义工具文件(如果需要): 对于一些数据库(如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'之前需要设置的环境变量。这些变量的值将直接用于数据库的连接配置。请务必将示例中的占位符替换为您实际的数据库连接信息。
基本使用方法
- 启动MCP服务器: AI代理或您自己的MCP客户端将根据上述配置,通过执行'docker'命令启动MCP数据库工具箱容器。该容器即作为MCP服务器运行。
- 建立连接与初始化: 客户端向MCP服务器发送MCP 'initialize' JSON-RPC请求,协商协议版本并获取服务器的基本信息和能力声明。
- 发现可用工具: 客户端发送MCP 'tools/list' JSON-RPC请求,从MCP服务器获取所有可用的数据库操作工具列表。这些工具包括其名称、功能描述和所需的参数 schema。例如,您可能会发现 'list_tables'(列出数据库中的表信息)和 'execute_sql'(执行任意SQL查询)等工具。
- 调用数据库工具: 客户端根据AI代理的需求,选择并调用合适的数据库操作工具。例如,AI代理可以构造一个MCP 'tools/call' 请求,指定调用 'execute_sql' 工具,并提供'sql'参数(如 'SELECT * FROM users;')。
- 接收并处理结果: MCP服务器执行相应的数据库操作,并将结果(通常是JSON格式的数据)通过JSON-RPC响应返回给客户端。客户端或AI代理随后解析这些结果,以供进一步分析或决策。
信息
分类
数据库与文件