使用说明
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已启用。
- 执行只读SQL查询(
-
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。(安装在本地计算机或远程服务器上)
- 构建MCP服务器
docker build -t mcp-server .
- 运行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
- 为MariaDB和MCP服务器连接创建网络
docker network create mariadb-mcp-network
docker network connect mariadb-mcp-network {mariadb-container-name}
- 为MCP服务器构建Docker镜像
docker build -t mcp-server .
- 运行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服务器,可以按照以下步骤操作:
- 设置
.env(参考上述示例):- 创建一个
.env文件在src/目录中包含您的MariaDB连接详细信息。 - 确保设置了所需的环境变量。
- 创建一个
- 安装依赖项:
python3 -m venv venv
source venv/bin/activate
pip install uv
uv pip compile pyproject.toml -o uv.lock
uv pip sync uv.lock
- 运行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和向量/嵌入工具操作。