Database Schema MCP Server

Database Schema MCP Server

site icon
2025.03.27 0
Python数据库模式管理数据库工具数据库
mcp-server 是一个强大的数据库模式服务,提供从多种数据库类型(如 PostgreSQL、MySQL、SQLite 等)读取和暴露数据库模式的工具。它能够连接不同类型的数据库,列出数据库中的所有表,获取特定表的详细模式信息,以及获取包括表、视图和索引在内的完整数据库模式。
View on GitHub

Overview

基本能力

产品定位

mcp-server 是一个专注于数据库模式管理的服务,旨在为开发者提供便捷的数据库模式读取和暴露功能。

核心功能

  • 连接不同类型的数据库(PostgreSQL、MySQL、SQLite 等)
  • 列出数据库中的所有表
  • 获取特定表的详细模式信息
  • 获取包括表、视图和索引在内的完整数据库模式

适用场景

  • 数据库模式分析和文档生成
  • 数据库迁移和升级
  • 数据库模式比较和同步
  • 数据库驱动的应用开发

工具列表

  1. Connect to Database:连接到指定类型的数据库。
  2. List Tables:列出数据库中的所有表。
  3. Get Table Schema:获取特定表的详细模式信息。
  4. Get Database Schema:获取包括表、视图和索引在内的完整数据库模式。

常见问题解答

  1. 如何确保数据库连接的安全性?
  2. 不要在前端代码中暴露敏感数据库凭证。
  3. 使用环境变量或安全配置管理来存储凭证。
  4. 实施适当的访问控制和认证。
  5. 尽可能使用 SSL/TLS 进行数据库连接。

使用教程

使用依赖

  1. Python 3.x
  2. Virtual environment (推荐)

安装教程

  1. 创建并激活虚拟环境:
# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# 在 Unix/macOS 上:
source venv/bin/activate
# 在 Windows 上:
venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt

Windows MCP 安装

  1. 安装 Node.js:
  2. Node.js 官方网站 下载并安装。
  3. 在 PowerShell 中运行 node --version 验证安装。

  4. 更新系统路径:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
  1. 如果 Node.js 未被识别,手动添加到 Path:
  2. 按下 Windows + R
  3. 输入 sysdm.cpl 并回车
  4. 转到 "高级" 选项卡
  5. 点击 "环境变量"
  6. 在 "系统变量" 下,找到并选择 "Path"
  7. 点击 "编辑"
  8. 添加 C:\Program Files\nodejs\(如果不存在)
  9. 在所有窗口中点击 "OK"
  10. 重启计算机

  11. 安装 MCP:

  12. 下载 mcp-install.ps1 脚本
  13. 解禁文件(右键 → 属性 → 解禁)
  14. 以管理员身份打开 PowerShell 并运行: powershell Set-ExecutionPolicy unrestricted
  15. 导航到脚本位置并运行: powershell .\mcp-install.ps1 @modelcontextprotocol/server-postgres
  16. 完全退出 Claude Desktop(检查系统托盘)
  17. C:\Users\YOUR_USERNAME\AppData\Roaming\Claude\claude_desktop_config.json 中配置服务器
  18. 将 MCP 服务器配置复制到 Cursor 中的 mcp.json
  19. 重启 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