Labsco
aqaranewbiz logo

MySQL MCP Server

from aqaranewbiz

A MySQL server that connects to a database using environment variables for configuration.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredNeeds API keys

MySQL MCP μ„œλ²„

smithery badge 이 ν”„λ‘œμ νŠΈλŠ” Smithery의 Model Context Protocol (MCP)을 μ‚¬μš©ν•˜μ—¬ MySQL λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€.

Available Tools

1. connect_db

Establish connection to MySQL database using provided credentials.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "connect_db",
  arguments: {
    host: "localhost",
    user: "your_user",
    password: "your_password",
    database: "your_database"
  }
});

2. query

Execute SELECT queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "query",
  arguments: {
    sql: "SELECT * FROM users WHERE id = ?",
    params: [1]
  }
});

3. execute

Execute INSERT, UPDATE, or DELETE queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "execute",
  arguments: {
    sql: "INSERT INTO users (name, email) VALUES (?, ?)",
    params: ["John Doe", "john@example.com"]
  }
});

4. list_tables

List all tables in the connected database.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "list_tables",
  arguments: {}
});

5. describe_table

Get the structure of a specific table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "describe_table",
  arguments: {
    table: "users"
  }
});

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

  • MySQL λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 및 쿼리 μ‹€ν–‰
  • MCP ν”„λ‘œν† μ½œμ„ ν†΅ν•œ ν‘œμ€€ν™”λœ API 제곡
  • FastAPI 기반의 RESTful API μ—”λ“œν¬μΈνŠΈ
  • ν™˜κ²½ λ³€μˆ˜λ₯Ό ν†΅ν•œ μ„€μ • 관리

μ‹œμž‘ν•˜κΈ°

ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

  • Python 3.11 이상
  • MySQL μ„œλ²„
  • Docker (선택사항)

ν™˜κ²½ μ„€μ •

  1. .env 파일 생성:
MYSQL_HOST=your_mysql_host
MYSQL_USER=your_mysql_user
MYSQL_PASSWORD=your_mysql_password
MYSQL_DATABASE=your_database_name

μ„€μΉ˜ 방법

둜컬 μ„€μΉ˜ (ꢌμž₯)

  1. Python κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™”:
# Windows
python -m venv venv
venv\Scripts\activate

# macOS/Linux
python3 -m venv venv
source venv/bin/activate
  1. μ˜μ‘΄μ„± μ„€μΉ˜:
pip install -r requirements.txt
  1. μ„œλ²„ μ‹€ν–‰:
python mcp_server.py

Docker μ„€μΉ˜

  1. Docker 이미지 λΉŒλ“œ:
docker build -t mysql-mcp-server .
  1. μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰:
docker run -e MYSQL_HOST=host -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db mysql-mcp-server

둜컬 개발 μ„€μ •

  1. 개발 ν™˜κ²½ μ„€μ •:
# 개발용 μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements-dev.txt  # ν•„μš”ν•œ 경우 생성

# μ½”λ“œ ν¬λ§·νŒ… 및 λ¦°νŒ… μ„€μ •
pip install black flake8
  1. μ½”λ“œ μ‹€ν–‰:
# 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰
python mcp_server.py --dev
  1. ν…ŒμŠ€νŠΈ μ‹€ν–‰:
# ν…ŒμŠ€νŠΈ μ‹€ν–‰
python -m pytest tests/

API μ—”λ“œν¬μΈνŠΈ

μ„œλ²„ 정보 쑰회

GET /status

μ„œλ²„μ˜ μƒνƒœμ™€ μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ λͺ©λ‘μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

쿼리 μ‹€ν–‰

POST /execute

MySQL 쿼리λ₯Ό μ‹€ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

개발 κ°€μ΄λ“œ

ν”„λ‘œμ νŠΈ ꡬ쑰

@MCP-Server-for-Smithery/
β”œβ”€β”€ mcp_server.py      # 메인 μ„œλ²„ μ½”λ“œ
β”œβ”€β”€ requirements.txt   # Python μ˜μ‘΄μ„±
β”œβ”€β”€ Dockerfile        # Docker μ„€μ •
β”œβ”€β”€ .env              # ν™˜κ²½ λ³€μˆ˜ (ν…œν”Œλ¦Ώ)
└── tests/            # ν…ŒμŠ€νŠΈ μ½”λ“œ

μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€

  1. mcp_server.py에 μƒˆλ‘œμš΄ 도ꡬ μΆ”κ°€
  2. ν•„μš”ν•œ μ˜μ‘΄μ„± requirements.txt에 μΆ”κ°€
  3. ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±
  4. Docker 이미지 μž¬λΉŒλ“œ (Docker μ‚¬μš© μ‹œ)

문제 ν•΄κ²°

일반적인 문제

  1. μ—°κ²° 였λ₯˜:

    • MySQL μ„œλ²„κ°€ μ‹€ν–‰ 쀑인지 확인
    • ν™˜κ²½ λ³€μˆ˜κ°€ μ˜¬λ°”λ₯΄κ²Œ μ„€μ •λ˜μ—ˆλŠ”μ§€ 확인
    • 둜컬 μ„€μΉ˜ μ‹œ MySQL ν΄λΌμ΄μ–ΈνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ 확인
  2. 쿼리 μ‹€ν–‰ 였λ₯˜:

    • SQL ꡬ문 검사
    • λ°μ΄ν„°λ² μ΄μŠ€ κΆŒν•œ 확인
    • 둜컬 μ„€μΉ˜ μ‹œ MySQL 컀λ„₯ν„° 버전 확인

λ‘œκΉ…

μ„œλ²„λŠ” 기본적으둜 둜그λ₯Ό ν‘œμ€€ 좜λ ₯에 κΈ°λ‘ν•©λ‹ˆλ‹€. 둜컬 μ„€μΉ˜ μ‹œ 둜그 λ ˆλ²¨μ„ μ‘°μ •ν•˜λ €λ©΄:

python mcp_server.py --log-level DEBUG

Dockerλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 둜그λ₯Ό ν™•μΈν•˜λ €λ©΄:

docker logs [container-id]

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

  1. 이슈 생성
  2. 브랜치 생성 (git checkout -b feature/AmazingFeature)
  3. 변경사항 컀밋 (git commit -m 'Add some AmazingFeature')
  4. 브랜치 ν‘Έμ‹œ (git push origin feature/AmazingFeature)
  5. Pull Request 생성

λΌμ΄μ„ μŠ€

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

μ—°λ½μ²˜

λ¬Έμ˜μ‚¬ν•­μ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”.