링크된 문서
MySQL
MySQL
MySQL MCP 서버는 MySQL 데이터베이스와 상호작용할 수 있는 Model Context Protocol 서버입니다. 이 서버는 LLM이 데이터베이스 스키마를 검사하고 SQL 쿼리를 실행할 수 있도록 하며, 구성 가능한 접근 제어 기능을 통해 보안을 유지합니다.
특징
- 데이터베이스 스키마 검사 및 탐색 기능
- 읽기 전용 또는 읽기/쓰기 접근 지원(구성 가능)
- 준비된 명령문(prepared statements)을 통한 보안 쿼리 실행
- 테이블 목록 및 테이블 구조 확인 기능
- 단일 데이터베이스 또는 다중 데이터베이스 모드 지원
- 데이터베이스 별 권한 설정 가능
- 풀링(connection pooling) 및 쿼리 타임아웃 설정 기능
API
리소스
MySQL MCP 서버는 주로 도구(tools)를 통한 상호작용을 제공하며 별도의 리소스는 노출하지 않습니다.
도구
connect_db
MySQL 데이터베이스에 연결합니다. - 입력: - host: 데이터베이스 호스트 - user: 사용자 이름 - password: 비밀번호 - database: 데이터베이스 이름
query
SELECT 쿼리를 실행합니다. - 입력: - sql: 실행할 SQL 쿼리 문자열 - params: (선택적) 준비된 명령문에 사용할 매개변수 배열
execute
INSERT, UPDATE, DELETE 쿼리를 실행합니다. - 입력: - sql: 실행할 SQL 쿼리 문자열 - params: (선택적) 준비된 명령문에 사용할 매개변수 배열
list_tables
연결된 데이터베이스의 모든 테이블을 나열합니다. - 입력: 없음
describe_table
특정 테이블의 구조를 확인합니다. - 입력: - table: 구조를 확인할 테이블 이름
사용 방법
MySQL MCP 서버는 주로 다음과 같이 구성됩니다:
-
환경 변수 설정:
MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=your_database ALLOW_INSERT_OPERATION=false ALLOW_UPDATE_OPERATION=false ALLOW_DELETE_OPERATION=false -
Claude Desktop 구성:
{ "mcpServers": { "mysql": { "command": "npx", "args": ["-y", "@benborla29/mcp-server-mysql"], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database", "ALLOW_INSERT_OPERATION": "false", "ALLOW_UPDATE_OPERATION": "false", "ALLOW_DELETE_OPERATION": "false" } } } } -
고급 구성 옵션:
{ "mcpServers": { "mysql": { "command": "npx", "args": ["-y", "@benborla29/mcp-server-mysql"], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database", "MYSQL_POOL_SIZE": "10", "MYSQL_QUERY_TIMEOUT": "30000", "MYSQL_CACHE_TTL": "60000", "MYSQL_RATE_LIMIT": "100", "MYSQL_MAX_QUERY_COMPLEXITY": "1000", "MYSQL_SSL": "true", "MYSQL_ENABLE_LOGGING": "true", "MYSQL_LOG_LEVEL": "info" } } } } -
다중 데이터베이스 모드: 데이터베이스를 지정하지 않으면 MySQL 사용자가 접근할 수 있는 모든 데이터베이스를 쿼리할 수 있습니다. 이 경우 전체 테이블 이름을 명시해야 합니다:
SELECT * FROM database_name.table_name;
또는 USE 문을 사용해 데이터베이스를 전환할 수 있습니다:
USE database_name;
SELECT * FROM table_name;
- 데이터베이스별 권한 설정:
SCHEMA_INSERT_PERMISSIONS=development:true,test:true,production:false SCHEMA_UPDATE_PERMISSIONS=development:true,test:true,production:false SCHEMA_DELETE_PERMISSIONS=development:false,test:true,production:false SCHEMA_DDL_PERMISSIONS=development:false,test:true,production:false
보안 고려사항
- 기본적으로 모든 쓰기 작업(INSERT, UPDATE, DELETE)은 비활성화되어 있습니다.
- 필요한 경우에만 쓰기 작업을 활성화하세요.
- 읽기 전용 작업만 필요한 경우 읽기 권한만 있는 MySQL 사용자를 사용하세요.
- 민감한 데이터베이스에는 별도의 제한된 권한을 가진 사용자를 사용하세요.
연결된 구성 요소
- PostgreSQL - PostgreSQL 데이터베이스와 상호작용하기 위한 MCP 서버
- MariaDB - MySQL과 호환되는 MariaDB 데이터베이스와 상호작용하기 위한 MCP 서버
- MSSQL - Microsoft SQL Server와 상호작용하기 위한 MCP 서버
- DBHub - MySQL, PostgreSQL, SQLite, DuckDB 등에 연결하는 범용 데이터베이스 MCP 서버