Skip to main content
Glama
CGAdmin544

多数据库 MCP Server

by CGAdmin544

多数据库 MCP Server

一个支持 Oracle / SQL Server / MySQL / PostgreSQL / SQLite 的 MCP(Model Context Protocol)服务器。底层用 SQLAlchemy 2.x 作为统一抽象层,把常用数据库操作封装为 MCP 工具,供 Claude Desktop、WorkBuddy 等 MCP 客户端调用。接口与原 Oracle 版完全兼容(execute_query / list_tables / describe_table / test_connection),原有仅配置 ORACLE_* 的旧环境无需改动即可继续工作。

功能

工具

说明

execute_query

执行 SELECT 查询(仅 SELECT/WITH),返回 JSON,最多 1000 行;支持 schemaName 指定默认命名空间

list_tables

列出指定 schema/数据库下的表名(不传则列出当前默认命名空间下的表)

describe_table

查看表结构(列名、类型、是否可空);支持 schemaName 限定所属 schema

test_connection

测试数据库连接是否正常

安全机制:

  • 只读模式(DB_MODE=readonly,默认)下禁止 INSERT/UPDATE/DELETE;

  • SQL 语法白名单校验(限定语句类型、禁止注释与多语句)+ 绑定变量传参,双重防注入;

  • 连接池复用(SQLAlchemy pool_pre_ping 探活)。

Related MCP server: mysql-mcp-zag

环境要求

  • Python 3.10+

  • 目标数据库可达,并安装对应驱动(见安装说明)

安装

# 1) 创建并激活虚拟环境(可选但推荐)
python -m venv .venv
.\.venv\Scripts\activate        # Windows
source .venv/bin/activate       # Linux / macOS

# 2) 以可编辑模式安装(会自动装好 mcp、sqlalchemy、各数据库驱动、python-dotenv)
pip install -e .

# 只装某个数据库驱动(可选):
pip install -e ".[mysql]"        # 仅 MySQL
pip install -e ".[mssql,postgres]"  # SQL Server + PostgreSQL

或手动安装依赖:

pip install "mcp<2" sqlalchemy oracledb pyodbc pymysql psycopg2-binary python-dotenv

注意:mcp 需锁定 <2(2.x 已将 FastMCP 重命名为 MCPServer,与本服务器代码不兼容)。

配置

连接信息从环境变量读取,支持两种方式(方式一优先级最高):

方式 A:完整 SQLAlchemy URL

DATABASE_URL=mysql+pymysql://user:pw@localhost:3306/mydb

方式 B:拆分字段

DB_TYPE=oracle            # oracle / sqlserver / mysql / postgres / sqlite
DB_USER=your_user
DB_PASSWORD=your_password
DB_HOST=localhost
DB_PORT=1521
DB_NAME=orcl_service_or_dbname
DB_MODE=readonly          # readonly(默认,禁 DML)/ readwrite

DB_TYPE 对应的 URL 模板(供参考):

DB_TYPE

URL 模板

oracle

oracle+oracledb://user:pw@host:port/?service_name=XXX

sqlserver

mssql+pyodbc://user:pw@host:1433/db?driver=ODBC+Driver+17+for+SQL+Server

mysql

mysql+pymysql://user:pw@host:3306/db

postgres

postgresql+psycopg2://user:pw@host:5432/db

sqlite

sqlite:///C:/path/to/app.db

Oracle 兼容(thick 模式,仅 11g 等老库需要)
thin 模式(默认)无需本地 Oracle 客户端,但仅支持 Oracle 12.1+。若目标库为 11g,必须启用 thick 模式:安装 Oracle Instant Client(如 11.2 / 19c,需 64 位),并设置 ORACLE_CLIENT_LIB_DIR

ORACLE_CLIENT_LIB_DIR=E:\A_DevTool\instantclient_11_2

实测:Instant Client 11.2(64 位)+ python-oracledb 4.x 可正常连接 11g 库。旧环境只配 ORACLE_* 变量时,DB_TYPE 缺省会按 Oracle 处理,完全向后兼容。

使用

三种启动方式任选其一:

# 方式 1:pip install -e . 之后使用全局命令
oracle-mcp-server

# 方式 2:带预校验与启动横幅的启动脚本(推荐)
python run_server.py

# 方式 3:直接启动服务器主程序
python server.py

启动脚本 run_server.py 会在进入主循环前预校验必需环境变量(缺失时给出中文提示退出)并打印脱敏配置摘要;server.py 则直接进入 stdio 主循环。两者均可作为 MCP 客户端的启动命令。

接入 MCP 客户端

WorkBuddy

编辑 ~/.workbuddy/mcp.json(注意不是 .mcp.json),或参考本仓库的 mcp.json 示例:

{
  "mcpServers": {
    "oracle": {
      "command": "python",
      "args": ["F:/A_Study/oracle-mcp-server/run_server.py"],
      "env": {
        "DB_TYPE": "oracle",
        "ORACLE_HOST": "localhost",
        "ORACLE_PORT": "1521",
        "ORACLE_SERVICE_NAME": "XEPDB1",
        "ORACLE_USER": "your_user",
        "ORACLE_PASSWORD": "your_password",
        "ORACLE_MODE": "readonly"
      }
    }
  }
}

其它数据库示例(替换 env 即可):

{
  "mcpServers": {
    "mysql": {
      "command": "python",
      "args": ["F:/A_Study/oracle-mcp-server/run_server.py"],
      "env": {
        "DB_TYPE": "mysql",
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_NAME": "mydb",
        "DB_USER": "your_user",
        "DB_PASSWORD": "your_password",
        "DB_MODE": "readonly"
      }
    }
  }
}

要点:

  • command 建议写 Python 解释器的绝对路径(如虚拟环境 F:/A_Study/oracle-mcp-server/.venv/Scripts/python.exe),避免用到没有依赖的解释器;

  • env 中注入数据库连接信息后,可不依赖 .env 文件;

  • 配置完成后在 WorkBuddy 连接器管理页对该服务器点击"信任"以启用。

Claude Desktop

编辑 claude_desktop_config.json,写入同上结构即可。

安全提示

  • 只读场景保持 DB_MODE=readonly;确需写操作时再切 readwrite,并配合数据库侧最小权限账号。

  • .envmcp.json 含数据库凭据,均已被 .gitignore 忽略,切勿提交到版本库。

  • 所有 SQL 均使用绑定变量传参 + 语法白名单校验,禁止在 SQL 中拼接用户输入。

项目结构

oracle-mcp-server/
├── .env.example       # 环境变量模板(多数据库)
├── .gitignore
├── mcp.json           # WorkBuddy MCP 配置示例(勿填真实密码提交)
├── pyproject.toml     # 项目配置、依赖与启动命令入口
├── run_server.py      # 启动脚本(预校验 + 横幅 + 进入主循环)
├── server.py          # MCP 服务器主程序(工具定义)
├── database.py        # 多数据库操作封装(SQLAlchemy + 查询/防护)
└── README.md          # 使用说明

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only interaction with SQL databases through MCP, providing database metadata exploration, sample data retrieval, and secure query execution. Supports MySQL with multiple transport options and built-in security features including SQL injection protection and data sanitization.
    19
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Read-only SQL Server MCP server enabling safe database queries, table listing, and schema inspection with built-in security protections.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables read-only SQL querying and schema inspection across MSSQL, PostgreSQL, and MySQL databases via MCP tools.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CGAdmin544/db-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server