db-mcp-server

zerogon1203/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 Database Server

닀쀑 λ°μ΄ν„°λ² μ΄μŠ€ 지원 MCP μ„œλ²„ - Cursor IDE 및 Claude와 연동 κ°€λŠ₯ν•œ Model Context Protocol μ„œλ²„

MySQL, PostgreSQL을 μ§€μ›ν•˜λŠ” κ°•λ ₯ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 뢄석 및 μ‹œκ°ν™” λ„κ΅¬μž…λ‹ˆλ‹€.

✨ μ£Όμš” κΈ°λŠ₯

🎯 닀쀑 λ°μ΄ν„°λ² μ΄μŠ€ 지원

  • MySQL/MariaDB - μ™„μ „ 지원
  • PostgreSQL - μ™„μ „ 지원
  • SQLite - κΈ°λ³Έ 지원 (μ€€λΉ„ 쀑)

πŸ“Š μ‹œκ°ν™” 도ꡬ

  • Mermaid ERD 생성 - λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό Mermaid λ‹€μ΄μ–΄κ·Έλž¨μœΌλ‘œ
  • λ§ˆν¬λ‹€μš΄ ν…Œμ΄λΈ” μš”μ•½ - ν…Œμ΄λΈ” 정보λ₯Ό κΉ”λ”ν•œ ν‘œλ‘œ 정리
  • ASCII μ„±λŠ₯ 차트 - ν…Œμ΄λΈ” 크기와 인덱슀 νš¨μœ¨μ„±μ„ μ‹œκ°μ μœΌλ‘œ

πŸ” 뢄석 κΈ°λŠ₯

  • μŠ€ν‚€λ§ˆ 뢄석 및 쑰회
  • ν…Œμ΄λΈ”λ³„ 톡계 정보
  • μ„±λŠ₯ 병λͺ© 지점 탐지
  • 인덱슀 μ΅œμ ν™” μ œμ•ˆ
  • 쿼리 μ‹€ν–‰ κ³„νš 뢄석

πŸ“¦ μ„€μΉ˜

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 νŒŒμΌμ„ μƒμ„±ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€ 정보λ₯Ό μ„€μ •ν•˜μ„Έμš”:

cp .env.example .env

MySQL/MariaDB μ„€μ •

DB_TYPE=mysql
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=your_database
DB_CHARSET=utf8mb4
DB_PORT=3306

PostgreSQL μ„€μ •

DB_TYPE=postgresql
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=your_database
DB_PORT=5432
DB_SCHEMA=public

SQLite μ„€μ •

DB_TYPE=sqlite
DB_PATH=./database.sqlite

πŸš€ μ‚¬μš©λ²•

Cursor IDE 연동

MCP Server μΆ”κ°€ β†’ Transport: stdio β†’ Command: python main.py

ν™˜κ²½λ³€μˆ˜ κ°œλ³„ μ„€μ •:

{
  "mcpServers": {
    "db-mcp-server": {
      "transport": "stdio",
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/db-mcp-server/main.py"],
      "env": {
        "DB_TYPE": "postgresql",
        "DB_NAME": "your_db_name",
        "DB_HOST": "localhost"
      }
    }
  }
}

πŸ› οΈ μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ듀

πŸ“‹ μŠ€ν‚€λ§ˆ 도ꡬ

  • get_schema - 전체 λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 쑰회
  • get_table_stats - ν…Œμ΄λΈ”λ³„ 톡계 정보
  • get_sample_data - μƒ˜ν”Œ 데이터 쑰회
  • get_column_stats - μ»¬λŸΌλ³„ 상세 톡계

πŸ” 뢄석 도ꡬ

  • execute_query - μ•ˆμ „ν•œ 읽기 μ „μš© 쿼리 μ‹€ν–‰
  • explain_query - 쿼리 μ‹€ν–‰ κ³„νš 뢄석
  • optimize_query - 쿼리 μ΅œμ ν™” μ œμ•ˆ
  • get_db_status - λ°μ΄ν„°λ² μ΄μŠ€ μƒνƒœ 정보
  • get_table_size - ν…Œμ΄λΈ”λ³„ 크기 정보
  • get_index_usage - 인덱슀 μ‚¬μš© 톡계
  • analyze_performance - μ„±λŠ₯ 병λͺ© 지점 뢄석
  • suggest_indexes - 인덱슀 생성 μ œμ•ˆ
  • optimize_tables - ν…Œμ΄λΈ” μ΅œμ ν™” μ œμ•ˆ

