# MySQL MCP 서버 [![smithery badge](https://smithery.ai/badge/@aqaranewbiz/mysql-aqaranewbiz)](https://smithery.ai/server/@aqaranewbiz/mysql-aqaranewbiz) 이 프로젝트는 Smithery의 Model Context Protocol (MCP)을 사용하여 MySQL 데이터베이스와 상호작용하는 서버입니다. ## Installation ### Installing via Smithery To install MySQL Server for Claude Desktop automatically via Smithery: ```bash npx -y @smithery/cli install @aqaranewbiz/mysql-aqaranewbiz --client claude ``` ### Manual Installation ```bash npx @aqaranewbiz/mysql-aqaranewbiz ``` ## Configuration The server requires the following environment variables to be set in your MCP settings configuration file: ```json { "mcpServers": { "mysql": { "command": "npx", "args": ["-y", "@aqaranewbiz/mysql-aqaranewbiz"], "env": { "MYSQL_HOST": "your_host", "MYSQL_USER": "your_user", "MYSQL_PASSWORD": "your_password", "MYSQL_DATABASE": "your_database" } } } } ``` ## Available Tools ### 1. connect_db Establish connection to MySQL database using provided credentials. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript use_mcp_tool({ server_name: "mysql", tool_name: "list_tables", arguments: {} }); ``` ### 5. describe_table Get the structure of a specific table. ```javascript 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` 파일 생성: ```env MYSQL_HOST=your_mysql_host MYSQL_USER=your_mysql_user MYSQL_PASSWORD=your_mysql_password MYSQL_DATABASE=your_database_name ``` ### 설치 방법 #### 로컬 설치 (권장) 1. Python 가상환경 생성 및 활성화: ```bash # Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate ``` 2. 의존성 설치: ```bash pip install -r requirements.txt ``` 3. 서버 실행: ```bash python mcp_server.py ``` #### Docker 설치 1. Docker 이미지 빌드: ```bash docker build -t mysql-mcp-server . ``` 2. 컨테이너 실행: ```bash docker run -e MYSQL_HOST=host -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db mysql-mcp-server ``` ### 로컬 개발 설정 1. 개발 환경 설정: ```bash # 개발용 의존성 설치 pip install -r requirements-dev.txt # 필요한 경우 생성 # 코드 포맷팅 및 린팅 설정 pip install black flake8 ``` 2. 코드 실행: ```bash # 개발 모드로 실행 python mcp_server.py --dev ``` 3. 테스트 실행: ```bash # 테스트 실행 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 커넥터 버전 확인 ### 로깅 서버는 기본적으로 로그를 표준 출력에 기록합니다. 로컬 설치 시 로그 레벨을 조정하려면: ```bash python mcp_server.py --log-level DEBUG ``` Docker를 사용하는 경우 로그를 확인하려면: ```bash 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` 파일을 참조하세요. ## 연락처 문의사항이 있으시면 이슈를 생성해주세요.