Token导航 LogoToken导航TokenDH.com
Multi Db MCP logo
数据服务stdio官方级别未说明来源级核验

Multi Db MCP

MCP Server

一个基于MCP协议的HTTP服务器,提供MySQL和MSSQL数据库的查询工具,支持连接池、认证和速率限制。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
数据库工具多数据库支持Python认证服务

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

MdwebbSE

提供方

MdwebbSE

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

多数据库MCP服务器

一种模型上下文协议(MCP)HTTP服务器,为MySQL和MSSQL数据库提供数据库查询工具,具有连接池、身份验证和速率限制。

特性

  • 多数据库支持:连接MySQL和MSSQL数据库
  • MCP协议:通过模型上下文协议公开数据库工具
  • 连接池:高效的连接重用,以获得更好的性能
  • 认证:承载令牌身份验证(可配置)
  • 速率限制:内置速率限制以防止滥用
  • 只读模式:可选只读模式以确保安全
  • 行限制:每个查询可配置的最大行数
  • 运输安全:DNS重新绑定保护和CORS支持

Python环境设置

先决条件

  • python:3.9或更高版本

设置虚拟环境

创建虚拟环境(推荐):

# Navigate to the project directory
cd /path/to/multi-db-mcp

# Create virtual environment
python -m venv venv

# Activate
source venv/bin/activate

验证激活:

# Should show (venv) prefix
python --version

安装依赖项

# Upgrade pip first (recommended)
pip install --upgrade pip

# Install required packages
pip install -r requirements.txt

# Verify installation
pip list | grep -E "pymysql|mssql|starlette|mcp|uvicorn"

______________________________________________________________________

运行服务器

uvicorn server:app --host 0.0.0.0 --port 8001

服务安装

作为Linux服务运行(systemd)

  1. 创建systemd服务文件:
   sudo nano /etc/systemd/system/multi-db-mcp.service
  1. 添加以下内容:
   [Unit]
   Description=Multi-Database MCP Server
   After=network.target

   [Service]
   Type=simple
   User=www-data
   Group=www-data
   WorkingDirectory=/path/to/multi-db-mcp
   Environment="PATH=/path/to/multi-db-mcp/venv/bin"
   Environment="DB_SERVERS_CONFIG=/path/to/multi-db-mcp/db_servers.json"
   Environment="DB_READ_ONLY=true"
   ExecStart=/path/to/multi-db-mcp/venv/bin/uvicorn server:app --host 0.0.0.0 --port 8000
   Restart=always
   RestartSec=10

   [Install]
   WantedBy=multi-user.target
  1. 安装并启用该服务:
   sudo chown -R www-data:www-data /path/to/multi-db-mcp

   sudo systemctl daemon-reload
   sudo systemctl enable multi-db-mcp
   sudo systemctl start multi-db-mcp
  1. 检查服务状态:
   sudo systemctl status multi-db-mcp
   sudo journalctl -u multi-db-mcp -f

快速开始

1.配置数据库服务器

编辑 db_servers.json 要配置数据库连接,请执行以下操作:

{
  "transport_security": {
    "enable_dns_rebinding_protection": true,
    "allowed_hosts": ["localhost:*", "127.0.0.1:*"],
    "allowed_origins": ["http://localhost:*", "http://127.0.0.1:*"]
  },
  "servers": {
    "main-mysql": {
      "engine": "mysql",
      "host": "your-mysql-host",
      "port": 3306,
      "user": "username",
      "password": "password",
      "allowed_databases": ["mydb"],
      "allowed_tables": {
        "mydb": ["users", "orders"]
      },
      "connect_timeout": 10
    },
    "main-mssql": {
      "engine": "mssql",
      "host": "your-mssql-host",
      "port": 1433,
      "user": "username",
      "password": "password",
      "allowed_databases": ["mydb"],
      "encrypt": true,
      "trust_server_certificate": false,
      "connect_timeout": 10
    }
  }
}

配置选项

选项必填说明
engine数据库引擎: mysqlmssql
host数据库服务器主机名
port数据库服务器端口
user身份验证用户名
password身份验证密码
allowed_databases此服务器可以访问的数据库列表
allowed_tables将数据库名称映射到允许的表列表的对象。限制 preview_tableselect_where 工具到特定表格。
connect_timeout连接超时(秒)(默认值:10)
encrypt启用加密(仅限MSSQL)
trust_server_certificate信任服务器证书(仅MSSQL)

2.环境变量

