Supabase
server ทางการของ Supabase ให้ AI สร้างตาราง ถามข้อมูล และดูการตั้งค่าโปรเจกต์ในฐานข้อมูล Supabase ของคุณ
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
A secure, efficient, and intelligent MySQL server for the Model Context Protocol
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
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ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"tokenlite-mysql": {
"command": "npx",
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp"
],
"env": {
"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": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add tokenlite-mysql --env DB_HOST='ใส่ค่าของคุณ' --env DB_PORT='ใส่ค่าของคุณ' --env DB_USER='ใส่ค่าของคุณ' --env DB_PASSWORD='ใส่ค่าของคุณ' --env DB_NAME='ใส่ค่าของคุณ' --env MCP_EXPLAIN_MAX_SCAN_ROWS='ใส่ค่าของคุณ' --env MCP_QUERY_ROW_LIMIT='ใส่ค่าของคุณ' --env MCP_SAFE_QUERY_MAX_ROWS='ใส่ค่าของคุณ' --env MCP_SAFE_QUERY_ENABLE_BLOCKING='ใส่ค่าของคุณ' --env MCP_METADATA_PATH='ใส่ค่าของคุณ' --env MCP_TEMPLATES_PATH='ใส่ค่าของคุณ' --env TOOL_PREFIX='ใส่ค่าของคุณ' --env MCP_RATE_LIMIT_RPM='ใส่ค่าของคุณ' --env MYSQL_QUERY_TIMEOUT='ใส่ค่าของคุณ' --env MYSQL_CONNECTION_LIMIT='ใส่ค่าของคุณ' --env MYSQL_CONNECT_TIMEOUT='ใส่ค่าของคุณ' --env MYSQL_RETRY_ATTEMPTS='ใส่ค่าของคุณ' --env MYSQL_RETRY_DELAY_MS='ใส่ค่าของคุณ' --env MYSQL_QUEUE_LIMIT='ใส่ค่าของคุณ' --env MCP_DDL_CACHE_TTL='ใส่ค่าของคุณ' --env MCP_LOG_LEVEL='ใส่ค่าของคุณ' --env ALLOW_INSERT_OPERATION='ใส่ค่าของคุณ' --env ALLOW_UPDATE_OPERATION='ใส่ค่าของคุณ' --env ALLOW_DELETE_OPERATION='ใส่ค่าของคุณ' --env ALLOW_DDL_OPERATION='ใส่ค่าของคุณ' --env DB_SSL='ใส่ค่าของคุณ' --env DB_SSL_REJECT_UNAUTHORIZED='ใส่ค่าของคุณ' -- npx -y @andezdev/tokenlite-mysql-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"tokenlite-mysql": {
"command": "npx",
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp"
],
"env": {
"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": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"tokenlite-mysql": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@andezdev/tokenlite-mysql-mcp"
],
"env": {
"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": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
DB_HOST envDB_PORT envDB_USER envMCP_EXPLAIN_MAX_SCAN_ROWS envMCP_QUERY_ROW_LIMIT envMCP_SAFE_QUERY_MAX_ROWS envMCP_SAFE_QUERY_ENABLE_BLOCKING envMCP_METADATA_PATH envMCP_TEMPLATES_PATH envTOOL_PREFIX envMCP_RATE_LIMIT_RPM envMYSQL_QUERY_TIMEOUT envMYSQL_CONNECTION_LIMIT envMYSQL_CONNECT_TIMEOUT envMYSQL_RETRY_ATTEMPTS envMYSQL_RETRY_DELAY_MS envMYSQL_QUEUE_LIMIT envMCP_DDL_CACHE_TTL envMCP_LOG_LEVEL envALLOW_INSERT_OPERATION envALLOW_UPDATE_OPERATION envALLOW_DELETE_OPERATION envALLOW_DDL_OPERATION envDB_SSL envDB_SSL_REJECT_UNAUTHORIZED envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub andezdev ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: DB_PASSWORD, DB_NAME
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (4.1.0) เข้า registry 5 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Supabase, MongoDB MCP Server, Elasticsearch MCP Server
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ Supabase ให้ AI สร้างตาราง ถามข้อมูล และดูการตั้งค่าโปรเจกต์ในฐานข้อมูล Supabase ของคุณ
MongoDB Model Context Protocol Server
MCP server for interacting with Elasticsearch
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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.∅), 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.completions/complete capability for resource templates (mysql://tables/{name}) and the query_templates prompt.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_EXPLAIN_MAX_SCAN_ROWS": "1000", "MCP_QUERY_ROW_LIMIT": "500", "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).*
execute_safe_query applies two separate limits. Do not confuse them:
| Variable | What it controls | Default | Example |
|---|---|---|---|
MCP_EXPLAIN_MAX_SCAN_ROWS | Security 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. | 1000 | 5000 allows scanning tables up to ~5000 rows without an index |
MCP_QUERY_ROW_LIMIT | Result cap: max rows returned to the LLM. Injected as LIMIT at the AST level. When reached, CSV includes -- rows: N (truncated at LIMIT X). | 500 | 1000 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):
SELECT * FROM customers → passes EXPLAIN (1502 < 5000), executes with LIMIT 500, returns 500 rows + truncation footer.| 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_EXPLAIN_MAX_SCAN_ROWS | EXPLAIN guardrail: max estimated rows for unindexed full table scans before blocking. | 1000 | No |
MCP_QUERY_ROW_LIMIT | Max rows returned per SELECT (AST-injected LIMIT + truncation footer). | 500 | 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). | Derived from DB_NAME (e.g., mydb_). Random fallback only if DB_NAME is unset. | No |
MCP_RATE_LIMIT_RPM | Max tool invocations per minute (sliding window). Set to 0 to disable. | 60 | 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 |
DB_SSL | Enable TLS for the MySQL connection (recommended for managed/cloud databases). | false | No |
DB_SSL_REJECT_UNAUTHORIZED | Reject self-signed or untrusted TLS certificates when DB_SSL=true. | true | 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" } }
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'" } ]
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 (9 tables, Test DB) | 2,208 tokens | 531 tokens | 75.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.
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 Returned | Standard MCP Pattern (Tokens) | TokenLite CSV (Tokens) | 📉 Output Savings (%) |
|---|---|---|---|
| 10 rows |
ตัดมาแค่ช่วงต้น อ่านต่อใน repo