Server data from the Official MCP Registry
A secure, efficient, and intelligent MySQL server for the Model Context Protocol
A secure, efficient, and intelligent MySQL server for the Model Context Protocol
Valid MCP server (2 strong, 2 medium validity signals). 2 known CVEs in dependencies (0 critical, 2 high severity) Package registry verified. Imported from the Official MCP Registry.
8 files analyzed ยท 3 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: DB_HOST
Environment variable: DB_PORT
Environment variable: DB_USER
Environment variable: DB_PASSWORD
Environment variable: DB_NAME
Environment variable: MCP_SAFE_QUERY_MAX_ROWS
Environment variable: MCP_SAFE_QUERY_ENABLE_BLOCKING
Environment variable: MCP_METADATA_PATH
Environment variable: MCP_TEMPLATES_PATH
Environment variable: TOOL_PREFIX
Environment variable: MYSQL_QUERY_TIMEOUT
Environment variable: MYSQL_CONNECTION_LIMIT
Environment variable: MYSQL_CONNECT_TIMEOUT
Environment variable: MYSQL_RETRY_ATTEMPTS
Environment variable: MYSQL_RETRY_DELAY_MS
Environment variable: MYSQL_QUEUE_LIMIT
Environment variable: MCP_DDL_CACHE_TTL
Environment variable: MCP_LOG_LEVEL
Environment variable: ALLOW_INSERT_OPERATION
Environment variable: ALLOW_UPDATE_OPERATION
Environment variable: ALLOW_DELETE_OPERATION
Environment variable: ALLOW_DDL_OPERATION
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-andezdev-tokenlite-mysql-mcp": {
"env": {
"DB_HOST": "your-db-host-here",
"DB_NAME": "your-db-name-here",
"DB_PORT": "your-db-port-here",
"DB_USER": "your-db-user-here",
"DB_PASSWORD": "your-db-password-here",
"TOOL_PREFIX": "your-tool-prefix-here",
"MCP_LOG_LEVEL": "your-mcp-log-level-here",
"MCP_DDL_CACHE_TTL": "your-mcp-ddl-cache-ttl-here",
"MCP_METADATA_PATH": "your-mcp-metadata-path-here",
"MYSQL_QUEUE_LIMIT": "your-mysql-queue-limit-here",
"MCP_TEMPLATES_PATH": "your-mcp-templates-path-here",
"ALLOW_DDL_OPERATION": "your-allow-ddl-operation-here",
"MYSQL_QUERY_TIMEOUT": "your-mysql-query-timeout-here",
"MYSQL_RETRY_ATTEMPTS": "your-mysql-retry-attempts-here",
"MYSQL_RETRY_DELAY_MS": "your-mysql-retry-delay-ms-here",
"MYSQL_CONNECT_TIMEOUT": "your-mysql-connect-timeout-here",
"ALLOW_DELETE_OPERATION": "your-allow-delete-operation-here",
"ALLOW_INSERT_OPERATION": "your-allow-insert-operation-here",
"ALLOW_UPDATE_OPERATION": "your-allow-update-operation-here",
"MYSQL_CONNECTION_LIMIT": "your-mysql-connection-limit-here",
"MCP_SAFE_QUERY_MAX_ROWS": "your-mcp-safe-query-max-rows-here",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "your-mcp-safe-query-enable-blocking-here"
},
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
A robust and secure MySQL database server implemented under Anthropic's Model Context Protocol (MCP). Designed specifically to solve the shortcomings of current generic MCP servers through Graceful Degradation, Active Performance Protection, and Aggressive Token Optimization.
LIMIT clauses automatically at the AST level.GRANT or CALL).SET SESSION TRANSACTION READ ONLY directly into the connection pool sockets. This guarantees that even if a theoretical bypass exists in the AST parser, the MySQL engine itself will physically reject any data modification.metadata.json) to database schema exploration, and exposes Semantic Templates via the official MCP Prompts API (templates.json) so the LLM uses pre-approved analytical queries instead of hallucinating them.SELECT and SHOW VIEW privileges.You can use this MCP server with any compatible client. Below are the configurations for the most popular ones.
Edit your claude_desktop_config.json (usually located at %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add the following:
Using NPX (Recommended)
{
"mcpServers": {
"tokenlite-mysql": {
"command": "npx",
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp"
],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "3306",
"DB_USER": "your_db_user",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database",
"MCP_SAFE_QUERY_MAX_ROWS": "1000",
"MCP_SAFE_QUERY_ENABLE_BLOCKING": "true"
}
}
}
}
You can easily integrate this server globally into Claude Code:
claude mcp add tokenlite_mysql \
-e DB_HOST="127.0.0.1" \
-e DB_PORT="3306" \
-e DB_USER="root" \
-e DB_PASSWORD="your_password" \
-e DB_NAME="your_database" \
-- npx -y @andezdev/tokenlite-mysql-mcp
To use within Cursor IDE:
command.tokenlite-mysql.npx -y @andezdev/tokenlite-mysql-mcp
(Note: Cursor handles environment variables directly in the IDE UI, make sure to add your DB credentials there).
| Variable | Description | Default | Required |
|---|---|---|---|
DB_HOST | MySQL Host address | localhost | No |
DB_PORT | MySQL Port | 3306 | No |
DB_USER | MySQL Username | root | No |
DB_PASSWORD | MySQL Password | '' | No |
DB_NAME | MySQL Database name | test | Yes |
MCP_SAFE_QUERY_MAX_ROWS | Threshold for EXPLAIN to block unindexed Full Table Scans. | 1000 | No |
MCP_SAFE_QUERY_ENABLE_BLOCKING | Enable or disable the EXPLAIN guardrail. | true | No |
MCP_METADATA_PATH | Absolute path to your custom metadata.json dictionary. | (Disabled) | No |
MCP_TEMPLATES_PATH | Absolute path to your custom templates.json queries. | (Disabled) | No |
TOOL_PREFIX | Prefix for tool names (useful when running multiple instances). | Random (e.g., db_a1b2_) | No |
MYSQL_QUERY_TIMEOUT | Max execution time for a query (in ms). Aborts heavy queries to protect against DoS. | 15000 | No |
MYSQL_CONNECTION_LIMIT | Max concurrent pool connections. | 10 | No |
MYSQL_CONNECT_TIMEOUT | Max time to wait for a socket to establish (in ms). | 10000 | No |
MYSQL_RETRY_ATTEMPTS | Max retries on transient connection errors (ECONNREFUSED, PROTOCOL_CONNECTION_LOST, etc.). | 3 | No |
MYSQL_RETRY_DELAY_MS | Base delay (ms) for exponential backoff between retries (1s, 2s, 4s...). | 1000 | No |
MYSQL_QUEUE_LIMIT | Max queued requests when all pool connections are busy. Prevents unbounded growth if MySQL is down. | 50 | No |
MCP_DDL_CACHE_TTL | Time-to-live (in seconds) for cached DDL statements. Reduces latency on repeated search_schema calls. Invalidated by refresh_schema. | 60 | No |
MCP_LOG_LEVEL | Minimum severity for MCP log notifications: debug, info, notice, warning, error, critical, alert, emergency. | info | No |
ALLOW_INSERT_OPERATION | Enable INSERT and REPLACE queries. | false | No |
ALLOW_UPDATE_OPERATION | Enable UPDATE queries. | false | No |
ALLOW_DELETE_OPERATION | Enable DELETE and TRUNCATE queries. | false | No |
ALLOW_DDL_OPERATION | Enable Data Definition Language (CREATE, ALTER, DROP, RENAME). | false | No |
TokenLite can teach the LLM about your company's business rules. To enable this, map the absolute paths of two JSON files via .env or your MCP client config:
metadata.json (Semantic Dictionary)Translate integer statuses or internal jargon so the LLM understands the data.
{
"orders.status": {
"pending": "The order is waiting for payment validation",
"shipped": "The order has left the warehouse"
}
}
templates.json (Pre-approved SQL)Stop the LLM from hallucinating complex metrics by providing vetted templates.
[
{
"name": "Customer Lifetime Value (LTV)",
"description": "Calculates total revenue generated by delivered orders per customer.",
"sql": "SELECT c.id, SUM(oi.price) FROM customers c JOIN orders o... WHERE o.status='delivered'"
}
]
TokenLite includes an automated benchmark suite using o200k_base tokenization (GPT-4o/GPT-5 standard) to measure efficiency improvements. Token counts are approximate โ Claude 4.x uses a proprietary tokenizer; actual counts may vary slightly.
To run the benchmark in your own environment:
npm run benchmark
The benchmark compares against the standard pattern used by generic MySQL MCP servers: full schema exposed as information_schema.columns in pretty-printed JSON, and query results returned as JSON.stringify(rows, null, 2) with execution time metadata.
Standard MCP servers dump the entire schema to the LLM. For large databases, this consumes thousands of input tokens on every turn. TokenLite's relational graph serves a localized Auto-Join Context (target table + direct parent tables + direct child tables).
| Scenario | Standard MCP Pattern | TokenLite | ๐ Savings |
|---|---|---|---|
| Mock (50 tables, Enterprise CRM) | 15,566 tokens | 883 tokens | 94.3% |
| Live (7 tables, Test DB) | 1,892 tokens | 257 tokens | 86.4% |
Savings scale with the number of tables: the more tables in the database, the higher the savings because the standard pattern dumps all of them while TokenLite only fetches the target + 1-hop relationships.
TokenLite converts raw database rows to a dense, structured CSV layout. This avoids JSON syntax overhead (brackets, braces, repeated keys) and compresses the output payload returned to the LLM.
Mock data (varied: NULLs, long descriptions, mixed lengths):
| Rows Returned | Standard MCP Pattern (Tokens) | TokenLite CSV (Tokens) | ๐ Output Savings (%) |
|---|---|---|---|
| 10 rows | 1,167 | 592 | 49.3% |
| 50 rows | 5,805 | 2,875 | 50.5% |
| 100 rows | 11,607 | 5,734 | 50.6% |
| 500 rows | 57,998 | 28,578 | 50.7% |
Live data (real MySQL test database with NULLs, ENUMs, variable-length text):
| Rows Returned | Standard MCP Pattern (Tokens) | TokenLite CSV (Tokens) | ๐ Output Savings (%) |
|---|---|---|---|
| 10 rows | 1,007 | 575 | 42.9% |
| 50 rows | 5,029 | 2,845 | 43.4% |
| 100 rows | 10,071 | 5,699 | 43.4% |
| 500 rows | 50,327 | 28,441 | 43.5% |
TokenLite uses MCP-native logging via notifications/message instead of raw stderr output. Clients that support MCP logging (e.g., MCP Inspector) will receive structured log messages with severity levels, logger names, and JSON data.
Severity levels (from least to most severe): debug, info, notice, warning, error, critical, alert, emergency.
The server emits logs at info level and above by default. Control the minimum level via MCP_LOG_LEVEL or dynamically at runtime through the MCP logging/setLevel request.
Before the MCP session is established (e.g., during pool initialization), logs fall back to stderr.
By design, tokenlite-mysql-mcp adheres to the Unix philosophy: it does one thing (AI-driven MySQL interactions) and does it securely via the standard stdio transport. It deliberately avoids bloating the codebase with HTTP servers or built-in SSH clients.
If you need to connect to remote databases or expose this server over the network, here are the recommended, enterprise-grade alternatives:
Instead of embedding SSH libraries, we recommend using native OS tunnels. This is much more secure, respects your ~/.ssh/config, and supports advanced authentication (2FA, hardware keys).
Simply open a terminal and run:
ssh -N -L 3306:127.0.0.1:3306 user@your-remote-server.com
Then, point tokenlite-mysql-mcp to localhost and port 3306.
If you need to host this MCP Server in the cloud (AWS, GCP) and have multiple Claude desktop clients connect to it remotely via HTTP/SSE, do not modify this codebase to add Express/HTTP logic. Instead, wrap the process using standard open-source MCP proxies like mcp-proxy. This cleanly separates the transport layer security from the AI logic.
Error: OptimizerError: Full table scan detected...
The LLM attempted to execute a query that requires scanning thousands of rows without using an index.
Solution: Use explain_query to see the full EXPLAIN output and understand why the query was blocked. Rewrite the query with an indexed WHERE clause. If you truly need to scan the whole table, increase MCP_SAFE_QUERY_MAX_ROWS in your config.
Error: calling "initialize": invalid character...
This means the MCP JSON-RPC protocol crashed. Ensure you are passing the correct DB credentials and that the database is running and accessible from the machine where the MCP server runs.
Built for the AI Engineering era.
Be the first to review this server!
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
by Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption