MCP 문서 관리

메뉴

DevDb

DevDb

DevDb MCP 서버는 IDE 내부에서 직접 실행되어 MySQL, PostgreSQL, SQLite, MSSQL 등 다양한 데이터베이스에 연결할 수 있는 Model Context Protocol 서버입니다. 개발자가 코드 편집기에서 벗어나지 않고도 데이터베이스를 쿼리하고 관리할 수 있도록 설계되었습니다.

특징

  • MySQL, PostgreSQL, SQLite, MSSQL 데이터베이스 지원
  • 코드 편집기 내에서 직접 데이터베이스 쿼리 실행
  • 데이터베이스 스키마 탐색 및 시각화
  • 여러 연결 프로필 관리
  • SQL 쿼리 실행 및 결과 표시
  • 테이블 구조 조회 및 수정
  • 안전한 자격 증명 관리
  • 쿼리 기록 및 저장 기능
  • 다양한 IDE 플러그인과 통합(VSCode, IntelliJ 등)
  • 쿼리 성능 분석 및 최적화 제안
  • 개발/테스트/운영 환경 간 전환 지원
  • 데이터베이스 변경 사항 롤백 기능

API

리소스

connection://{connection_id}

  • 특정 데이터베이스 연결에 대한 정보와 상태를 제공합니다.

schema://{connection_id}/{database_name}

  • 특정 데이터베이스의 스키마 정보를 제공합니다.

도구

연결 관리

list_connections

사용 가능한 모든 데이터베이스 연결을 나열합니다. - 입력: 없음 - 출력: 연결 ID, 이름, 유형, 호스트 등을 포함한 연결 목록

create_connection

새 데이터베이스 연결을 생성합니다. - 입력: - name: 연결 이름 - type: 데이터베이스 유형 (mysql, postgres, sqlite, mssql) - host: (선택적) 호스트 주소 - port: (선택적) 포트 번호 - username: (선택적) 사용자 이름 - password: (선택적) 비밀번호 - database: (선택적) 데이터베이스 이름 - file_path: (선택적, SQLite용) 데이터베이스 파일 경로 - ssl: (선택적) SSL 설정 - connection_string: (선택적) 연결 문자열 - 출력: 생성된 연결 정보

get_connection

특정 연결의 정보를 가져옵니다. - 입력: - connection_id: 연결 ID - 출력: 연결 상세 정보

update_connection

기존 연결을 업데이트합니다. - 입력: - connection_id: 연결 ID - name: (선택적) 새 연결 이름 - host: (선택적) 새 호스트 주소 - port: (선택적) 새 포트 번호 - username: (선택적) 새 사용자 이름 - password: (선택적) 새 비밀번호 - database: (선택적) 새 데이터베이스 이름 - ssl: (선택적) 새 SSL 설정 - 출력: 업데이트된 연결 정보

delete_connection

연결을 삭제합니다. - 입력: - connection_id: 삭제할 연결 ID - 출력: 삭제 결과

test_connection

연결을 테스트합니다. - 입력: - connection_id: 테스트할 연결 ID - 출력: 연결 테스트 결과

데이터베이스 탐색

list_databases

특정 연결에서 사용 가능한 데이터베이스를 나열합니다. - 입력: - connection_id: 연결 ID - 출력: 데이터베이스 목록

list_tables

특정 데이터베이스의 테이블을 나열합니다. - 입력: - connection_id: 연결 ID - database: (선택적) 데이터베이스 이름 - 출력: 테이블 목록

describe_table

특정 테이블의 구조를 설명합니다. - 입력: - connection_id: 연결 ID - table: 테이블 이름 - database: (선택적) 데이터베이스 이름 - 출력: 열 정의, 인덱스, 제약 조건 등 테이블 구조 정보

list_columns

특정 테이블의 열을 나열합니다. - 입력: - connection_id: 연결 ID - table: 테이블 이름 - database: (선택적) 데이터베이스 이름 - 출력: 열 이름, 데이터 유형, 속성 등의 목록

get_table_size

