项目简介
这是一个基于 Model Context Protocol (MCP) 的服务器,旨在帮助大语言模型(LLM)与各种关系型数据库进行交互。通过这个服务器,LLM 可以获取数据库的元数据(表结构、字段信息)、查看数据样例,以及安全地执行只读的 SQL 查询,从而更准确地理解和操作数据。
主要功能点
- 多数据库兼容: 支持连接到 MySQL, PostgreSQL, Oracle, SQL Server 和 SQLite 等多种主流数据库系统。
- 获取数据库元数据: 提供工具让 LLM 查询数据库中的所有表、表的字段、数据类型、是否主键、外键、索引以及字段注释等详细结构信息。
- 查看表数据样例: 允许 LLM 获取数据库表中少量数据作为样例,帮助理解数据内容和格式。
- 执行只读 SQL 查询: 支持安全地执行自定义的 SQL 查询,但严格限制为只读操作,防止对数据库造成修改或破坏。
- 数据隐私保护: 对查询结果中的敏感信息进行自动掩码处理,增强数据安全性。
- 标准协议通信: 使用 MCP 协议通过服务器推送事件 (SSE) 与兼容的 LLM 客户端进行通信。
安装步骤
- 克隆代码仓库:
git clone https://github.com/xiaoshi7915/universal-db-mcp-server.git cd universal-db-mcp-server - 安装 Python 依赖: 请确保你的系统安装了 Python 3.10 或更高版本。然后安装项目所需的依赖库:
pip install -r requirements.txt - 准备数据库驱动: 根据你要连接的数据库类型,可能需要额外安装相应的 Python 数据库驱动(例如,连接 Oracle 可能需要 cx_Oracle,连接 SQL Server 可能需要 pyodbc 和相应的 ODBC Driver)。
服务器配置 (供MCP客户端使用)
这个服务器通常由兼容的 MCP 客户端(如某些 LLM 桌面应用)根据配置自动启动和管理。你需要在客户端的配置文件中添加此 MCP 服务器的启动信息。
以下是配置时需要关注的关键信息点及如何填写客户端配置文件:
- 服务器名称 (Server Name): 在客户端中为此服务器指定一个易于识别的名称,例如 'db-tool' 或 'universal-database'.
- 启动命令 (Command): 这是客户端用来启动服务器的脚本路径。通常指向仓库根目录下的 './start.sh' 脚本。你需要提供 'start.sh' 脚本在你本地文件系统中的完整路径。
- 启动参数 (Args): 这些是传递给 'start.sh' 脚本的命令行参数,用于配置数据库连接等信息。常用的参数包括:
- '--db-type <类型>': 指定数据库类型 (mysql, postgresql, oracle, mssql, sqlite)。
- '--db-host <主机>': 数据库服务器地址。
- '--db-port <端口>': 数据库端口。
- '--db-user <用户>': 数据库用户名。
- '--db-password <密码>': 数据库密码。
- '--db-name <数据库名>': 要连接的数据库名称。
- '--host <监听地址>': MCP 服务器监听的IP地址 (通常设为 127.0.0.1 或 localhost)。
- '--port <端口>': MCP 服务器监听的端口。
- 环境变量 (Env): 你也可以选择通过环境变量来传递数据库配置信息,如 'DB_TYPE', 'DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME', 'DB_PORT' 等。
客户端配置文件示例 (JSON 格式):
客户端配置文件通常有一个 'mcpServers' 部分,你可以在其中添加一个条目,例如:
{ "mcpServers": { "database": { // <-- 这是你给服务器起的名字 (Server Name) "command": "/path/to/your/universal-db-mcp-server/start.sh", // <-- 替换为start.sh的实际路径 (Command) "args": [ // <-- 启动参数列表 (Args) "--db-type", "mysql", "--db-host", "localhost", "--db-port", "3306", "--db-user", "your_db_user", "--db-password", "your_db_password", "--db-name", "your_database_name" ], "env": { // <-- 或者通过环境变量配置 (Env) "DB_TYPE": "mysql" // ... 其他环境变量 } } } }
注意: 具体的配置格式和文件位置取决于你使用的 MCP 客户端软件。请参考你的 LLM 客户端的使用文档。配置完成后,当 LLM 需要访问数据库时,客户端会自动根据配置启动并连接到这个数据库 MCP 服务器。
基本使用方法 (通过LLM客户端)
一旦服务器在 LLM 客户端中配置并启动,你就可以通过与 LLM 进行自然语言对话来使用其数据库功能。LLM 会根据你的请求,调用数据库 MCP 服务器提供的工具。
你可以尝试对 LLM 提出以下类型的请求:
- "请告诉我数据库的结构,包括所有表和它们的字段信息。" (LLM 可能会调用 'get_database_metadata' 工具)
- "展示一下用户表 (users) 的前几行样例数据。" (LLM 可能会调用 'get_sample_data' 工具)
- "执行一个 SQL 查询:'SELECT name, email FROM customers WHERE city = 'Beijing' LIMIT 10;'" (LLM 可能会调用 'execute_readonly_query' 工具)
服务器会执行相应的操作,并将结果(如表格格式的元数据或查询结果)返回给 LLM,LLM 再将信息以友好的方式呈现给你。
信息
分类
数据库与文件