数据库连接服务器

一个轻量级的Model Context Protocol (MCP)服务器,为GitHub Copilot和其他MCP客户端提供数据库连接支持,可直接对本地或远程数据库执行SQL查询,并具备智能连接管理功能。

  • by tannerpace
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tannerpace/sql-mcp

使用说明

SQL MCP 服务器

一个轻量级的模型上下文协议(MCP)服务器,为GitHub Copilot和其他MCP客户端提供数据库连接功能。通过智能连接管理,可直接在本地或远程数据库上执行SQL查询。

特点/特性

  • 🔌(电源插头) 多数据库支持Oracle、MySQL、PostgreSQL、SQLite
  • 🔄 旋转箭头(表示循环、重复或刷新等含义) 读写分离自动读卡器/写卡器连接管理
  • 🔒 表示“锁”或“安全”的符号。 事务管理自动提交/回滚处理
  • ⚡(闪电符号,常用于表示速度、能量或惊人的事物) 异步操作对所有数据库操作提供全面的异步/await支持
  • 🛡️(护盾符号,无实际含义,可理解为“护盾”或“防御”) 参数化查询使用参数绑定进行安全查询执行
  • 📊 表格 模式内省通过MCP资源获取数据库模式信息

快速入门

  1. 安装依赖项

    pip install -r requirements.txt
    
  2. 配置数据库

    cp .env.example .env
    # Edit .env with your database credentials
    
  3. 启动服务器

    python start.py
    # Or directly: python main.py
    

数据库配置

服务器根据环境变量自动检测您的数据库类型。复制 .env.example to .env 并为您的数据库进行配置:

Oracle 数据库

ORACLE_HOST=localhost
ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_SERVICE_NAME=ORCL

MySQL 数据库

DB_HOST=localhost
DB_USER=your_username
DB_PASS=your_password
DB_NAME=your_database

PostgreSQL 数据库

POSTGRES_HOST=localhost
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_DB=your_database

SQLite 数据库

SQLITE_PATH=./database.db

读写分离

对于生产环境设置,请配置单独的读取器连接:

# MySQL example
DB_HOST=mysql-primary.example.com
DB_HOST_READER=mysql-replica.example.com

# Oracle example  
ORACLE_HOST=oracle-primary.example.com
ORACLE_HOST_READER=oracle-replica.example.com

MCP 工具

服务器提供以下MCP工具:

execute_sql_query

执行一条单独的SQL查询:

{
  "query": "SELECT * FROM users WHERE id = ?",
  "parameters": [123],
  "force_writer": false
}

execute_sql_transaction

在事务中执行多个查询:

{
  "queries": [
    {"query": "INSERT INTO users (name) VALUES (?)", "parameters": ["John"]},
    {"query": "UPDATE users SET active = 1 WHERE name = ?", "parameters": ["John"]}
  ]
}

get_database_info

获取数据库配置信息:

{}

test_database_connection

测试数据库连接性:

{}

MCP资源公司

database://schema

获取完整的数据库模式信息,包括表、列和数据类型。

连接管理

该连接器智能地管理数据库连接:

  • SELECT 查询 → 使用阅读器连接(如果已配置)
  • 插入/更新/删除 → 使用作者连接
  • 交易 → 始终使用写入连接
  • 自动提交 → 提交成功事务
  • 自动回滚 回滚失败的事务

发展

项目结构

sql-mcp/
├── connector.py      # Core database connector (translated from connector.js)
├── main.py          # FastMCP server implementation
├── start.py         # Startup script with environment checking
├── requirements.txt # Python dependencies
├── .env.example     # Environment configuration template
├── database.json    # Database configuration documentation
└── README.md        # This file

依赖项

核心依赖项:

  • fastmcp - MCP服务器框架
  • uvicorn - ASGI服务器
  • python-dotenv - 加载环境变量

数据库驱动程序(按需安装):

  • oracledb - Oracle 数据库
  • aiomysql - 支持异步的MySQL
  • asyncpg - 支持异步的PostgreSQL
  • aiosqlite - 支持异步的SQLite

在紫外线(UV)下跑步

这个项目支持UV包管理器:

uv pip install -r requirements.txt
uv run python main.py

FastMCP 集成

这个服务器是基于FastMCP框架构建的。FastMCP的文档可以通过MCP访问,网址为:https://gofastmcp.com/mcp

安全注意事项

  • 始终使用参数化查询以防止SQL注入
  • 考虑为只读连接使用只读数据库用户
  • 将敏感凭据存储在环境变量中,绝不要存储在代码中
  • 为生产数据库使用连接加密(SSL/TLS)

许可证

这个项目是开源的。详情请参阅许可证文件。

做出贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 如适用,请添加测试
  5. 提交一个拉取请求

支持

对于问题和疑问:

  • 检查数据库配置 .env
  • 验证与数据库的连接性 test_database_connection 工具
  • 查看服务器日志以获取错误详情