easy-mysql-admin-mcp
by chenkumi
README.md
# easy-mysql-admin-mcp
High-privilege MySQL admin MCP server for database and user/grant management.
## Features
- List, create, and inspect databases
- List, create, and update users
- Grant and revoke privileges at database scope
- Protect destructive actions with short-lived confirmation tokens
## Available Tools
| Tool | Description |
| --- | --- |
| `mysql_list_databases` | List databases in the current MySQL instance |
| `mysql_create_database` | Create a database |
| `mysql_describe_database` | Inspect database charset and collation settings |
| `mysql_drop_database` | Request database deletion and return a confirmation token |
| `mysql_list_users` | List MySQL users |
| `mysql_create_user` | Create a MySQL user |
| `mysql_alter_user_password` | Change a MySQL user password |
| `mysql_grant_privileges` | Grant database privileges to a user |
| `mysql_revoke_privileges` | Revoke database privileges from a user |
| `mysql_show_grants` | Show grants for a user |
| `mysql_drop_user` | Request user deletion and return a confirmation token |
| `mysql_confirm_task` | Confirm and execute a destructive action token |
## Safety
- No raw SQL passthrough
- No table, view, index, or trigger management
- `DROP DATABASE` and `DROP USER` require `mysql_confirm_task`
- Confirmation tokens are random, single-use, and expire quickly
## Configuration
Use environment variables, matching the rest of the `easy-*-mcp` family.
| Variable | Required | Default | Description |
| --- | --- | --- | --- |
| `MYSQL_HOST` | Yes | - | MySQL host name or IP address |
| `MYSQL_PORT` | No | `3306` | MySQL port |
| `MYSQL_USER` | Yes | - | MySQL user name |
| `MYSQL_PASSWORD` | Yes | - | MySQL password |
| `MYSQL_DATABASE` | Yes | - | Default database/schema used for the admin connection |
| `MYSQL_CONNECTION_LIMIT` | No | `10` | Maximum number of active pool connections |
| `MYSQL_MAX_IDLE` | No | `10` | Maximum number of idle pool connections |
| `MYSQL_IDLE_TIMEOUT` | No | `60000` | Idle connection timeout in milliseconds |
| `MYSQL_QUEUE_LIMIT` | No | `0` | Maximum queued connection requests |
| `MYSQL_WAIT_FOR_CONNECTIONS` | No | `true` | Whether the pool waits when all connections are busy |
| `MYSQL_ENABLE_KEEP_ALIVE` | No | `true` | Whether TCP keep-alive is enabled |
| `MYSQL_KEEP_ALIVE_INITIAL_DELAY` | No | `0` | Initial TCP keep-alive delay in milliseconds |
| `MYSQL_ADMIN_TOKEN_TTL_SECONDS` | No | `120` | Confirmation token lifetime in seconds |
## Example
```env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=mysql
MYSQL_ADMIN_TOKEN_TTL_SECONDS=120
```
## Claude Desktop Example
```json
{
"mcpServers": {
"easy-mysql-admin-mcp": {
"command": "npx",
"args": ["-y", "easy-mysql-admin-mcp"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "mysql",
"MYSQL_ADMIN_TOKEN_TTL_SECONDS": "120"
}
}
}
}
```
## Codex config.toml Example
```
[mcp_servers.easy-mysql-admin-mcp]
args = ["-y", "easy-mysql-admin-mcp"]
command = "npx"
enabled = true
[mcp_servers.easy-mysql-admin-mcp.env]
MYSQL_HOST = "localhost"
MYSQL_PORT = "3306"
MYSQL_USER = "root"
MYSQL_PASSWORD = "your_password"
MYSQL_DATABASE = "mysql"
MYSQL_ADMIN_TOKEN_TTL_SECONDS = "120"
```
## OpenCode opencode.jsonc Example
```json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"easy-mysql-admin-mcp": {
"type": "local",
"command": ["npx", "-y", "easy-mysql-admin-mcp"],
"enabled": true,
"environment": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "mysql",
"MYSQL_ADMIN_TOKEN_TTL_SECONDS": "120",
},
},
},
}
```
TDQS
B3.3/5.0
Scored across 12 tools
Disambiguation5/5
Each tool has a clearly distinct purpose—creating, listing, describing, deleting databases and users, managing privileges and passwords, and confirming destructive actions. No ambiguity.
Naming Consistency5/5
All tools follow a consistent 'mysql_verb_noun' pattern (e.g., mysql_create_database, mysql_revoke_privileges) using snake_case throughout.
Tool Count5/5
With 12 tools, the set is well-scoped for MySQL administration—covering database and user management, privileges, and password changes without being excessive.
Completeness4/5
Covers core lifecycle operations (create/read/delete) for databases and users, plus grant/revoke, password change, and a safety mechanism for drops. Missing update operations (e.g., rename database or user) but these are minor gaps.
Maintenance
ActivityMaintained
ResponsivenessNo issues