테이블 크기 및 행 수를 가져옵니다. - 입력: - connection_id: 연결 ID - table: 테이블 이름 - database: (선택적) 데이터베이스 이름 - 출력: 테이블 크기, 행 수, 인덱스 크기 등의 정보

쿼리 실행

execute_query

SQL 쿼리를 실행합니다. - 입력: - connection_id: 연결 ID - query: 실행할 SQL 쿼리 - params: (선택적) 쿼리 매개변수 - database: (선택적) 데이터베이스 이름 - explain: (선택적) 쿼리 실행 계획 포함 여부 - timeout: (선택적) 쿼리 시간 제한(초) - 출력: 쿼리 결과, 영향 받은 행 수, 실행 시간

execute_batch

여러 SQL 쿼리를 일괄적으로 실행합니다. - 입력: - connection_id: 연결 ID - queries: 실행할 SQL 쿼리 배열 - database: (선택적) 데이터베이스 이름 - transaction: (선택적) 트랜잭션으로 실행할지 여부 - 출력: 각 쿼리의 실행 결과

explain_query

쿼리 실행 계획을 분석합니다. - 입력: - connection_id: 연결 ID - query: 분석할 SQL 쿼리 - database: (선택적) 데이터베이스 이름 - 출력: 쿼리 실행 계획 및 분석 정보

트랜잭션 관리

begin_transaction

트랜잭션을 시작합니다. - 입력: - connection_id: 연결 ID - database: (선택적) 데이터베이스 이름 - 출력: 트랜잭션 ID

commit_transaction

트랜잭션을 커밋합니다. - 입력: - connection_id: 연결 ID - transaction_id: 트랜잭션 ID - 출력: 커밋 결과

rollback_transaction

트랜잭션을 롤백합니다. - 입력: - connection_id: 연결 ID - transaction_id: 트랜잭션 ID - 출력: 롤백 결과

스키마 관리

create_table

새 테이블을 생성합니다. - 입력: - connection_id: 연결 ID - table: 테이블 이름 - columns: 열 정의 배열 - primary_key: (선택적) 기본 키 열 - indexes: (선택적) 인덱스 정의 - database: (선택적) 데이터베이스 이름 - 출력: 테이블 생성 결과

alter_table

테이블 구조를 변경합니다. - 입력: - connection_id: 연결 ID - table: 테이블 이름 - add_columns: (선택적) 추가할 열 정의 배열 - drop_columns: (선택적) 삭제할 열 이름 배열 - modify_columns: (선택적) 수정할 열 정의 배열 - database: (선택적) 데이터베이스 이름 - 출력: 테이블 변경 결과

generate_migration

스키마 변경에 대한 마이그레이션 스크립트를 생성합니다. - 입력: - connection_id: 연결 ID - source_schema: 원본 스키마 정의 - target_schema: 대상 스키마 정의 - database: (선택적) 데이터베이스 이름 - 출력: SQL 마이그레이션 스크립트

사용 방법

설치 및 구성

  1. 사전 요구 사항:
  2. 지원되는 IDE (VSCode, IntelliJ, Sublime Text 등)
  3. Python 3.8 이상
  4. 연결하려는 데이터베이스 클라이언트 라이브러리

  5. MCP 서버 설치:

    pip install devdb-mcp-server

  6. IDE 플러그인 설치: 각 IDE의 확장 마켓플레이스에서 "DevDb" 플러그인 설치

  7. Claude Desktop 구성:

    {
      "mcpServers": {
        "devdb": {
          "command": "python",
          "args": ["-m", "devdb_mcp"],
          "env": {
            "DEVDB_CONFIG_PATH": "/path/to/config.json",
            "DEVDB_CONNECTIONS_PATH": "/path/to/connections.json",
            "DEVDB_LOG_LEVEL": "INFO"
          }
        }
      }
    }

  8. 연결 구성 예시:

    {
      "connections": [
        {
          "id": "dev-mysql",
          "name": "개발 MySQL",
          "type": "mysql",
          "host": "localhost",
          "port": 3306,
          "username": "dev_user",
          "password": "password",
          "database": "myapp_dev"
        },
        {
          "id": "test-postgres",
          "name": "테스트 PostgreSQL",
          "type": "postgres",
          "host": "test-db.example.com",
          "port": 5432,
          "username": "test_user",
          "password": "password",
          "database": "myapp_test",
          "ssl": true
        },
        {
          "id": "local-sqlite",
          "name": "로컬 SQLite",
          "type": "sqlite",
          "file_path": "/path/to/local.db"
        }
      ]
    }

