MCP 문서 관리

메뉴

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 서버는 주로 다음과 같이 구성됩니다:

  1. 환경 변수 설정:

    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

  2. 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"
          }
        }
      }
    }

  3. 고급 구성 옵션:

    {
      "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"
          }
        }
      }
    }

  4. 다중 데이터베이스 모드: 데이터베이스를 지정하지 않으면 MySQL 사용자가 접근할 수 있는 모든 데이터베이스를 쿼리할 수 있습니다. 이 경우 전체 테이블 이름을 명시해야 합니다:

SELECT * FROM database_name.table_name;

또는 USE 문을 사용해 데이터베이스를 전환할 수 있습니다:

USE database_name;
SELECT * FROM table_name;
  1. 데이터베이스별 권한 설정:
    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 서버