Skip to main content
Glama

MySQL MCP Server

dbconfig.py3.92 kB
import os from dotenv import load_dotenv def get_db_config(): """从环境变量获取数据库配置信息 返回: dict: 包含数据库连接所需的配置信息 - host: 数据库主机地址 - port: 数据库端口 - user: 数据库用户名 - password: 数据库密码 - database: 数据库名称(可选) - role: 数据库角色权限 异常: ValueError: 当必需的配置信息缺失时抛出 """ # 加载.env文件 load_dotenv() config = { "host": os.getenv("MYSQL_HOST", "localhost"), "port": int(os.getenv("MYSQL_PORT", "3306")), "user": os.getenv("MYSQL_USER"), "password": os.getenv("MYSQL_PASSWORD"), "database": os.getenv("MYSQL_DATABASE"), # 现在可以为空 "role": os.getenv("MYSQL_ROLE", "readonly") # 默认为只读角色 } if not all([config["user"], config["password"]]): raise ValueError("缺少必需的数据库配置:用户名和密码") return config def get_db_config_without_database(): """获取不指定数据库的连接配置 返回: dict: 不包含database字段的数据库连接配置 """ config = get_db_config() # 移除database字段,这样就可以连接到MySQL服务器而不指定特定数据库 connection_config = {k: v for k, v in config.items() if k not in ["database", "role"]} return connection_config, config["role"] # 定义角色权限 ROLE_PERMISSIONS = { "readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "USE"], # 只读权限 "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "USE"], # 读写权限 "admin": [ # 查询权限 "SELECT", "SHOW", "DESCRIBE", "EXPLAIN", # 数据操作权限 "INSERT", "UPDATE", "DELETE", "REPLACE", "LOAD", # 表结构管理权限 "CREATE", "ALTER", "DROP", "TRUNCATE", "RENAME", # 数据库管理权限 "CREATE DATABASE", "DROP DATABASE", "ALTER DATABASE", # 数据库使用权限 "USE", # 索引管理权限 "CREATE INDEX", "DROP INDEX", "ALTER INDEX", # 视图管理权限 "CREATE VIEW", "DROP VIEW", "ALTER VIEW", # 存储过程和函数权限 "CREATE PROCEDURE", "DROP PROCEDURE", "ALTER PROCEDURE", "CREATE FUNCTION", "DROP FUNCTION", "ALTER FUNCTION", # 触发器权限 "CREATE TRIGGER", "DROP TRIGGER", # 事件调度器权限 "CREATE EVENT", "DROP EVENT", "ALTER EVENT", # 用户和权限管理 "CREATE USER", "DROP USER", "ALTER USER", "RENAME USER", "GRANT", "REVOKE", "FLUSH", "RESET", # 系统管理权限 "SHUTDOWN", "RELOAD", "LOCK", "UNLOCK", "PROCESS", "SUPER", # 备份和恢复相关 "BACKUP", "RESTORE", "BACKUP_ADMIN", "BINLOG_ADMIN", # 复制相关权限 "REPLICATION SLAVE", "REPLICATION CLIENT", "REPLICATION_SLAVE_ADMIN", # 性能调优权限 "OPTIMIZE", "ANALYZE", "CHECK", "CHECKSUM", "REPAIR", # 临时表权限 "CREATE TEMPORARY TABLES", # 文件操作权限 "FILE", "SELECT INTO OUTFILE", "LOAD DATA", # 其他管理权限 "REFERENCES", "USAGE", "EXECUTE", "BINLOG_ENCRYPTION_ADMIN", "CONNECTION_ADMIN", "PERSIST_RO_VARIABLES_ADMIN", "ROLE_ADMIN", "SESSION_VARIABLES_ADMIN", "SET_USER_ID", "SYSTEM_USER", "SYSTEM_VARIABLES_ADMIN", "XA_RECOVER_ADMIN" ] # 完整的管理员权限 } def get_role_permissions(role: str) -> list: """获取指定角色的权限列表 参数: role (str): 角色名称 返回: list: 该角色允许执行的SQL操作列表 """ return ROLE_PERMISSIONS.get(role, ROLE_PERMISSIONS["readonly"]) # 默认返回只读权限

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/404-error-notfound/mcp_mysql'

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