기본 사용 예시

  1. 연결 목록 보기:

    list_connections()

  2. 연결 테스트:

    test_connection({
      connection_id: "dev-mysql"
    })

  3. 데이터베이스 테이블 목록 보기:

    list_tables({
      connection_id: "dev-mysql",
      database: "myapp_dev"
    })

  4. 테이블 구조 확인:

    describe_table({
      connection_id: "dev-mysql",
      table: "users",
      database: "myapp_dev"
    })

  5. 간단한 쿼리 실행:

    execute_query({
      connection_id: "dev-mysql",
      query: "SELECT * FROM users WHERE created_at > ? LIMIT 10",
      params: ["2025-01-01"],
      database: "myapp_dev"
    })

  6. 트랜잭션 사용:

    // 트랜잭션 시작
    const transaction = begin_transaction({
      connection_id: "dev-mysql",
      database: "myapp_dev"
    });
    
    // 쿼리 실행
    execute_query({
      connection_id: "dev-mysql",
      query: "UPDATE users SET status = 'active' WHERE id = ?",
      params: [123],
      database: "myapp_dev"
    });
    
    // 트랜잭션 커밋
    commit_transaction({
      connection_id: "dev-mysql",
      transaction_id: transaction.id
    });

  7. 쿼리 실행 계획 분석:

    explain_query({
      connection_id: "dev-mysql",
      query: "SELECT * FROM users JOIN orders ON users.id = orders.user_id WHERE users.created_at > '2025-01-01'",
      database: "myapp_dev"
    })

  8. 새 테이블 생성:

    create_table({
      connection_id: "dev-mysql",
      table: "sessions",
      columns: [
        {
          "name": "id",
          "type": "VARCHAR(36)",
          "nullable": false
        },
        {
          "name": "user_id",
          "type": "INT",
          "nullable": false
        },
        {
          "name": "data",
          "type": "TEXT",
          "nullable": true
        },
        {
          "name": "expires_at",
          "type": "DATETIME",
          "nullable": false
        }
      ],
      primary_key: "id",
      indexes: [
        {
          "name": "idx_user_id",
          "columns": ["user_id"]
        },
        {
          "name": "idx_expires_at",
          "columns": ["expires_at"]
        }
      ],
      database: "myapp_dev"
    })

보안 고려사항

  • 데이터베이스 자격 증명은 암호화되어 저장되어야 합니다.
  • 보안 연결(SSL/TLS)을 사용하여 원격 데이터베이스에 연결하세요.
  • 읽기 전용 작업만 필요한 경우 읽기 권한만 있는 사용자를 사용하세요.
  • 쿼리 타임아웃을 설정하여 실수로 무거운 쿼리가 실행되는 것을 방지하세요.
  • 민감한 프로덕션 데이터베이스에 연결할 때는 특별한 주의가 필요합니다.
  • 쿼리 기록 및 로그에 민감한 정보가 저장되지 않도록 주의하세요.

연결된 구성 요소

  • MySQL - 구성 가능한 접근 제어 및 스키마 검사를 갖춘 MySQL 데이터베이스 통합
  • PostgreSQL - PostgreSQL 데이터베이스 작업 및 쿼리 실행
  • SQLite - 경량 임베디드 데이터베이스 SQLite 연결
  • MSSQL - 구성 가능한 접근 제어 및 스키마 검사를 갖춘 MSSQL 데이터베이스 통합
  • DBHub - MySQL, PostgreSQL, SQLite, DuckDB 등에 연결하는 범용 데이터베이스 MCP 서버