A secure, efficient, and intelligent MySQL server for the Model Context Protocol
Connect Runs on your machine
claude mcp add tokenlite-mysql-mcp -e DB_HOST=<DB_HOST> -e DB_PORT=<DB_PORT> -e DB_USER=<DB_USER> -e DB_PASSWORD=<DB_PASSWORD> -e DB_NAME=<DB_NAME> -e MCP_EXPLAIN_MAX_SCAN_ROWS=<MCP_EXPLAIN_MAX_SCAN_ROWS> -e MCP_QUERY_ROW_LIMIT=<MCP_QUERY_ROW_LIMIT> -e MCP_SAFE_QUERY_MAX_ROWS=<MCP_SAFE_QUERY_MAX_ROWS> -e MCP_SAFE_QUERY_ENABLE_BLOCKING=<MCP_SAFE_QUERY_ENABLE_BLOCKING> -e MCP_METADATA_PATH=<MCP_METADATA_PATH> -e MCP_TEMPLATES_PATH=<MCP_TEMPLATES_PATH> -e TOOL_PREFIX=<TOOL_PREFIX> -e MCP_RATE_LIMIT_RPM=<MCP_RATE_LIMIT_RPM> -e MYSQL_QUERY_TIMEOUT=<MYSQL_QUERY_TIMEOUT> -e MYSQL_CONNECTION_LIMIT=<MYSQL_CONNECTION_LIMIT> -e MYSQL_CONNECT_TIMEOUT=<MYSQL_CONNECT_TIMEOUT> -e MYSQL_RETRY_ATTEMPTS=<MYSQL_RETRY_ATTEMPTS> -e MYSQL_RETRY_DELAY_MS=<MYSQL_RETRY_DELAY_MS> -e MYSQL_QUEUE_LIMIT=<MYSQL_QUEUE_LIMIT> -e MCP_DDL_CACHE_TTL=<MCP_DDL_CACHE_TTL> -e MCP_LOG_LEVEL=<MCP_LOG_LEVEL> -e ALLOW_INSERT_OPERATION=<ALLOW_INSERT_OPERATION> -e ALLOW_UPDATE_OPERATION=<ALLOW_UPDATE_OPERATION> -e ALLOW_DELETE_OPERATION=<ALLOW_DELETE_OPERATION> -e ALLOW_DDL_OPERATION=<ALLOW_DDL_OPERATION> -e DB_SSL=<DB_SSL> -e DB_SSL_REJECT_UNAUTHORIZED=<DB_SSL_REJECT_UNAUTHORIZED> -- npx -y @andezdev/[email protected]
{
"mcpServers": {
"tokenlite-mysql-mcp": {
"command": "npx",
"args": [
"-y",
"@andezdev/[email protected]"
],
"env": {
"DB_HOST": "<DB_HOST>",
"DB_PORT": "<DB_PORT>",
"DB_USER": "<DB_USER>",
"DB_PASSWORD": "<DB_PASSWORD>",
"DB_NAME": "<DB_NAME>",
"MCP_EXPLAIN_MAX_SCAN_ROWS": "<MCP_EXPLAIN_MAX_SCAN_ROWS>",
"MCP_QUERY_ROW_LIMIT": "<MCP_QUERY_ROW_LIMIT>",
"MCP_SAFE_QUERY_MAX_ROWS": "<MCP_SAFE_QUERY_MAX_ROWS>",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "<MCP_SAFE_QUERY_ENABLE_BLOCKING>",
"MCP_METADATA_PATH": "<MCP_METADATA_PATH>",
"MCP_TEMPLATES_PATH": "<MCP_TEMPLATES_PATH>",
"TOOL_PREFIX": "<TOOL_PREFIX>",
"MCP_RATE_LIMIT_RPM": "<MCP_RATE_LIMIT_RPM>",
"MYSQL_QUERY_TIMEOUT": "<MYSQL_QUERY_TIMEOUT>",
"MYSQL_CONNECTION_LIMIT": "<MYSQL_CONNECTION_LIMIT>",
"MYSQL_CONNECT_TIMEOUT": "<MYSQL_CONNECT_TIMEOUT>",
"MYSQL_RETRY_ATTEMPTS": "<MYSQL_RETRY_ATTEMPTS>",
"MYSQL_RETRY_DELAY_MS": "<MYSQL_RETRY_DELAY_MS>",
"MYSQL_QUEUE_LIMIT": "<MYSQL_QUEUE_LIMIT>",
"MCP_DDL_CACHE_TTL": "<MCP_DDL_CACHE_TTL>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"ALLOW_INSERT_OPERATION": "<ALLOW_INSERT_OPERATION>",
"ALLOW_UPDATE_OPERATION": "<ALLOW_UPDATE_OPERATION>",
"ALLOW_DELETE_OPERATION": "<ALLOW_DELETE_OPERATION>",
"ALLOW_DDL_OPERATION": "<ALLOW_DDL_OPERATION>",
"DB_SSL": "<DB_SSL>",
"DB_SSL_REJECT_UNAUTHORIZED": "<DB_SSL_REJECT_UNAUTHORIZED>"
}
}
}
}
{
"mcpServers": {
"tokenlite-mysql-mcp": {
"command": "npx",
"args": [
"-y",
"@andezdev/[email protected]"
],
"env": {
"DB_HOST": "<DB_HOST>",
"DB_PORT": "<DB_PORT>",
"DB_USER": "<DB_USER>",
"DB_PASSWORD": "<DB_PASSWORD>",
"DB_NAME": "<DB_NAME>",
"MCP_EXPLAIN_MAX_SCAN_ROWS": "<MCP_EXPLAIN_MAX_SCAN_ROWS>",
"MCP_QUERY_ROW_LIMIT": "<MCP_QUERY_ROW_LIMIT>",
"MCP_SAFE_QUERY_MAX_ROWS": "<MCP_SAFE_QUERY_MAX_ROWS>",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "<MCP_SAFE_QUERY_ENABLE_BLOCKING>",
"MCP_METADATA_PATH": "<MCP_METADATA_PATH>",
"MCP_TEMPLATES_PATH": "<MCP_TEMPLATES_PATH>",
"TOOL_PREFIX": "<TOOL_PREFIX>",
"MCP_RATE_LIMIT_RPM": "<MCP_RATE_LIMIT_RPM>",
"MYSQL_QUERY_TIMEOUT": "<MYSQL_QUERY_TIMEOUT>",
"MYSQL_CONNECTION_LIMIT": "<MYSQL_CONNECTION_LIMIT>",
"MYSQL_CONNECT_TIMEOUT": "<MYSQL_CONNECT_TIMEOUT>",
"MYSQL_RETRY_ATTEMPTS": "<MYSQL_RETRY_ATTEMPTS>",
"MYSQL_RETRY_DELAY_MS": "<MYSQL_RETRY_DELAY_MS>",
"MYSQL_QUEUE_LIMIT": "<MYSQL_QUEUE_LIMIT>",
"MCP_DDL_CACHE_TTL": "<MCP_DDL_CACHE_TTL>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"ALLOW_INSERT_OPERATION": "<ALLOW_INSERT_OPERATION>",
"ALLOW_UPDATE_OPERATION": "<ALLOW_UPDATE_OPERATION>",
"ALLOW_DELETE_OPERATION": "<ALLOW_DELETE_OPERATION>",
"ALLOW_DDL_OPERATION": "<ALLOW_DDL_OPERATION>",
"DB_SSL": "<DB_SSL>",
"DB_SSL_REJECT_UNAUTHORIZED": "<DB_SSL_REJECT_UNAUTHORIZED>"
}
}
}
}
{
"servers": {
"tokenlite-mysql-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@andezdev/[email protected]"
],
"env": {
"DB_HOST": "<DB_HOST>",
"DB_PORT": "<DB_PORT>",
"DB_USER": "<DB_USER>",
"DB_PASSWORD": "<DB_PASSWORD>",
"DB_NAME": "<DB_NAME>",
"MCP_EXPLAIN_MAX_SCAN_ROWS": "<MCP_EXPLAIN_MAX_SCAN_ROWS>",
"MCP_QUERY_ROW_LIMIT": "<MCP_QUERY_ROW_LIMIT>",
"MCP_SAFE_QUERY_MAX_ROWS": "<MCP_SAFE_QUERY_MAX_ROWS>",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "<MCP_SAFE_QUERY_ENABLE_BLOCKING>",
"MCP_METADATA_PATH": "<MCP_METADATA_PATH>",
"MCP_TEMPLATES_PATH": "<MCP_TEMPLATES_PATH>",
"TOOL_PREFIX": "<TOOL_PREFIX>",
"MCP_RATE_LIMIT_RPM": "<MCP_RATE_LIMIT_RPM>",
"MYSQL_QUERY_TIMEOUT": "<MYSQL_QUERY_TIMEOUT>",
"MYSQL_CONNECTION_LIMIT": "<MYSQL_CONNECTION_LIMIT>",
"MYSQL_CONNECT_TIMEOUT": "<MYSQL_CONNECT_TIMEOUT>",
"MYSQL_RETRY_ATTEMPTS": "<MYSQL_RETRY_ATTEMPTS>",
"MYSQL_RETRY_DELAY_MS": "<MYSQL_RETRY_DELAY_MS>",
"MYSQL_QUEUE_LIMIT": "<MYSQL_QUEUE_LIMIT>",
"MCP_DDL_CACHE_TTL": "<MCP_DDL_CACHE_TTL>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"ALLOW_INSERT_OPERATION": "<ALLOW_INSERT_OPERATION>",
"ALLOW_UPDATE_OPERATION": "<ALLOW_UPDATE_OPERATION>",
"ALLOW_DELETE_OPERATION": "<ALLOW_DELETE_OPERATION>",
"ALLOW_DDL_OPERATION": "<ALLOW_DDL_OPERATION>",
"DB_SSL": "<DB_SSL>",
"DB_SSL_REJECT_UNAUTHORIZED": "<DB_SSL_REJECT_UNAUTHORIZED>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
DB_HOSTOptional | MySQL Host address (defaults to localhost) |
DB_PORTOptional | MySQL Port (defaults to 3306) |
DB_USEROptional | MySQL Username (defaults to root) |
DB_PASSWORDOptional, secret | MySQL Password (defaults to empty string) |
DB_NAMERequired | MySQL Database name |
MCP_EXPLAIN_MAX_SCAN_ROWSOptional | EXPLAIN guardrail: max estimated rows for unindexed full table scans before blocking (defaults to 1000). MCP_SAFE_QUERY_MAX_ROWS is a deprecated alias. |
MCP_QUERY_ROW_LIMITOptional | Max rows returned per SELECT; injected as LIMIT at the AST level (defaults to 500) |
MCP_SAFE_QUERY_MAX_ROWSOptional | Deprecated alias for MCP_EXPLAIN_MAX_SCAN_ROWS |
MCP_SAFE_QUERY_ENABLE_BLOCKINGOptional | Enable or disable the EXPLAIN guardrail (defaults to true) |
MCP_METADATA_PATHOptional | Absolute path to your custom metadata.json dictionary |
MCP_TEMPLATES_PATHOptional | Absolute path to your custom templates.json pre-approved queries |
TOOL_PREFIXOptional | Prefix for tool names, e.g., to run multiple instances (defaults to DB_NAME, e.g. mydb_). Only set to override. |
MCP_RATE_LIMIT_RPMOptional | Max tool invocations per minute, sliding window (defaults to 60). Set to 0 to disable. |
MYSQL_QUERY_TIMEOUTOptional | Max execution time for a query in milliseconds to protect against DoS (defaults to 15000) |
MYSQL_CONNECTION_LIMITOptional | Max concurrent pool connections (defaults to 10) |
MYSQL_CONNECT_TIMEOUTOptional | Max time to wait for a connection socket to establish in milliseconds (defaults to 10000) |
MYSQL_RETRY_ATTEMPTSOptional | Max retries on transient connection errors (defaults to 3) |
MYSQL_RETRY_DELAY_MSOptional | Base delay in milliseconds for exponential backoff between retries (defaults to 1000) |
MYSQL_QUEUE_LIMITOptional | Max queued requests when all pool connections are busy to prevent memory leak (defaults to 50) |
MCP_DDL_CACHE_TTLOptional | Time-to-live in seconds for cached DDL statements (defaults to 60) |
MCP_LOG_LEVELOptional | Minimum severity level for MCP log notifications (defaults to info). Levels: debug, info, notice, warning, error, critical, alert, emergency |
ALLOW_INSERT_OPERATIONOptional | Enable INSERT and REPLACE queries (defaults to false) |
ALLOW_UPDATE_OPERATIONOptional | Enable UPDATE queries (defaults to false) |
ALLOW_DELETE_OPERATIONOptional | Enable DELETE and TRUNCATE queries (defaults to false) |
ALLOW_DDL_OPERATIONOptional | Enable Data Definition Language queries like CREATE, ALTER, DROP, RENAME (defaults to false) |
DB_SSLOptional | Enable TLS for the MySQL connection (defaults to false) |
DB_SSL_REJECT_UNAUTHORIZEDOptional | Reject self-signed or untrusted TLS certificates when DB_SSL is true (defaults to true) |
Details
| Package | @andezdev/[email protected] (NPM, stdio) |
| First published | 7 Jun 2026 |
| Last updated | 7 Jun 2026 |
| Registry name | io.github.andezdev/tokenlite-mysql-mcp |
More databases servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
