db-mcp-server

db-mcp-server

3.3

If you are the rightful owner of db-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project is a Model Context Protocol (MCP) Stdio server compatible with Cursor IDE, designed to return the table structure and relationships of MySQL or MariaDB databases.

MCP Stdio Server (MySQL/MariaDB)

์ด ํ”„๋กœ์ ํŠธ๋Š” Cursor IDE์™€ ์—ฐ๋™ ๊ฐ€๋Šฅํ•œ Model Context Protocol (MCP) Stdio ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. MySQL ๋˜๋Š” MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์™€ ๊ด€๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

โœ… ๊ธฐ๋Šฅ

  • MCP ๊ณต์‹ Python SDK ๊ธฐ๋ฐ˜
  • stdio ๋ชจ๋“œ๋กœ Cursor IDE ์—ฐ๋™
  • .env ํŒŒ์ผ ๊ธฐ๋ฐ˜ DB ์„ค์ •
  • ํ…Œ์ด๋ธ” ๋ชฉ๋ก, ์ปฌ๋Ÿผ, ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„ ๋ฐ˜ํ™˜
  • ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ๋ถ„์„ ๊ธฐ๋Šฅ
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ๋ฐ ์ตœ์ ํ™” ๊ธฐ๋Šฅ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ
  • ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐ ์ตœ์ ํ™” ์ œ์•ˆ

๐Ÿ“ฆ ์„ค์น˜

git clone <this-repo-url>
cd db-mcp-server
python -m venv venv
source venv/bin/activate  # ๋˜๋Š” venv\Scripts\activate (Windows)
pip install -r requirements.txt

โš™๏ธ .env ์„ค์ •

๋ฃจํŠธ์— .env ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์„ธ์š”:

# Database connection settings for MCP Python server
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=your_db
DB_CHARSET=utf8mb4

๐Ÿš€ ์‹คํ–‰

Cursor IDE์—์„œ MCP Server ์ถ”๊ฐ€ > Transport: stdio > Command: python main.py

Cursor IDE์— MCP ์„œ๋ฒ„ ์ถ”๊ฐ€์‹œ JSON env ํ™˜๊ฒฝ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ณ„ DB ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ก ์ง€์› ๋ฉ”์„œ๋“œ

์Šคํ‚ค๋งˆ ์กฐํšŒ

  • mysql.get_schema: ๋ชจ๋“  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ + ์™ธ๋ž˜ํ‚ค ๋ฐ˜ํ™˜

๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ๋ถ„์„

  • mysql.get_table_stats: ํ…Œ์ด๋ธ”๋ณ„ ํ†ต๊ณ„ ์ •๋ณด (ํ–‰ ์ˆ˜, NULL ๊ฐ’ ๋น„์œจ, ๊ณ ์œ ๊ฐ’ ์ˆ˜)
  • mysql.get_sample_data: ํ…Œ์ด๋ธ”์˜ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • mysql.get_column_stats: ํŠน์ • ์ปฌ๋Ÿผ์˜ ์ƒ์„ธ ํ†ต๊ณ„ ์ •๋ณด

์ฟผ๋ฆฌ ์‹คํ–‰ ๋ฐ ์ตœ์ ํ™”

  • mysql.execute_query: ์•ˆ์ „ํ•œ ์ฝ๊ธฐ ์ „์šฉ ์ฟผ๋ฆฌ ์‹คํ–‰
  • mysql.explain_query: ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„
  • mysql.optimize_query: ์ฟผ๋ฆฌ ์ตœ์ ํ™” ์ œ์•ˆ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง

  • mysql.get_db_status: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ ์ •๋ณด (์—ฐ๊ฒฐ ์ˆ˜, ์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋“ฑ)
  • mysql.get_table_size: ํ…Œ์ด๋ธ”๋ณ„ ํฌ๊ธฐ ์ •๋ณด
  • mysql.get_index_usage: ์ธ๋ฑ์Šค ์‚ฌ์šฉ ํ†ต๊ณ„

์„ฑ๋Šฅ ๋ถ„์„

  • mysql.analyze_performance: ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ์ง€์  ๋ถ„์„
  • mysql.suggest_indexes: ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ œ์•ˆ
  • mysql.optimize_tables: ํ…Œ์ด๋ธ” ์ตœ์ ํ™” ์ œ์•ˆ

๐Ÿ“ ์˜ˆ์‹œ ๊ฒฐ๊ณผ

์Šคํ‚ค๋งˆ ์กฐํšŒ

{
  "schema": {
    "users": {
      "columns": [...],
      "foreign_keys": [...]
    }
  }
}

ํ…Œ์ด๋ธ” ํ†ต๊ณ„

{
  "table_name": "users",
  "total_rows": 1000,
  "column_stats": {
    "id": {
      "total_rows": 1000,
      "null_count": 0,
      "null_ratio": 0.0,
      "unique_values": 1000
    }
  }
}

์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš

{
  "explain_plan": [...],
  "handler_stats": {...},
  "suggestions": [
    {
      "type": "index",
      "message": "์ •๋ ฌ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ORDER BY ์ ˆ์— ์‚ฌ์šฉ๋œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”."
    }
  ]
}

์„ฑ๋Šฅ ๋ถ„์„

{
  "slow_queries": 5,
  "bottlenecks": [
    {
      "type": "large_table",
      "table": "orders",
      "rows": 1500000,
      "message": "ํ…Œ์ด๋ธ” 'orders'์ด(๊ฐ€) 1,500,000๊ฐœ์˜ ํ–‰์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์„ ๊ณ ๋ คํ•˜์„ธ์š”."
    }
  ],
  "recommendations": [...]
}

โœ… ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.8+
  • MySQL/MariaDB

๐Ÿ› ๏ธ Cursor IDE์—์„œ MCP ์„œ๋ฒ„ ์‚ฌ์šฉ๋ฒ•

Cursor IDE์—์„œ MCP Server๋ฅผ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋“ฑ๋กํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ JSON ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•˜์—ฌ ๊ฐ ํ”„๋กœ์ ํŠธ๋ณ„ DB ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

{
  "mcpServers": {
    "db-mcp-server": {
      "transport": "stdio",
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/db-mcp-server/main.py"],
      "env": {
        "DB_NAME": "your_db_name"
      }
    }
  }
}
  • env ํ•ญ๋ชฉ์— DB ์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME ๋“ฑ)๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ DB์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.