变量默认值描述
DB_SERVERS_CONFIG./db_servers.json配置文件的路径
DB_READ_ONLYtrue启用只读模式
DB_MAX_ROWS200每个查询返回的最大行数
DB_POOL_MAX_CONNECTIONS10每个池的最大连接数
DB_POOL_MIN_CONNECTIONS2每个池的最小连接数
DB_POOL_RECYCLE_SECONDS3600连接回收时间
MCP_BEARER_TOKEN(无)用于身份验证的承载令牌
RATE_LIMIT_REQUESTS100每个费率限制窗口的请求
RATE_LIMIT_WINDOW60速率限制窗口(秒)

可用的MCP工具

list_tables

列出数据库中的所有表。

参数:

  • db_server (可选):配置中的数据库服务器名称
  • database (可选):数据库名称
  • schema (可选):架构名称(对于MSSQL,默认为“dbo”)

describe_table

获取表的列信息。

参数:

  • table_name:表的名称
  • db_server (可选):数据库服务器名称
  • database (可选):数据库名称
  • schema (可选):架构名称

run_query

执行SQL查询。

参数:

  • sql:要执行的SQL查询
  • db_server (可选):数据库服务器名称
  • database (可选):数据库名称

注: 在只读模式下,只允许SELECT/SHOW/DESCRIBE/EXPLAIN/WITH查询。

preview_table

预览表中的行。

参数:

  • table_name:表的名称
  • limit (可选):行数(默认值:50,最大值:200)
  • db_server (可选):数据库服务器名称
  • database (可选):数据库名称

select_where

选择带有过滤器的行。

参数:

  • table_name:表的名称
  • filters:列字典=值过滤器
  • limit (可选):行数(默认值:50,最大值:200)
  • db_server (可选):数据库服务器名称
  • database (可选):数据库名称

list_columns

列出表的列。

参数:

  • table_name:表的名称
  • db_server (可选):数据库服务器名称
  • database (可选):数据库名称
  • schema (可选):架构名称

get_current_database

从请求标头中获取默认的db_server和数据库。

API终点

端点描述
GET /健康检查-返回服务器状态
GET /health使用服务器配置进行详细的健康检查
POST /MCP协议端点

认证

MCP_BEARER_TOKEN 已设置,除外的所有端点 //health 需要一个Bearer令牌:

curl -H "Authorization: Bearer your-token" http://localhost:8001/health

安全考虑

  • 始终使用强承载令牌(至少10个字符)
  • 确保凭据安全,永远不要承诺版本控制
  • 对数据库连接使用SSL/TLS加密
  • 考虑在生产环境中使用只读模式
  • 为您的用例配置适当的速率限制

数据库用户安全

专用数据库用户

强烈建议专门为MCP服务器创建专用数据库用户,而不是使用现有的应用程序或管理帐户。这些专用用户应该具有服务器功能所需的最小权限。

MySQL权限

对于MySQL数据库,建议使用以下最低权限:

-- Grant only necessary permissions
GRANT SELECT, SHOW VIEW, EXECUTE ON your_database.* TO 'mcp_user'@'host';

所需权限:

  • SELECT -从表中读取数据所需
  • SHOW VIEW -必需的 list_tables 工具正常工作
  • EXECUTE -如果使用存储过程,则需要

MSSQL权限

对于MSSQL数据库,建议使用以下最低权限:

-- Create a user with only necessary permissions
USE your_database;
CREATE USER 'mcp_user' FOR LOGIN 'mcp_login';
GRANT SELECT ON SCHEMA::dbo TO 'mcp_user';

所需权限:

  • SELECT 关于相关模式-从表中读取数据时需要

附加安全措施

  • 如果可能,为每个数据库创建单独的用户
  • 限制主机访问('mcp_user'@'localhost' 或特定IP)
  • 为每个数据库用户使用强而唯一的密码
  • 定期审核用户权限
  • 考虑使用数据库角色进行权限管理

输入安全免责声明

MCP服务器包括试图防止恶意代码执行的措施,包括:

  • 查询清理
  • 只读模式强制
  • 速率限制

然而, 最终,用户有责任确保提供给数据库查询的所有输入都是安全的并经过适当验证。服务器无法保证对所有形式的SQL注入或可能由复杂攻击者精心设计的恶意输入提供保护。在通过MCP服务器发送查询之前,始终在客户端验证和净化输入,特别是在接受用户生成的内容时。

项目结构

multi-db-mcp/
├── server.py           # Main HTTP server entry point
├── tools.py            # MCP tool definitions
├── db.py               # Database connections and helpers
├── config.py           # Configuration loading
├── middleware.py       # Auth and rate limiting
├── db_servers.json     # Database configuration
└── README.md           # This file

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

目录标签

目录标签

数据库工具多数据库支持Python认证服务本地部署连接池速率限制

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP