MariaDB数据库管理服务

MCP MariaDB Server提供了一套标准化的协议接口,用于管理和查询MariaDB数据库,支持标准SQL操作和查询性能分析。

  • by rocknroll17
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 rocknroll17/MariaDB-MCP-Server

使用说明

MCP MariaDB服务器

MCP MariaDB服务器提供了一个模型上下文协议(MCP)接口,用于管理和查询MariaDB数据库,支持标准SQL操作。


目录


概述

MCP MariaDB Server提供了一组工具,用于通过标准化协议与MariaDB数据库进行交互。它支持:

  • 列出数据库和表
  • 正在检索表架构
  • 执行安全的只读SQL查询
  • 使用EXPLAIN和EXPLAIN EXTENDED进行查询性能分析
  • LLM自我发现的综合工具使用指南

核心组件

  • config.py:从环境加载配置 .env 文件夹。
  • logger.py:配置MCP服务器的日志记录。
  • main.py:运行MCP服务器的入口点。
  • 服务器.py:主MCP服务器逻辑和工具定义。
  • 测试/:手动和自动测试文档和脚本。

可用工具

标准数据库工具

  • 列表_数据库

    • 列出所有可访问的数据库。
    • 参数: 无
  • list_tables

    • 列出指定数据库中的所有表。
    • 参数: database_name (字符串,必填)
  • get_table_schema

    • 检索表的架构(列、类型、键等)。
    • 参数: database_name (字符串,必填), table_name (字符串,必填)
  • execute_sql

    • 执行只读SQL查询(SELECT, SHOW, DESCRIBE).
    • 参数: sql_query (字符串,必填), database_name (字符串,可选), parameters (列表,可选)
    • 注意:如果满足以下条件,则强制只读模式 MCP_READ_ONLY 已启用。
  • create_database

    • 如果不存在,则创建新数据库。
    • 参数: database_name (字符串,必填)

查询性能分析工具

  • 解释查询

    • 对SQL查询执行EXPLAIN,以显示性能分析的执行计划。
    • 参数: sql_query (字符串,必填), database_name (字符串,必填), parameters (列表,可选)
    • 注意:有助于分析查询性能和优化机会。不执行实际的查询。
  • 解释查询扩展

    • 对SQL查询执行EXPLAIN EXTENDED,以显示包含其他信息的详细执行计划。
    • 参数: sql_query (字符串,必填), database_name (字符串,必填), parameters (列表,可选)
    • 注意:提供全面的分析,包括过滤行百分比和额外的优化细节。

工具发现和使用指南

!注意:您必须提示您的法学硕士了解此工具
EXAMPLE: "First of all. There is a get_usage_guide tool that helps you understand how to use MCP tools."

  • get_usage_guide
    • 为所有可用的MCP工具提供全面的使用指南,包括示例和最佳实践。
    • 参数: 无

配置和环境变量

所有配置都是通过环境变量(通常在 .env 文件):

变量 描述 必填 默认
DB_HOST MariaDB主机地址 是 localhost
DB_PORT MariaDB端口 否 3306
DB_USER MariaDB用户名 是
DB_PASSWORD MariaDB密码 是
DB_NAME 默认数据库(可选;可按查询设置) 否
MCP_READ_ONLY 强制只读SQL模式(true/false) 没有 true
MCP_MAX_POOL_SIZE 最大DB连接池大小 否 10

示例 .env 文件

DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_PORT=3306
DB_NAME=your_default_database

MCP_READ_ONLY=true
MCP_MAX_POOL_SIZE=10

设置

如果你没有在MariaDB上使用Docker。(安装在本地计算机或远程服务器上)

  1. 构建MCP服务器
docker build -t mcp-server .
  1. 运行MCP服务器容器
docker run -d \
  --name mcp-server \
  -e DB_HOST= {host.docker.internal or your-mariadb-host-ip} \
  -e DB_USER={mariadb-username} \
  -e DB_PASSWORD={mariadb-password} \
  -e DB_PORT=3306 \
  -e DB_NAME={mariadb-database-name} \
  -e MCP_READ_ONLY=true \
  -e MCP_MAX_POOL_SIZE=10 \
  -p 9001:9001 \
  mcp-server

如果你在Docker中使用MariaDB

  1. 为MariaDB和MCP服务器连接创建网络
docker network create mariadb-mcp-network
docker network connect mariadb-mcp-network {mariadb-container-name}
  1. 为MCP服务器构建Docker镜像
docker build -t mcp-server .
  1. 运行MCP服务器容器
docker run -d \
  --name mcp-server \
  --network mariadb-mcp-network \
  -e DB_HOST={mariadb-container-name} \
  -e DB_USER={mariadb-username} \
  -e DB_PASSWORD={mariadb-password} \
  -e DB_PORT=3306 \
  -e DB_NAME={mariadb-database-name} \
  -e MCP_READ_ONLY=true \
  -e MCP_MAX_POOL_SIZE=10 \
  -p 9001:9001 \
  mcp-server

在没有Docker的情况下运行MCP服务器

如果您希望在没有Docker的情况下运行MCP服务器,可以按照以下步骤操作:

  1. 设置.env (参考上述示例):
    • 创建一个 .env 文件在 src/ 目录中包含您的MariaDB连接详细信息。
    • 确保设置了所需的环境变量。
  2. 安装依赖项:
  python3 -m venv venv
  source venv/bin/activate
  pip install uv
  uv pip compile pyproject.toml -o uv.lock
  uv pip sync uv.lock
  1. 运行MCP服务器:
    python src/main.py
    

集成-游标/VS代码/Claude代码

VS代码-> .vscode/settings.json

光标-> ~/.cursor/settings.json

{
  "mcp": {
    "server": {
      "url": "http://localhost:9001/sse",
      "type": "sse"
    }
  }
}

克劳德代码

claude mcp add --transport sse mcp-server http://localhost:9001/sse

日志记录

  • 日志被写入 logs/mcp_server.log 默认情况下。
  • 日志消息包括工具调用、配置问题、嵌入错误和客户端请求。
  • 日志级别和输出可以在代码中调整(参见 config.py 以及记录器设置)。

测试

  • 测试位于 src/tests/ 目录。
  • 看 src/tests/README.md 查看概述。
  • 测试涵盖了标准SQL和向量/嵌入工具操作。