g#月人阁数据库MCP
封装结构
该软件包遵循模块化架构,组织如下:
yuerenge_database_mcp/
├── config/ # Configuration management
├── db_tools/ # Database operations and tools
│ ├── connections/ # Connection management
│ ├── core/ # Core database functionality
│ ├── formatting/ # Data formatting utilities
│ ├── operations/ # Database operations
│ └── utils/ # Utility functions
└── server_lifecycle.py # Server lifecycle management基于模型上下文协议(MCP)的数据库管理工具。
此软件包遵循模块化架构,具有用于配置管理、数据库操作和服务器生命周期管理的单独模块。
特性
- 支持多个数据库(MySQL、Oracle、PostgreSQL、SQLite、SQL Server)
- 连接管理
- 表结构操作
- 数据查询和操作
- 具有验证功能的高级配置管理
- 数据库适配器模式,便于扩展
安装
pip install yuerenge-database-mcp封装模块
该软件包分为几个模块:
- 配置:处理数据库配置加载、验证和管理
- db_tools:包含所有数据库操作工具和实用程序
- 连接:管理数据库连接和适配器 - 核心:核心数据库管理功能 - 格式化:用于不同输出格式的数据格式化实用程序 - 运营:数据和表操作实现 - 工具集:实用程序功能,包括日志记录和专用实用程序
快速开始
- 安装软件包:
pip install yuerenge-database-mcp- 直接运行服务器:
yuerenge-database-mcp或者使用Python模块语法运行:
python -m yuerenge_database_mcp- 创建配置文件 (可选,如果未提供,则使用默认值):
{
"connections": [
{
"name": "my_mysql_db",
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "user",
"password": "password",
"database": "mydb",
"enabled": true
}
]
}- 运行服务器:
yuerenge-database-mcp- 或者使用特定配置运行:
DATABASE_CONFIG_PATH=/path/to/your/config.json yuerenge-database-mcp用法
安装后,您可以运行数据库MCP服务器:
yuerenge-database-mcp或者使用特定的配置文件:
DATABASE_CONFIG_PATH=/path/to/your/config.json yuerenge-database-mcp您还可以使用Python模块语法运行服务器:
python -m yuerenge_database_mcp或者使用run_server.py脚本:
python run_server.py配置
该工具使用JSON配置文件来存储数据库连接信息。
配置优先级(从高到低):
- 环境变量
DATABASE_CONFIG_PATH - 默认配置文件(
config/database_config.json)
配置验证
配置管理器验证所有连接配置,以确保:
- 所有必填字段均已存在
- 端口号有效(1-65535)
- 支持数据库类型
- 启用的标志是布尔值
支持的数据库类型
- MySQL
- 甲骨文
- PostgreSQL
- SQLite
- SQL Server
连接池设置
您可以为每个数据库连接配置连接池设置:
{
"connections": [
{
"name": "my_mysql_db",
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "user",
"password": "password",
"database": "mydb",
"enabled": true,
"pool_size": 5,
"max_overflow": 10,
"pool_timeout": 30,
"pool_recycle": 3600
}
]
}可用连接池设置:
pool_size:连接池中要保持打开的连接数(默认值:10)max_overflow:连接池中允许“溢出”的连接数(默认值:20)pool_timeout:放弃从池中获取连接之前等待的秒数(默认值:30)pool_recycle:重新创建空闲连接的秒数(默认值:3600)
环境变量
服务器支持以下环境变量:
DATABASE_CONFIG_PATH:指定数据库配置文件的路径ERROR_LOG_PATH:指定存储错误日志的目录(默认值:./error_logs)
MCP服务器配置
要将其用作MCP服务器,请将以下配置添加到MCP客户端配置中:
{
"yuerenge-database-mcp": {
"command": "uvx",
"args": [
"yuerenge-database-mcp"
],
"env": {
"DATABASE_CONFIG_PATH": "path/to/config.json",
"ERROR_LOG_PATH": "path/to/log/directory"
}
}
}提供的工具
此MCP服务器提供以下工具:
- 连接管理工具
- add_database_connection:添加数据库连接 - remove_database_connection:删除数据库连接 - list_database_connections:列出所有活动连接
- 配置管理工具
- list_configured_connections:列出配置文件中的所有连接 - enable_configured_connection:在配置中启用连接 - disable_configured_connection:禁用配置中的连接 - reload_configurations:从配置文件重新加载连接
- 表格结构工具
- list_tables:列出数据库中的所有表 - get_table_structure:获取表结构信息 - create_table:创建一个新表 - drop_table:放下一张桌子 - alter_table:更改表结构
- 数据查询工具
- execute_query:执行原始SQL查询 - select_data:从表中选择数据并智能格式化
- 数据操作工具
- insert_data:将数据插入表中 - batch_insert_data:批量插入数据 - update_data:更新表中的数据 - batch_update_data:批量更新数据 - delete_data:从表中删除数据 - batch_delete_data:批量删除数据
- 高级查询工具
- select_data_smart:智能格式化表数据 - select_data_paged:在页面中显示表数据 - select_data_summary:显示表数据摘要 - select_data_html:将表数据显示为html并在浏览器中打开
这些工具在db_tools包中的多个模块中实现:
- 核心数据库操作在
db_tools.core模块 - 连接管理在
db_tools.connections模块 - 数据操作在
db_tools.operations模块 - 数据格式在
db_tools.formatting模块 - 实用功能位于
db_tools.utils模块
使用示例
添加数据库连接
# Using the MCP client to call the tool
add_database_connection(
name="mysql_test",
db_type="mysql",
host="localhost",
port=3306,
username="root",
password="password",
database="testdb",
save_to_config=True
)查询数据
# Select data from a table
select_data(connection_name="mysql_test", table_name="users", conditions={"age": 25}, limit=10)插入数据
# Insert a single record
insert_data(connection_name="mysql_test", table_name="users", data={
"name": "John Doe",
"age": 30,
"email": "john@example.com"
})批量操作
# Batch insert multiple records
batch_insert_data(connection_name="mysql_test", table_name="users", data_list=[
{"name": "Jane Smith", "age": 28, "email": "jane@example.com"},
{"name": "Bob Johnson", "age": 32, "email": "bob@example.com"}
])高级查询
# Smart formatting of query results
select_data_smart(connection_name="mysql_test", table_name="users", max_columns=8)
# Paged display of large datasets
select_data_paged(connection_name="mysql_test", table_name="large_table",
columns_per_page=5, rows_per_page=15)
# Display as HTML and open in browser
select_data_html(connection_name="mysql_test", table_name="users")最佳实践
- 连接管理
- 使用配置文件管理数据库连接,避免硬编码敏感信息 - 设置适当的连接池参数以优化性能 - 定期使用 reload_configurations 更新连接设置的工具
- 数据操作
- 对于批量数据插入,首选 batch_insert_data 工具 - 使用 conditions 用于精确查询以避免全表扫描的参数 - 在执行更新或删除操作之前,请先使用 select_data 验证条件
- 数据展示
- 对于具有许多列的表,请使用 select_data_paged 或 select_data_summary 工具 - 对于数据分析场景,使用 select_data_html 为了更好的可视化 - 选择合适的 limit 基于数据量的参数以防止内存溢出
