# MySQL MCP Tools MySQL 데이터베이스와 상호작용할 수 있는 MCP (Model Context Protocol) 도구입니다. ## 환경 변수 설정 `.env` 파일에 다음 환경 변수를 설정하세요: ```bash MYSQL_HOST=localhost # MySQL 서버 호스트 MYSQL_PORT=3306 # MySQL 서버 포트 MYSQL_USER=root # MySQL 사용자명 MYSQL_PASSWORD=password # MySQL 비밀번호 MYSQL_DATABASE=mydb # 기본 데이터베이스 (선택사항) ``` ## 사용 가능한 도구 ### 1. `mysql.mysql_execute_query` SELECT 쿼리를 실행하고 결과를 반환합니다. **매개변수:** - `query` (string, 필수): 실행할 SQL SELECT 쿼리 - `database` (string, 선택): 사용할 데이터베이스 이름 (환경 변수 재정의) **예시:** ```python mysql.mysql_execute_query( query="SELECT * FROM users LIMIT 10" ) ``` **반환값:** ```json { "columns": ["id", "name", "email"], "rows": [ [1, "John Doe", "john@example.com"], [2, "Jane Smith", "jane@example.com"] ], "row_count": 2 } ``` **보안:** 안전을 위해 SELECT, SHOW, DESCRIBE 쿼리만 허용됩니다. ### 2. `mysql.mysql_list_databases` MySQL 서버의 모든 데이터베이스를 나열합니다. **매개변수:** 없음 **예시:** ```python mysql.mysql_list_databases() ``` **반환값:** ```json { "databases": ["information_schema", "mysql", "mydb", "testdb"], "count": 4 } ``` ### 3. `mysql.mysql_list_tables` 데이터베이스의 모든 테이블을 나열합니다. **매개변수:** - `database` (string, 선택): 데이터베이스 이름 (제공하지 않으면 환경 변수 사용) **예시:** ```python mysql.mysql_list_tables(database="mydb") ``` **반환값:** ```json { "database": "mydb", "tables": ["users", "orders", "products"], "count": 3 } ``` ### 4. `mysql.mysql_describe_table` 테이블 구조(컬럼, 타입 등)를 조회합니다. **매개변수:** - `table_name` (string, 필수): 조회할 테이블 이름 - `database` (string, 선택): 데이터베이스 이름 **예시:** ```python mysql.mysql_describe_table( table_name="users", database="mydb" ) ``` **반환값:** ```json { "database": "mydb", "table": "users", "columns": [ { "field": "id", "type": "int(11)", "null": "NO", "key": "PRI", "default": null, "extra": "auto_increment" }, { "field": "name", "type": "varchar(255)", "null": "YES", "key": "", "default": null, "extra": "" } ], "column_count": 2 } ``` ## 보안 고려사항 - **읽기 전용**: `mysql_execute_query`는 SELECT, SHOW, DESCRIBE 쿼리만 허용합니다. - **INSERT, UPDATE, DELETE, DROP 등의 쿼리는 거부됩니다.** - 민감한 데이터베이스 작업이 필요한 경우 별도의 보안 조치가 필요합니다. ## 에러 처리 모든 도구는 에러 발생 시 `error` 필드를 포함한 응답을 반환합니다: ```json { "error": "MySQL Error: Access denied for user...", "columns": [], "rows": [], "row_count": 0 } ``` ## 연결 관리 - 각 쿼리는 독립적인 연결을 생성하고 자동으로 종료합니다. - 연결 풀링은 mysql-connector-python이 내부적으로 관리합니다. - 장시간 실행되는 쿼리의 경우 타임아웃 설정을 고려하세요.