링크된 문서
역링크
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 마이그레이션 스크립트
사용 방법
설치 및 구성
- 사전 요구 사항:
- 지원되는 IDE (VSCode, IntelliJ, Sublime Text 등)
- Python 3.8 이상
-
연결하려는 데이터베이스 클라이언트 라이브러리
-
MCP 서버 설치:
pip install devdb-mcp-server -
IDE 플러그인 설치: 각 IDE의 확장 마켓플레이스에서 "DevDb" 플러그인 설치
-
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" } } } } -
연결 구성 예시:
{ "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" } ] }
기본 사용 예시
-
연결 목록 보기:
list_connections() -
연결 테스트:
test_connection({ connection_id: "dev-mysql" }) -
데이터베이스 테이블 목록 보기:
list_tables({ connection_id: "dev-mysql", database: "myapp_dev" }) -
테이블 구조 확인:
describe_table({ connection_id: "dev-mysql", table: "users", database: "myapp_dev" }) -
간단한 쿼리 실행:
execute_query({ connection_id: "dev-mysql", query: "SELECT * FROM users WHERE created_at > ? LIMIT 10", params: ["2025-01-01"], database: "myapp_dev" }) -
트랜잭션 사용:
// 트랜잭션 시작 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 }); -
쿼리 실행 계획 분석:
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" }) -
새 테이블 생성:
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 서버