프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Tokenlite Mysql MCP

제작자: andezdev버전 4.1.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.andezdev/tokenlite-mysql-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

A secure, efficient, and intelligent MySQL server for the Model Context Protocol

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 데이터베이스 및 데이터셋
  • 입력해야 할 값: DB_PASSWORD, DB_NAME

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME, MCP_EXPLAIN_MAX_SCAN_ROWS, MCP_QUERY_ROW_LIMIT, MCP_SAFE_QUERY_MAX_ROWS, MCP_SAFE_QUERY_ENABLE_BLOCKING, MCP_METADATA_PATH, MCP_TEMPLATES_PATH, TOOL_PREFIX, MCP_RATE_LIMIT_RPM, MYSQL_QUERY_TIMEOUT, MYSQL_CONNECTION_LIMIT, MYSQL_CONNECT_TIMEOUT, MYSQL_RETRY_ATTEMPTS, MYSQL_RETRY_DELAY_MS, MYSQL_QUEUE_LIMIT, MCP_DDL_CACHE_TTL, MCP_LOG_LEVEL, ALLOW_INSERT_OPERATION, ALLOW_UPDATE_OPERATION, ALLOW_DELETE_OPERATION, ALLOW_DDL_OPERATION, DB_SSL, DB_SSL_REJECT_UNAUTHORIZED

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "tokenlite-mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@andezdev/tokenlite-mysql-mcp"
      ],
      "env": {
        "DB_HOST": "your-value",
        "DB_PORT": "your-value",
        "DB_USER": "your-value",
        "DB_PASSWORD": "your-value",
        "DB_NAME": "your-value",
        "MCP_EXPLAIN_MAX_SCAN_ROWS": "your-value",
        "MCP_QUERY_ROW_LIMIT": "your-value",
        "MCP_SAFE_QUERY_MAX_ROWS": "your-value",
        "MCP_SAFE_QUERY_ENABLE_BLOCKING": "your-value",
        "MCP_METADATA_PATH": "your-value",
        "MCP_TEMPLATES_PATH": "your-value",
        "TOOL_PREFIX": "your-value",
        "MCP_RATE_LIMIT_RPM": "your-value",
        "MYSQL_QUERY_TIMEOUT": "your-value",
        "MYSQL_CONNECTION_LIMIT": "your-value",
        "MYSQL_CONNECT_TIMEOUT": "your-value",
        "MYSQL_RETRY_ATTEMPTS": "your-value",
        "MYSQL_RETRY_DELAY_MS": "your-value",
        "MYSQL_QUEUE_LIMIT": "your-value",
        "MCP_DDL_CACHE_TTL": "your-value",
        "MCP_LOG_LEVEL": "your-value",
        "ALLOW_INSERT_OPERATION": "your-value",
        "ALLOW_UPDATE_OPERATION": "your-value",
        "ALLOW_DELETE_OPERATION": "your-value",
        "ALLOW_DDL_OPERATION": "your-value",
        "DB_SSL": "your-value",
        "DB_SSL_REJECT_UNAUTHORIZED": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add tokenlite-mysql --env DB_HOST=your-value --env DB_PORT=your-value --env DB_USER=your-value --env DB_PASSWORD=your-value --env DB_NAME=your-value --env MCP_EXPLAIN_MAX_SCAN_ROWS=your-value --env MCP_QUERY_ROW_LIMIT=your-value --env MCP_SAFE_QUERY_MAX_ROWS=your-value --env MCP_SAFE_QUERY_ENABLE_BLOCKING=your-value --env MCP_METADATA_PATH=your-value --env MCP_TEMPLATES_PATH=your-value --env TOOL_PREFIX=your-value --env MCP_RATE_LIMIT_RPM=your-value --env MYSQL_QUERY_TIMEOUT=your-value --env MYSQL_CONNECTION_LIMIT=your-value --env MYSQL_CONNECT_TIMEOUT=your-value --env MYSQL_RETRY_ATTEMPTS=your-value --env MYSQL_RETRY_DELAY_MS=your-value --env MYSQL_QUEUE_LIMIT=your-value --env MCP_DDL_CACHE_TTL=your-value --env MCP_LOG_LEVEL=your-value --env ALLOW_INSERT_OPERATION=your-value --env ALLOW_UPDATE_OPERATION=your-value --env ALLOW_DELETE_OPERATION=your-value --env ALLOW_DDL_OPERATION=your-value --env DB_SSL=your-value --env DB_SSL_REJECT_UNAUTHORIZED=your-value -- npx -y @andezdev/tokenlite-mysql-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "tokenlite-mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@andezdev/tokenlite-mysql-mcp"
      ],
      "env": {
        "DB_HOST": "your-value",
        "DB_PORT": "your-value",
        "DB_USER": "your-value",
        "DB_PASSWORD": "your-value",
        "DB_NAME": "your-value",
        "MCP_EXPLAIN_MAX_SCAN_ROWS": "your-value",
        "MCP_QUERY_ROW_LIMIT": "your-value",
        "MCP_SAFE_QUERY_MAX_ROWS": "your-value",
        "MCP_SAFE_QUERY_ENABLE_BLOCKING": "your-value",
        "MCP_METADATA_PATH": "your-value",
        "MCP_TEMPLATES_PATH": "your-value",
        "TOOL_PREFIX": "your-value",
        "MCP_RATE_LIMIT_RPM": "your-value",
        "MYSQL_QUERY_TIMEOUT": "your-value",
        "MYSQL_CONNECTION_LIMIT": "your-value",
        "MYSQL_CONNECT_TIMEOUT": "your-value",
        "MYSQL_RETRY_ATTEMPTS": "your-value",
        "MYSQL_RETRY_DELAY_MS": "your-value",
        "MYSQL_QUEUE_LIMIT": "your-value",
        "MCP_DDL_CACHE_TTL": "your-value",
        "MCP_LOG_LEVEL": "your-value",
        "ALLOW_INSERT_OPERATION": "your-value",
        "ALLOW_UPDATE_OPERATION": "your-value",
        "ALLOW_DELETE_OPERATION": "your-value",
        "ALLOW_DDL_OPERATION": "your-value",
        "DB_SSL": "your-value",
        "DB_SSL_REJECT_UNAUTHORIZED": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "tokenlite-mysql": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@andezdev/tokenlite-mysql-mcp"
      ],
      "env": {
        "DB_HOST": "your-value",
        "DB_PORT": "your-value",
        "DB_USER": "your-value",
        "DB_PASSWORD": "your-value",
        "DB_NAME": "your-value",
        "MCP_EXPLAIN_MAX_SCAN_ROWS": "your-value",
        "MCP_QUERY_ROW_LIMIT": "your-value",
        "MCP_SAFE_QUERY_MAX_ROWS": "your-value",
        "MCP_SAFE_QUERY_ENABLE_BLOCKING": "your-value",
        "MCP_METADATA_PATH": "your-value",
        "MCP_TEMPLATES_PATH": "your-value",
        "TOOL_PREFIX": "your-value",
        "MCP_RATE_LIMIT_RPM": "your-value",
        "MYSQL_QUERY_TIMEOUT": "your-value",
        "MYSQL_CONNECTION_LIMIT": "your-value",
        "MYSQL_CONNECT_TIMEOUT": "your-value",
        "MYSQL_RETRY_ATTEMPTS": "your-value",
        "MYSQL_RETRY_DELAY_MS": "your-value",
        "MYSQL_QUEUE_LIMIT": "your-value",
        "MCP_DDL_CACHE_TTL": "your-value",
        "MCP_LOG_LEVEL": "your-value",
        "ALLOW_INSERT_OPERATION": "your-value",
        "ALLOW_UPDATE_OPERATION": "your-value",
        "ALLOW_DELETE_OPERATION": "your-value",
        "ALLOW_DDL_OPERATION": "your-value",
        "DB_SSL": "your-value",
        "DB_SSL_REJECT_UNAUTHORIZED": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • DB_HOST env
    MySQL Host address (defaults to localhost)
  • DB_PORT env
    MySQL Port (defaults to 3306)
  • DB_USER env
    MySQL Username (defaults to root)
  • DB_PASSWORD 비밀 env
    MySQL Password (defaults to empty string)
  • DB_NAME 필수 env
    MySQL Database name
  • MCP_EXPLAIN_MAX_SCAN_ROWS env
    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_LIMIT env
    Max rows returned per SELECT; injected as LIMIT at the AST level (defaults to 500)
  • MCP_SAFE_QUERY_MAX_ROWS env
    Deprecated alias for MCP_EXPLAIN_MAX_SCAN_ROWS
  • MCP_SAFE_QUERY_ENABLE_BLOCKING env
    Enable or disable the EXPLAIN guardrail (defaults to true)
  • MCP_METADATA_PATH env
    Absolute path to your custom metadata.json dictionary
  • MCP_TEMPLATES_PATH env
    Absolute path to your custom templates.json pre-approved queries
  • TOOL_PREFIX env
    Prefix for tool names, e.g., to run multiple instances (defaults to DB_NAME, e.g. mydb_). Only set to override.
  • MCP_RATE_LIMIT_RPM env
    Max tool invocations per minute, sliding window (defaults to 60). Set to 0 to disable.
  • MYSQL_QUERY_TIMEOUT env
    Max execution time for a query in milliseconds to protect against DoS (defaults to 15000)
  • MYSQL_CONNECTION_LIMIT env
    Max concurrent pool connections (defaults to 10)
  • MYSQL_CONNECT_TIMEOUT env
    Max time to wait for a connection socket to establish in milliseconds (defaults to 10000)
  • MYSQL_RETRY_ATTEMPTS env
    Max retries on transient connection errors (defaults to 3)
  • MYSQL_RETRY_DELAY_MS env
    Base delay in milliseconds for exponential backoff between retries (defaults to 1000)
  • MYSQL_QUEUE_LIMIT env
    Max queued requests when all pool connections are busy to prevent memory leak (defaults to 50)
  • MCP_DDL_CACHE_TTL env
    Time-to-live in seconds for cached DDL statements (defaults to 60)
  • MCP_LOG_LEVEL env
    Minimum severity level for MCP log notifications (defaults to info). Levels: debug, info, notice, warning, error, critical, alert, emergency
  • ALLOW_INSERT_OPERATION env
    Enable INSERT and REPLACE queries (defaults to false)
  • ALLOW_UPDATE_OPERATION env
    Enable UPDATE queries (defaults to false)
  • ALLOW_DELETE_OPERATION env
    Enable DELETE and TRUNCATE queries (defaults to false)
  • ALLOW_DDL_OPERATION env
    Enable Data Definition Language queries like CREATE, ALTER, DROP, RENAME (defaults to false)
  • DB_SSL env
    Enable TLS for the MySQL connection (defaults to false)
  • DB_SSL_REJECT_UNAUTHORIZED env
    Reject self-signed or untrusted TLS certificates when DB_SSL is true (defaults to true)

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 andezdev 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

데이터베이스 및 데이터셋 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 952개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 952개 중 14%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 952개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Tokenlite Mysql MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: DB_PASSWORD, DB_NAME

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(4.1.0)은 5개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Supabase, MongoDB MCP Server, Elasticsearch MCP Server

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Supabase

제작자: supabase

MCP server for interacting with the Supabase platform

컴퓨터 또는 클라우드★ 2,993Apache-2.0오늘 업데이트
설치

MongoDB MCP Server

제작자: mongodb-js

MongoDB Model Context Protocol Server

내 컴퓨터에서 실행★ 1,157Apache-2.0그저께 업데이트
설치

Elasticsearch MCP Server

제작자: cr7258

MCP server for interacting with Elasticsearch

내 컴퓨터에서 실행★ 315Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

TokenLite MySQL MCP

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.


🌟 Core Pillars

  1. Safe-Query Optimizer (AST & EXPLAIN): Protects production databases by pre-analyzing queries. Blocks unindexed Full Table Scans that exceed configurable thresholds and injects strict LIMIT clauses automatically at the AST level.
  2. Granular AST-Based Write Permissions: By default, TokenLite is 100% Read-Only. You can surgically enable specific write operations (INSERT, UPDATE, DELETE, DDL) via environment variables. The firewall uses strict AST parsing to prevent SQL injection and comment-bypass attacks, and strictly prohibits privilege escalation commands (like GRANT or CALL).
  3. Session-Level Defense in Depth: If the server is configured in strict Read-Only mode (all write variables disabled), TokenLite injects 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.
  4. Business Intelligence Injection: Bridges the gap between raw data and company logic. Automatically attaches semantic dictionaries (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.
  5. Graph-Based Semantic Schema: Avoids sending giant schemas to the LLM that saturate the context window. When a table is searched, the engine uses heuristics to deduce implicit relationships and packages the exact "Auto-Join Context".
  6. CSV Token Compression: Database results are efficiently transformed into tabular CSV markdown with unambiguous NULL representation (∅), saving up to 50% of Output Tokens compared to verbose JSON. When results hit the applied LIMIT, a -- rows: N (truncated at LIMIT X) footer is appended so the LLM does not assume a complete dataset.
  7. MCP Completions: Table names and template keywords support the official completions/complete capability for resource templates (mysql://tables/{name}) and the query_templates prompt.

📋 Requirements

  • Node.js v20 or higher
  • MySQL 5.7 or higher (MySQL 8.0+ recommended)
  • A MySQL user with SELECT and SHOW VIEW privileges.

🚀 Installation & Usage

You can use this MCP server with any compatible client. Below are the configurations for the most popular ones.

1. Claude Desktop

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_EXPLAIN_MAX_SCAN_ROWS": "1000", "MCP_QUERY_ROW_LIMIT": "500", "MCP_SAFE_QUERY_ENABLE_BLOCKING": "true" } } } }

2. Claude Code (CLI)

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

3. Cursor IDE

To use within Cursor IDE:

  1. Open Cursor Settings > Features > MCP.
  2. Click + Add New MCP Server.
  3. Set the Type to command.
  4. Name it tokenlite-mysql.
  5. Set the command to:
   npx -y @andezdev/tokenlite-mysql-mcp

*(Note: Cursor handles environment variables directly in the IDE UI, make sure to add your DB credentials there).*


⚙️ Environment Variables Reference

Understanding Query Limits (two independent knobs)

execute_safe_query applies two separate limits. Do not confuse them:

VariableWhat it controlsDefaultExample
MCP_EXPLAIN_MAX_SCAN_ROWSSecurity gate: blocks queries whose EXPLAIN plan shows a full table scan (type: ALL) with more estimated rows than this threshold. The query is rejected *before* execution.10005000 allows scanning tables up to ~5000 rows without an index
MCP_QUERY_ROW_LIMITResult cap: max rows returned to the LLM. Injected as LIMIT at the AST level. When reached, CSV includes -- rows: N (truncated at LIMIT X).5001000 returns up to 1000 rows per SELECT

Deprecated alias: MCP_SAFE_QUERY_MAX_ROWS still works as a fallback for MCP_EXPLAIN_MAX_SCAN_ROWS only. It does not control the result LIMIT.

Worked example with MCP_EXPLAIN_MAX_SCAN_ROWS=5000 and MCP_QUERY_ROW_LIMIT=500 on a customers table (~1502 rows):

  1. SELECT * FROM customers → passes EXPLAIN (1502 < 5000), executes with LIMIT 500, returns 500 rows + truncation footer.
  2. Same config but table has 8000 rows → blocked by EXPLAIN before execution.
VariableDescriptionDefaultRequired
DB_HOSTMySQL Host addresslocalhostNo
DB_PORTMySQL Port3306No
DB_USERMySQL UsernamerootNo
DB_PASSWORDMySQL Password''No
DB_NAMEMySQL Database nametestYes
MCP_EXPLAIN_MAX_SCAN_ROWSEXPLAIN guardrail: max estimated rows for unindexed full table scans before blocking.1000No
MCP_QUERY_ROW_LIMITMax rows returned per SELECT (AST-injected LIMIT + truncation footer).500No
MCP_SAFE_QUERY_ENABLE_BLOCKINGEnable or disable the EXPLAIN guardrail.trueNo
MCP_METADATA_PATHAbsolute path to your custom metadata.json dictionary.(Disabled)No
MCP_TEMPLATES_PATHAbsolute path to your custom templates.json queries.(Disabled)No
TOOL_PREFIXPrefix for tool names (useful when running multiple instances).Derived from DB_NAME (e.g., mydb_). Random fallback only if DB_NAME is unset.No
MCP_RATE_LIMIT_RPMMax tool invocations per minute (sliding window). Set to 0 to disable.60No
MYSQL_QUERY_TIMEOUTMax execution time for a query (in ms). Aborts heavy queries to protect against DoS.15000No
MYSQL_CONNECTION_LIMITMax concurrent pool connections.10No
MYSQL_CONNECT_TIMEOUTMax time to wait for a socket to establish (in ms).10000No
MYSQL_RETRY_ATTEMPTSMax retries on transient connection errors (ECONNREFUSED, PROTOCOL_CONNECTION_LOST, etc.).3No
MYSQL_RETRY_DELAY_MSBase delay (ms) for exponential backoff between retries (1s, 2s, 4s...).1000No
MYSQL_QUEUE_LIMITMax queued requests when all pool connections are busy. Prevents unbounded growth if MySQL is down.50No
MCP_DDL_CACHE_TTLTime-to-live (in seconds) for cached DDL statements. Reduces latency on repeated search_schema calls. Invalidated by refresh_schema.60No
MCP_LOG_LEVELMinimum severity for MCP log notifications: debug, info, notice, warning, error, critical, alert, emergency.infoNo
ALLOW_INSERT_OPERATIONEnable INSERT and REPLACE queries.falseNo
ALLOW_UPDATE_OPERATIONEnable UPDATE queries.falseNo
ALLOW_DELETE_OPERATIONEnable DELETE and TRUNCATE queries.falseNo
ALLOW_DDL_OPERATIONEnable Data Definition Language (CREATE, ALTER, DROP, RENAME).falseNo
DB_SSLEnable TLS for the MySQL connection (recommended for managed/cloud databases).falseNo
DB_SSL_REJECT_UNAUTHORIZEDReject self-signed or untrusted TLS certificates when DB_SSL=true.trueNo

🛡️ Business Intelligence Features (Opt-in)

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" } }

Custom Relationships

Define FK mappings the heuristic engine can't auto-detect (e.g., created_by → users). Add a _relationships key to your metadata.json:

{

"orders.status": { "pending": "...", "shipped": "..." }, "_relationships": { "orders.created_by": "users.id", "categories.parent_id": "categories.id" } }

These are treated as authoritative (not heuristic) and take priority over automatic detection.

The heuristic engine also assigns a confidence score (0–100) to each inferred FK based on name matching (+40), data type validation (+30), primary key verification (+20), and index presence (+10). Only FKs scoring ≥70 are accepted.

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'" } ]


📈 Benchmarks & Token Savings

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
Baseline: Standard MCP Pattern

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.

1. Schema Discovery (Input Tokens)

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).

ScenarioStandard MCP PatternTokenLite📉 Savings
Mock (50 tables, Enterprise CRM)15,566 tokens883 tokens94.3%
Live (9 tables, Test DB)2,208 tokens531 tokens75.9%

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.

2. Query Result Payloads (Output Tokens)

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. When the row count reaches the server-injected LIMIT, results include a truncation footer (e.g. -- rows: 500 (truncated at LIMIT 500)) so agents know more data may exist.

Mock data (varied: NULLs, long descriptions, mixed lengths):

Rows ReturnedStandard MCP Pattern (Tokens)TokenLite CSV (Tokens)📉 Output Savings (%)
10 rows

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기