🎨 μ‹œκ°ν™” 도ꡬ

  • generate_schema_mermaid - Mermaid ERD λ‹€μ΄μ–΄κ·Έλž¨ 생성
  • generate_tables_summary - λ§ˆν¬λ‹€μš΄ ν…Œμ΄λΈ” μš”μ•½
  • generate_performance_report - μ„±λŠ₯ 뢄석 리포트 (ASCII 차트 포함)

πŸ“Š μ‚¬μš© μ˜ˆμ‹œ

μŠ€ν‚€λ§ˆ μ‹œκ°ν™”

😊 μ‚¬μš©μž: "λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό ERD둜 λ³΄μ—¬μ€˜"
πŸ€– AI: generate_schema_mermaid() μ‹€ν–‰ β†’ Mermaid λ‹€μ΄μ–΄κ·Έλž¨ 제곡

μ„±λŠ₯ 뢄석

😊 μ‚¬μš©μž: "μ„±λŠ₯ λ¬Έμ œκ°€ μžˆλŠ”μ§€ λΆ„μ„ν•΄μ€˜"  
πŸ€– AI: analyze_performance() β†’ generate_performance_report() μ‹€ν–‰
     β†’ ASCII μ°¨νŠΈμ™€ ν•¨κ»˜ μƒμ„Έν•œ μ„±λŠ₯ 리포트 제곡

ν…Œμ΄λΈ” ν˜„ν™© μš”μ•½

😊 μ‚¬μš©μž: "ν…Œμ΄λΈ”λ“€ ν˜„ν™©μ„ μš”μ•½ν•΄μ€˜"
πŸ€– AI: generate_tables_summary() μ‹€ν–‰ β†’ λ§ˆν¬λ‹€μš΄ ν…Œμ΄λΈ” μš”μ•½ 제곡

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

db-mcp-server/
β”œβ”€β”€ main.py                 # MCP μ„œλ²„ 메인 파일
β”œβ”€β”€ .env.example            # ν™˜κ²½λ³€μˆ˜ μ˜ˆμ‹œ 파일
β”œβ”€β”€ requirements.txt        # Python μ˜μ‘΄μ„±
β”œβ”€β”€ adapters/               # λ°μ΄ν„°λ² μ΄μŠ€ μ–΄λŒ‘ν„°
β”‚   β”œβ”€β”€ __init__.py        
β”‚   β”œβ”€β”€ base.py            # 베이슀 μ–΄λŒ‘ν„° 클래슀
β”‚   β”œβ”€β”€ mysql.py           # MySQL/MariaDB μ–΄λŒ‘ν„°
β”‚   └── postgresql.py      # PostgreSQL μ–΄λŒ‘ν„°
└── tools/                 # MCP 도ꡬ λͺ¨λ“ˆ
    β”œβ”€β”€ __init__.py
    β”œβ”€β”€ schema_tools.py     # μŠ€ν‚€λ§ˆ κ΄€λ ¨ 도ꡬ
    β”œβ”€β”€ analysis_tools.py   # 뢄석 κ΄€λ ¨ 도ꡬ
    └── visualization_tools.py # μ‹œκ°ν™” κ΄€λ ¨ 도ꡬ

πŸš€ ν™•μž₯μ„±

μƒˆλ‘œμš΄ λ°μ΄ν„°λ² μ΄μŠ€ μΆ”κ°€

  1. adapters/ 폴더에 μƒˆ μ–΄λŒ‘ν„° 클래슀 생성
  2. DatabaseAdapter 베이슀 클래슀 상속
  3. ν•„μš”ν•œ λ©”μ„œλ“œλ“€ κ΅¬ν˜„
  4. adapters/__init__.py의 νŒ©ν† λ¦¬ ν•¨μˆ˜μ— μΆ”κ°€

μƒˆλ‘œμš΄ 도ꡬ μΆ”κ°€

  1. ν•΄λ‹Ή μΉ΄ν…Œκ³ λ¦¬μ˜ tools/ λͺ¨λ“ˆμ— ν•¨μˆ˜ μΆ”κ°€
  2. @mcp.tool() λ°μ½”λ ˆμ΄ν„°λ‘œ 등둝
  3. μ–΄λŒ‘ν„°μ˜ λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜μ—¬ κ΅¬ν˜„

πŸ“‹ μš”κ΅¬μ‚¬ν•­

  • Python 3.8+
  • λ°μ΄ν„°λ² μ΄μŠ€:
    • MySQL/MariaDB 5.7+
    • PostgreSQL 12+
    • SQLite 3.x

🀝 κΈ°μ—¬ν•˜κΈ°

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ λΌμ΄μ„ΌμŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ΌμŠ€ ν•˜μ— μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.