io.github.andezdev/tokenlite-mysql-mcp
Officialby andezdev · TypeScript
A secure, efficient, and intelligent MySQL server for the Model Context Protocol
Secure and efficient MySQL server implementation for MCP.
Topics
README not available yet.
Install
Configuration
DB_HOSTMySQL Host address (defaults to localhost)
DB_PORTMySQL Port (defaults to 3306)
DB_USERMySQL Username (defaults to root)
DB_PASSWORDsecretMySQL Password (defaults to empty string)
DB_NAMErequiredMySQL Database name
MCP_EXPLAIN_MAX_SCAN_ROWSEXPLAIN 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_LIMITMax rows returned per SELECT; injected as LIMIT at the AST level (defaults to 500)
MCP_SAFE_QUERY_MAX_ROWSDeprecated alias for MCP_EXPLAIN_MAX_SCAN_ROWS
MCP_SAFE_QUERY_ENABLE_BLOCKINGEnable or disable the EXPLAIN guardrail (defaults to true)
MCP_METADATA_PATHAbsolute path to your custom metadata.json dictionary
MCP_TEMPLATES_PATHAbsolute path to your custom templates.json pre-approved queries
TOOL_PREFIXPrefix for tool names, e.g., to run multiple instances (defaults to DB_NAME, e.g. mydb_). Only set to override.
MCP_RATE_LIMIT_RPMMax tool invocations per minute, sliding window (defaults to 60). Set to 0 to disable.
MYSQL_QUERY_TIMEOUTMax execution time for a query in milliseconds to protect against DoS (defaults to 15000)
MYSQL_CONNECTION_LIMITMax concurrent pool connections (defaults to 10)
MYSQL_CONNECT_TIMEOUTMax time to wait for a connection socket to establish in milliseconds (defaults to 10000)
MYSQL_RETRY_ATTEMPTSMax retries on transient connection errors (defaults to 3)
MYSQL_RETRY_DELAY_MSBase delay in milliseconds for exponential backoff between retries (defaults to 1000)
MYSQL_QUEUE_LIMITMax queued requests when all pool connections are busy to prevent memory leak (defaults to 50)
MCP_DDL_CACHE_TTLTime-to-live in seconds for cached DDL statements (defaults to 60)
MCP_LOG_LEVELMinimum severity level for MCP log notifications (defaults to info). Levels: debug, info, notice, warning, error, critical, alert, emergency
ALLOW_INSERT_OPERATIONEnable INSERT and REPLACE queries (defaults to false)
ALLOW_UPDATE_OPERATIONEnable UPDATE queries (defaults to false)
ALLOW_DELETE_OPERATIONEnable DELETE and TRUNCATE queries (defaults to false)
ALLOW_DDL_OPERATIONEnable Data Definition Language queries like CREATE, ALTER, DROP, RENAME (defaults to false)
DB_SSLEnable TLS for the MySQL connection (defaults to false)
DB_SSL_REJECT_UNAUTHORIZEDReject self-signed or untrusted TLS certificates when DB_SSL is true (defaults to true)
claude_desktop_config.json
{
"mcpServers": {
"tokenlite-mysql-mcp": {
"command": "npx",
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp@4.1.0"
],
"env": {
"DB_HOST": "<YOUR_DB_HOST>",
"DB_PORT": "<YOUR_DB_PORT>",
"DB_USER": "<YOUR_DB_USER>",
"DB_PASSWORD": "<YOUR_DB_PASSWORD>",
"DB_NAME": "<YOUR_DB_NAME>",
"MCP_EXPLAIN_MAX_SCAN_ROWS": "<YOUR_MCP_EXPLAIN_MAX_SCAN_ROWS>",
"MCP_QUERY_ROW_LIMIT": "<YOUR_MCP_QUERY_ROW_LIMIT>",
"MCP_SAFE_QUERY_MAX_ROWS": "<YOUR_MCP_SAFE_QUERY_MAX_ROWS>",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "<YOUR_MCP_SAFE_QUERY_ENABLE_BLOCKING>",
"MCP_METADATA_PATH": "<YOUR_MCP_METADATA_PATH>",
"MCP_TEMPLATES_PATH": "<YOUR_MCP_TEMPLATES_PATH>",
"TOOL_PREFIX": "<YOUR_TOOL_PREFIX>",
"MCP_RATE_LIMIT_RPM": "<YOUR_MCP_RATE_LIMIT_RPM>",
"MYSQL_QUERY_TIMEOUT": "<YOUR_MYSQL_QUERY_TIMEOUT>",
"MYSQL_CONNECTION_LIMIT": "<YOUR_MYSQL_CONNECTION_LIMIT>",
"MYSQL_CONNECT_TIMEOUT": "<YOUR_MYSQL_CONNECT_TIMEOUT>",
"MYSQL_RETRY_ATTEMPTS": "<YOUR_MYSQL_RETRY_ATTEMPTS>",
"MYSQL_RETRY_DELAY_MS": "<YOUR_MYSQL_RETRY_DELAY_MS>",
"MYSQL_QUEUE_LIMIT": "<YOUR_MYSQL_QUEUE_LIMIT>",
"MCP_DDL_CACHE_TTL": "<YOUR_MCP_DDL_CACHE_TTL>",
"MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
"ALLOW_INSERT_OPERATION": "<YOUR_ALLOW_INSERT_OPERATION>",
"ALLOW_UPDATE_OPERATION": "<YOUR_ALLOW_UPDATE_OPERATION>",
"ALLOW_DELETE_OPERATION": "<YOUR_ALLOW_DELETE_OPERATION>",
"ALLOW_DDL_OPERATION": "<YOUR_ALLOW_DDL_OPERATION>",
"DB_SSL": "<YOUR_DB_SSL>",
"DB_SSL_REJECT_UNAUTHORIZED": "<YOUR_DB_SSL_REJECT_UNAUTHORIZED>"
}
}
}
}