
Database Schema MCP Server

2025.03.27
0
Python数据库模式管理数据库工具数据库
mcp-server 是一个强大的数据库模式服务,提供从多种数据库类型(如 PostgreSQL、MySQL、SQLite 等)读取和暴露数据库模式的工具。它能够连接不同类型的数据库,列出数据库中的所有表,获取特定表的详细模式信息,以及获取包括表、视图和索引在内的完整数据库模式。
View on GitHub
Overview
基本能力
产品定位
mcp-server 是一个专注于数据库模式管理的服务,旨在为开发者提供便捷的数据库模式读取和暴露功能。
核心功能
- 连接不同类型的数据库(PostgreSQL、MySQL、SQLite 等)
- 列出数据库中的所有表
- 获取特定表的详细模式信息
- 获取包括表、视图和索引在内的完整数据库模式
适用场景
- 数据库模式分析和文档生成
- 数据库迁移和升级
- 数据库模式比较和同步
- 数据库驱动的应用开发
工具列表
- Connect to Database:连接到指定类型的数据库。
- List Tables:列出数据库中的所有表。
- Get Table Schema:获取特定表的详细模式信息。
- Get Database Schema:获取包括表、视图和索引在内的完整数据库模式。
常见问题解答
- 如何确保数据库连接的安全性?
- 不要在前端代码中暴露敏感数据库凭证。
- 使用环境变量或安全配置管理来存储凭证。
- 实施适当的访问控制和认证。
- 尽可能使用 SSL/TLS 进行数据库连接。
使用教程
使用依赖
- Python 3.x
- Virtual environment (推荐)
安装教程
- 创建并激活虚拟环境:
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# 在 Unix/macOS 上:
source venv/bin/activate
# 在 Windows 上:
venv\Scripts\activate
- 安装依赖:
pip install -r requirements.txt
Windows MCP 安装
- 安装 Node.js:
- 从 Node.js 官方网站 下载并安装。
-
在 PowerShell 中运行
node --version
验证安装。 -
更新系统路径:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
- 如果 Node.js 未被识别,手动添加到 Path:
- 按下
Windows + R
- 输入
sysdm.cpl
并回车 - 转到 "高级" 选项卡
- 点击 "环境变量"
- 在 "系统变量" 下,找到并选择 "Path"
- 点击 "编辑"
- 添加
C:\Program Files\nodejs\
(如果不存在) - 在所有窗口中点击 "OK"
-
重启计算机
-
安装 MCP:
- 下载
mcp-install.ps1
脚本 - 解禁文件(右键 → 属性 → 解禁)
- 以管理员身份打开 PowerShell 并运行:
powershell Set-ExecutionPolicy unrestricted
- 导航到脚本位置并运行:
powershell .\mcp-install.ps1 @modelcontextprotocol/server-postgres
- 完全退出 Claude Desktop(检查系统托盘)
- 在
C:\Users\YOUR_USERNAME\AppData\Roaming\Claude\claude_desktop_config.json
中配置服务器 - 将 MCP 服务器配置复制到 Cursor 中的
mcp.json
- 重启 Cursor
调试方式
启动服务器:
python src/server.py
使用工具进行调试:
# 连接到数据库
config = {
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "mydb",
"username": "user",
"password": "password"
}
await connect_database(config)
# 获取完整模式
schema = await get_database_schema("postgresql://user:password@localhost:5432/mydb")
# 分析模式
print(f"Database has {len(schema['tables'])} tables")
for table_name, table_info in schema['tables'].items():
print(f"\nTable: {table_name}")
print(f"Columns: {len(table_info['columns'])}")
print(f"Primary Keys: {table_info['primary_keys']}")
print(f"Foreign Keys: {len(table_info['foreign_keys'])}")
许可证
None