Skip to main content
Glama
tomtomjskim

Database MCP Server

by tomtomjskim
README.md
# Database MCP Server

🚀 **Enterprise-Ready Multi-Database MCP Server**

Model Context Protocol (MCP) 서버로 **닀쀑 데읎터베읎슀**와 AI 에읎전튞 간의 안전하고 횚윚적읞 통신을 제공합니닀.

## 🌟 죌요 특징

- 🏢 **MSA 환겜 완벜 지원**: 여러 마읎크로서비슀 DB륌 하나의 MCP 서버에서 ꎀ늬
- 🔒 **엔터프띌읎슈꞉ 볎안**: 읜Ʞ 전용, SSL/TLS, 쿌늬 검슝, 감사 로깅
- 🌐 **큎띌우드 넀읎티람**: AWS RDS, Azure Database, Google Cloud SQL 완벜 지원
- ⚡ **고성능**: 연결 풀링, 지능형 캐싱, 병렬 쿌늬 처늬
- 🀖 **AI 친화적**: 자연얎 쿌늬, 슀킀마 분석, 데읎터 품질 분석

## 개요

읎 프로젝튞는 Anthropic의 Model Context Protocol을 사용하여 Claude와 같은 AI 몚덞읎 **여러 데읎터베읎슀에 동시에** 상혞작용할 수 있도록 하는 고꞉ MCP 서버입니닀. MSA(Microservices Architecture) 환겜에서 분산된 데읎터베읎슀듀을 통합 ꎀ늬하며, 자연얎륌 통한 크로슀 데읎터베읎슀 쿌늬, 슀킀마 탐색, 데읎터 분석 등의 Ʞ능을 안전하게 제공합니닀.

## 🚀 Claude Code에서 사용하Ʞ

Claude Code 환겜에서 읎 DB MCP 서버륌 사용하렀멎 [Claude Code 사용 가읎드](./docs/CLAUDE_CODE_GUIDE.md)륌 찞조하섞요.

**빠륞 시작:**
1. 환겜 변수 섀정 (`.env` 파음)
2. MCP 서버 섀정에 추가
3. Claude에게 "데읎터베읎슀 슀킀마륌 분석핎죌섞요" 요청
4. 자연얎로 데읎터 조회 및 분석

## 지원 데읎터베읎슀

- ✅ **MySQL** - 완전 지원 (옚프레믞슀, AWS RDS, Azure Database)
- ✅ **PostgreSQL** - 완전 지원 (옚프레믞슀, AWS RDS, Azure Database, Google Cloud SQL)
- 🔄 **SQLite** (개발 예정)
- 🔄 **ClickHouse** (개발 예정)

### 데읎터베읎슀 선택 가읎드

#### MySQL vs PostgreSQL 비교

| Ʞ능 | MySQL | PostgreSQL |
|------|-------|------------|
| **성능** | 읜Ʞ 최적화, 웹 애플늬쌀읎션에 적합 | 복잡한 쿌늬, 대용량 데읎터 처늬에 적합 |
| **데읎터 타입** | Ʞ볞 데읎터 타입 지원 | JSON, Array, 컀슀텀 타입 등 풍부한 지원 |
| **확장성** | 수평 확장 (샀딩) 우수 | 수직 확장 우수, 병렬 처늬 지원 |
| **ACID 쀀수** | InnoDB 엔진 사용 시 완전 지원 | 완전한 ACID 쀀수 |
| **고꞉ Ʞ능** | Ʞ볞 Ʞ능 쀑심 | Window Functions, CTE, Full-text Search 등 |
| **큎띌우드 지원** | AWS RDS, Azure Database | AWS RDS, Azure Database, Google Cloud SQL |

#### 얎댑터 자동 선택

시슀템읎 자동윌로 데읎터베읎슀 타입을 감지합니닀:

1. **명시적 지정**: `DB_TYPE` 환겜변수 또는 config.type 섀정
2. **포튞 êž°ë°˜ 감지**:
   - 3306 → MySQL
   - 5432 → PostgreSQL
3. **혞슀튞명 êž°ë°˜ 감지**:
   - 혞슀튞명에 'mysql' 포핚 → MySQL
   - 혞슀튞명에 'postgres' 포핚 → PostgreSQL
4. **Ʞ볞값**: MySQL

#### 권장 사용 사례

**MySQL 권장:**
- 웹 애플늬쌀읎션 백엔드
- 닚순한 CRUD 작업 쀑심
- 높은 동시성 읜Ʞ 작업
- Ʞ졎 MySQL 읞프띌 활용

**PostgreSQL 권장:**
- 복잡한 분석 쿌늬
- JSON 데읎터 처늬
- 지늬 정볎 시슀템 (PostGIS)
- 데읎터 묎결성읎 쀑요한 애플늬쌀읎션

## MSA 환겜에서의 닀쀑 DB 연결

MSA(Microservices Architecture) 환겜에서는 여러 데읎터베읎슀에 동시에 접속핎알 하는 겜우가 많습니닀. 읎 MCP 서버는 두 가지 방법을 지원합니닀:

### 방법 1: 닚음 MCP 서버에서 닀쀑 DB 지원 (권장)

하나의 MCP 서버 읞슀턎슀에서 여러 데읎터베읎슀륌 ꎀ늬합니닀.

#### 섀정 파음 방식
`db-config.json` 파음 생성:
```json
{
  "connections": {
    "user-service": {
      "name": "user-service",
      "type": "mysql",
      "host": "user-db.cluster-xxx.rds.amazonaws.com",
      "port": 3306,
      "user": "readonly_user",
      "password": "secure_password",
      "database": "user_service",
      "description": "사용자 서비슀 DB",
      "tags": ["microservice", "user", "mysql"]
    },
    "order-service": {
      "name": "order-service",
      "type": "postgresql",
      "host": "order-db.cluster-yyy.rds.amazonaws.com",
      "port": 5432,
      "user": "readonly_user",
      "password": "secure_password",
      "database": "order_service",
      "description": "죌묞 서비슀 DB",
      "tags": ["microservice", "order", "postgresql"]
    }
  },
  "defaultConnection": "user-service"
}
```

#### 환겜변수 방식
```env
# 사용자 서비슀 DB
DB_USER_HOST=user-db.cluster-xxx.rds.amazonaws.com
DB_USER_PORT=3306
DB_USER_TYPE=mysql
DB_USER_USER=readonly_user
DB_USER_PASSWORD=secure_password
DB_USER_DATABASE=user_service
DB_USER_DESCRIPTION=사용자 서비슀 DB
DB_USER_TAGS=microservice,user,mysql
DB_USER_WRITE_ENABLED=false

# 죌묞 서비슀 DB
DB_ORDER_HOST=order-db.cluster-yyy.rds.amazonaws.com
DB_ORDER_PORT=5432
DB_ORDER_TYPE=postgresql
DB_ORDER_USER=readonly_user
DB_ORDER_PASSWORD=secure_password
DB_ORDER_DATABASE=order_service
DB_ORDER_DESCRIPTION=죌묞 서비슀 DB
DB_ORDER_TAGS=microservice,order,postgresql
DB_ORDER_WRITE_ENABLED=false

# Ʞ볞 연결
DB_DEFAULT_CONNECTION=user
```

#### Claude Desktop 섀정 (닀쀑 DB)
```json
{
  "mcpServers": {
    "multi-database": {
      "command": "node",
      "args": ["path/to/db-mcp/dist/multi-database-server.js"],
      "env": {
        "DB_CONFIG_FILE": "./db-config.json"
      }
    }
  }
}
```

#### Claude Code 섀정 (닀쀑 DB - 간소화된 방식)

**개선된 섀정 방식**: 환겜변수 간소화륌 통한 섀정 닚순화 (8개 → 3개)

`~/.claude.json` 파음에 추가:
```json
{
  "mcpServers": {
    "db-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/db-mcp/dist/multi-index.js"],
      "env": {
        "DB_CONFIG_FILE": "/absolute/path/to/db-mcp/db-config.json",
        "LOG_LEVEL": "info",
        "MCP_SERVER_NAME": "db-mcp"
      }
    }
  }
}
```

**핵심 개선점**:
- ✅ **불필요한 dummy 환겜변수 제거**: MYSQL_HOST, MYSQL_PORT, MYSQL_DB, MYSQL_USER, MYSQL_PASSWORD 불필요
- ✅ **진정한 멀티테넌튞 서버**: DB_CONFIG_FILE만윌로 몚든 연결 ꎀ늬
- ✅ **윔드 레벚 개선**: `src/config/index.ts`에서 multi-DB 몚드 자동 감지
- ✅ **섀정 간소화**: 환겜변수 62.5% 감소 (8개 → 3개)

**동작 원늬**:
1. `DB_CONFIG_FILE` 환겜변수 졎재 시 multi-DB 몚드로 자동 전환
2. 몚든 데읎터베읎슀 연결 정볎는 `db-config.json` 파음에서 ꎀ늬
3. 환겜변수 검슝 로직 자동 슀킵윌로 dummy 값 불필요

**검슝 방법**:
```bash
# MCP 서버 연결 확읞
claude mcp list

# 헬슀첎크 싀행
# Claude Code에서: "db-mcp 서버 헬슀첎크 싀행핎쀘"
```

### 방법 2: DB별 별도 MCP 서버 (간닚한 방법)

각 데읎터베읎슀마닀 별도의 MCP 서버 읞슀턎슀륌 싀행합니닀.

#### Claude Desktop 섀정 (별도 서버)
```json
{
  "mcpServers": {
    "user-db": {
      "command": "node",
      "args": ["path/to/db-mcp/dist/index.js"],
      "env": {
        "DB_TYPE": "mysql",
        "MYSQL_HOST": "user-db.cluster-xxx.rds.amazonaws.com",
        "MYSQL_DB": "user_service"
      }
    },
    "order-db": {
      "command": "node",
      "args": ["path/to/db-mcp/dist/index.js"],
      "env": {
        "DB_TYPE": "postgresql",
        "POSTGRES_HOST": "order-db.cluster-yyy.rds.amazonaws.com",
        "POSTGRES_DB": "order_service"
      }
    }
  }
}
```

### 닀쀑 DB 전용 Ʞ능

닚음 MCP 서버에서 닀쀑 DB륌 사용할 때 추가로 제공되는 Ʞ능:

#### 1. 크로슀 데읎터베읎슀 쿌늬
```
"사용자 서비슀와 죌묞 서비슀 데읎터륌 비교핎서 볎여쀘"
→ 여러 DB에서 데읎터륌 조회하여 통합 분석
```

#### 2. 데읎터베읎슀 태귞 필터링
```
"microservice 태귞가 붙은 몚든 DB 상태륌 확읞핎쀘"
→ 태귞 Ʞ반윌로 DB 귞룹 ꎀ늬
```

#### 3. 통합 헬슀첎크
```
"몚든 데읎터베읎슀 연결 상태륌 한번에 확읞핎쀘"
→ 전첎 읞프띌 상태 몚니터링
```

#### 4. 데읎터베읎슀 간 ꎀ계 분석
```
"사용자 ID로 몚든 서비슀의 ꎀ렚 데읎터륌 찟아쀘"
→ 마읎크로서비슀 간 데읎터 추적
```

## 🛠 제공 Ʞ능

### 🔗 1. 닀쀑 데읎터베읎슀 연결 ꎀ늬
- **🏢 MSA 완벜 지원**: 하나의 MCP 서버에서 수십 개의 마읎크로서비슀 DB ꎀ늬
- **⚡ 고성능 연결 풀링**: DB별 독늜적읞 연결 풀로 최적화된 늬소슀 ꎀ늬
- **🔄 자동 페음였버**: 연결 끊김 시 자동 재연결 및 상태 복구
- **📊 싀시간 몚니터링**: 연결 상태, 활성 쿌늬, 응답 시간 싀시간 추적
- **🏷 태귞 êž°ë°˜ ꎀ늬**: 환겜별, 서비슀별 DB 귞룹 ꎀ늬 (production, staging, analytics 등)

### ⚙ 2. 고꞉ 쿌늬 싀행 도구 (Tools)

#### `list_databases` 🗂
- **Ʞ능**: 연결된 몚든 데읎터베읎슀 목록 및 상태 조회
- **출력**: DB 타입, 연결 상태, 태귞, 섀명, 성능 메튞늭
- **활용**: 전첎 읞프띌 현황 파악, 헬슀첎크

#### `execute_query` 🚀
- **Ʞ능**: 특정 데읎터베읎슀에 SQL 쿌늬 싀행
- **입력**: SQL 묞자엎, 대상 DB, 파띌믞터
- **출력**: 구조화된 결곌 + 싀행 메튞늭
- **볎안**: 읜Ʞ 전용 쿌늬만 허용, SQL 읞젝션 방지

#### `execute_dev_statement` 🛠
- **Ʞ능**: 명시적윌로 ì“°êž°ê°€ 허용된 development 데읎터베읎슀에서 닚음 DDL/DML 싀행
- **섀정**: JSON의 `writeEnabled: true` 또는 환겜변수 `DB_{NAME}_WRITE_ENABLED=true`
- **볎안**: `production`, `prod`, `readonly` 태귞 및 production 식별자가 있는 연결은 섀정곌 묎ꎀ하게 찚닚
- **제한**: 대상 데읎터베읎슀륌 반드시 지정하며 한 번에 하나의 테읎랔 DDL 또는 행 DML만 허용

#### `cross_database_query` 🔄
- **Ʞ능**: 여러 데읎터베읎슀에서 동시 쿌늬 싀행 및 결곌 통합
- **입력**: 데읎터베읎슀별 쿌늬 ë°°ì—Ž
- **출력**: 통합된 결곌셋 + 성능 비교
- **활용**: 마읎크로서비슀 간 데읎터 비교, 통합 늬포팅

#### `natural_language_query` 🀖
- **Ʞ능**: 자연얎륌 SQL로 변환하여 싀행
- **입력**: 자연얎 질묞, 대상 DB, 컚텍슀튞
- **출력**: 생성된 SQL + 싀행 결곌 + 신뢰도
- **AI 지원**: 슀킀마 정볎 êž°ë°˜ 지능형 쿌늬 생성

#### `database_health_check` 🏥
- **Ʞ능**: 전첎 또는 개별 데읎터베읎슀 상태 검사
- **출력**: 응답 시간, 연결 풀 상태, 성능 지표
- **활용**: 읞프띌 몚니터링, 장애 ì¡°êž° 감지

### 📋 3. 통합 슀킀마 정볎 늬소슀 (Resources)

#### `database://connections` 🔗
- **낎용**: 몚든 연결된 데읎터베읎슀의 상섞 정볎
- **포핚**: 연결 섀정, 상태, 메타데읎터, 태귞

#### `database://{db_name}/schema` 📊
- **낎용**: 특정 데읎터베읎슀의 완전한 슀킀마 정볎
- **포핚**: 테읎랔, ë·°, 프로시저, 읞덱슀, 왞래킀 ꎀ계
- **지원**: MySQL, PostgreSQL 각각 최적화된 분석

#### `database://{db_name}/tables` 📁
- **낎용**: 테읎랔별 상섞 정볎 및 통계
- **포핚**: 컬럌 정볎, 데읎터 타입, 제앜조걎, 행 수, 크Ʞ

### 🔍 4. 고꞉ 데읎터 분석 도구

#### **슀킀마 분석 엔진**
- **MySQL 특화**: information_schema 최적화 쿌늬
- **PostgreSQL 특화**: pg_catalog 및 확장 정볎 분석
- **성능 최적화**: 지능형 캐싱윌로 빠륞 응답

#### **데읎터 품질 분석**
- **컬럌 프로파음링**: 타입별 통계, NULL 비윚, 고유값 분석
- **팹턮 감지**: 읎메음, 전화번혞, URL 등 데읎터 팹턮 자동 감지
- **읎상치 탐지**: 3-시귞마 규칙 êž°ë°˜ 수치 읎상치 발견
- **품질 점수**: 데읎터 완성도, 음ꎀ성, 정확도 종합 평가

#### **ꎀ계 분석**
- **테읎랔 ꎀ계 맀핑**: 왞래킀 êž°ë°˜ 자동 ꎀ계도 생성
- **데읎터 링크 추적**: 마읎크로서비슀 간 데읎터 연ꎀ성 분석
- **종속성 분석**: 슀킀마 변겜 영향도 평가

## 볎안 및 제한사항

### 볎안 Ʞ능

#### 1. 쿌늬 제한
- **Ʞ볞 읜Ʞ 전용**: `execute_query`와 `cross_database_query`는 DML/DDL ꞈ지
- **개발 DB ì“°êž° 분늬**: `execute_dev_statement`만 명시적윌로 허용된 development 연결에서 DDL/DML 허용
- **Production 하드 랔록**: production/readonly 연결은 `writeEnabled` 섀정곌 묎ꎀ하게 ì“°êž° ꞈ지
- **화읎튞늬슀튞**: 허용된 SQL 킀워드만 싀행
- **구묞 검슝**: SQL 읞젝션 방지륌 위한 파싱 검슝

#### 2. 싀행 제한
```javascript
const SECURITY_LIMITS = {
  MAX_EXECUTION_TIME: 30000,    // 30쎈
  MAX_RESULT_ROWS: 10000,       // 최대 10,000행
  MAX_RESULT_SIZE: '50MB',      // 최대 50MB
  MAX_QUERY_LENGTH: 10000,      // 최대 10,000자
  ALLOWED_KEYWORDS: [
    'SELECT', 'FROM', 'WHERE', 'JOIN', 'ORDER BY',
    'GROUP BY', 'HAVING', 'LIMIT', 'OFFSET',
    'SHOW', 'DESCRIBE', 'EXPLAIN'
  ]
};
```

#### 3. ì ‘ê·Œ 제얎
- **데읎터베읎슀별 권한**: 각 DB 연결마닀 별도 권한 섀정
- **테읎랔별 제한**: 특정 테읎랔 ì ‘ê·Œ 제한 가능
- **감사 로깅**: 몚든 쿌늬 싀행 Ʞ록 저장

#### 4. 넀튞워크 볎안
- **TLS/SSL 암혞화**: 원격 DB 연결 암혞화 강제 (AWS RDS, Azure DB 등)
- **VPC 지원**: AWS VPC, Azure VNet 낮 ì ‘ê·Œ
- **연결 제한**: IP 화읎튞늬슀튞 지원
- **시간 êž°ë°˜ 액섞슀**: 특정 시간대에만 ì ‘ê·Œ 허용
- **Connection Timeout**: 원격 연결 시간 제한 섀정

### Ʞ능 제한사항

#### 1. 지원하지 않는 Ʞ능
- ❌ 읜Ʞ 도구륌 통한 데읎터 수정 및 슀킀마 변겜
- ❌ production/readonly 연결의 데읎터 수정 및 슀킀마 변겜
- ❌ 여러 SQL 묞장을 한 번에 싀행하는 개발 DB ì“°êž°
- ❌ 저장 프로시저 싀행
- ❌ 튞랜잭션 제얎 (BEGIN, COMMIT, ROLLBACK)
- ❌ 사용자 ꎀ늬 명령
- ❌ 파음 시슀템 ì ‘ê·Œ

#### 2. 성능 제한
- **동시 연결**: 최대 10개 동시 쿌늬
- **캐싱**: 슀킀마 정볎 5분 캐시
- **Rate Limiting**: 분당 100회 쿌늬 제한

#### 3. 데읎터 타입 제한
- **BLOB/TEXT**: 큰 데읎터는 요앜 정볎만 제공
- **JSON/XML**: 구조화된 형태로 파싱하여 제공
- **Binary**: Base64 읞윔딩윌로 제한적 지원

## 섀치 및 섀정

### 1. 섀치
```bash
npm install
```

### 2. 환겜 섀정
`.env` 파음 생성:

#### MySQL 섀정
```env
# MySQL 연결 정볎 (로컬 또는 원격)
DB_TYPE=mysql                           # 명시적 타입 지정 (선택사항)
MYSQL_HOST=localhost                    # 또는 AWS RDS 엔드포읞튞
MYSQL_PORT=3306
MYSQL_DB=mydb
MYSQL_USER=readonly_user
MYSQL_PASSWORD=secure_password

# 원격 DB 섀정 (AWS RDS 예시)
# MYSQL_HOST=mydb.cluster-xxx.us-east-1.rds.amazonaws.com
# MYSQL_SSL_MODE=REQUIRED
# MYSQL_SSL_CA=/path/to/rds-ca-2019-root.pem
# MYSQL_CONNECTION_TIMEOUT=60000
# MYSQL_ACQUIRECONNECTION_TIMEOUT=60000
```

#### PostgreSQL 섀정
```env
# PostgreSQL 연결 정볎 (로컬 또는 원격)
DB_TYPE=postgresql                      # 명시적 타입 지정 (선택사항)
POSTGRES_HOST=localhost                 # 또는 AWS RDS 엔드포읞튞
POSTGRES_PORT=5432
POSTGRES_DB=mydb
POSTGRES_USER=readonly_user
POSTGRES_PASSWORD=secure_password

# 원격 DB 섀정 (AWS RDS PostgreSQL 예시)
# POSTGRES_HOST=mydb.cluster-xxx.us-east-1.rds.amazonaws.com
# POSTGRES_SSL_MODE=REQUIRED
# POSTGRES_SSL_CA=/path/to/rds-ca-2019-root.pem
# POSTGRES_CONNECTION_TIMEOUT=60000
```

#### 공통 볎안 섀정
```env
MAX_QUERY_EXECUTION_TIME=30000
MAX_RESULT_ROWS=10000
ENABLE_QUERY_LOGGING=true
```

### 3. Claude Desktop 섀정

#### MySQL 사용 시
`claude_desktop_config.json`에 추가:
```json
{
  "mcpServers": {
    "database": {
      "command": "node",
      "args": ["path/to/db-mcp/dist/index.js"],
      "env": {
        "DB_TYPE": "mysql",
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_DB": "mydb",
        "MYSQL_USER": "readonly_user",
        "MYSQL_PASSWORD": "secure_password"
      }
    }
  }
}
```

#### PostgreSQL 사용 시
`claude_desktop_config.json`에 추가:
```json
{
  "mcpServers": {
    "database": {
      "command": "node",
      "args": ["path/to/db-mcp/dist/index.js"],
      "env": {
        "DB_TYPE": "postgresql",
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432",
        "POSTGRES_DB": "mydb",
        "POSTGRES_USER": "readonly_user",
        "POSTGRES_PASSWORD": "secure_password"
      }
    }
  }
}
```

## 💡 싀제 사용 예시

### 🏢 MSA 환겜에서의 활용

#### 마읎크로서비슀 간 데읎터 분석
```
💬 "user-service와 order-service에서 최귌 1죌음 동안 신규 가입한 사용자듀의 죌묞 팚턎을 비교 분석핎쀘"

🀖 Claude가 자동윌로:
1. user-service DB에서 최귌 가입자 조회
2. order-service DB에서 핎당 사용자듀의 죌묞 데읎터 조회
3. 크로슀 데읎터베읎슀 분석윌로 팹턮 식별
4. 통합 늬포튞 생성
```

#### 전첎 읞프띌 몚니터링
```
💬 "production 태귞가 붙은 몚든 데읎터베읎슀의 상태륌 확읞하고 성능 묞제가 있는 곳을 찟아쀘"

🀖 결곌:
- 5개 프로덕션 DB 쀑 4개 정상, 1개 겜고
- analytics-db: 응답시간 3.2쎈 (평균의 2ë°°)
- 연결 풀 사용률: order-service 90% (죌의 필요)
```

### 🔍 고꞉ 데읎터 분석

#### 데읎터 품질 검사
```
💬 "몚든 서비슀의 사용자 테읎랔에서 읎메음 형식읎 잘못된 데읎터륌 찟아쀘"

🀖 자동 싀행:
- user-service.users 테읎랔: 읎메음 팹턮 검슝
- auth-service.profiles 테읎랔: 읎메음 쀑복 검사
- notification-service.recipients 테읎랔: 유횚하지 않은 도메읞 탐지
```

#### 슀킀마 영향도 분석
```
💬 "user_id 컬럌을 사용하는 몚든 테읎랔곌 ꎀ계륌 찟아서 슀킀마 변겜 시 영향도륌 분석핎쀘"

🀖 결곌:
- 직접 ì°žì¡°: 15개 테읎랔
- 간접 ì°žì¡°: 8개 테읎랔
- 영향 받는 서비슀: user, order, payment, notification, analytics
- 권장사항: 닚계적 마읎귞레읎션 계획 필요
```

### 🚀 자연얎 쿌늬

#### 비슈니슀 질묞 → SQL
```
💬 "지난 달 가장 많읎 팔며 상품 칎테고늬는 뭐알?"

🀖 생성된 SQL:
SELECT c.name, COUNT(oi.product_id) as sales_count
FROM order_items oi
JOIN products p ON oi.product_id = p.id
JOIN categories c ON p.category_id = c.id
WHERE oi.created_at >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
GROUP BY c.id
ORDER BY sales_count DESC
LIMIT 1
```

#### 복잡한 분석 쿌늬
```
💬 "각 지역별로 월별 맀출 추읎륌 볎여죌고, 전년 동Ʞ 대비 성장률도 계산핎쀘"

🀖 자동윌로:
1. 지역, 날짜별 맀출 집계
2. 전년 동Ʞ 데읎터 조회
3. 성장률 계산
4. 시각화 가능한 형태로 결곌 정늬
```

### 📊 싀시간 몚니터링

#### 성능 읎슈 탐지
```
💬 "현재 느늬게 싀행되고 있는 쿌늬가 있는 데읎터베읎슀륌 찟아쀘"

🀖 싀시간 분석:
- order-service: 3개 쿌늬가 10쎈 읎상 싀행 쀑
- analytics-db: 대용량 집계 쿌늬 진행 쀑 (정상)
- user-service: 몚든 쿌늬 1쎈 읎낎 (양혞)
```

#### 용량 ꎀ늬
```
💬 "각 데읎터베읎슀의 테읎랔별 크Ʞ륌 조회하고 정늬가 필요한 테읎랔을 추천핎쀘"

🀖 분석 결곌:
- log_events 테읎랔: 15GB (파티셔닝 권장)
- user_sessions 테읎랔: 8GB (TTL 섀정 권장)
- temp_data 테읎랔: 3GB (정늬 슀쌀쀄 필요)
```

## 🗺 개발 로드맵 & 버전 히슀토늬

### ✅ 완료된 Ʞ능 (v1.0)
- [x] **Phase 1**: Ʞ볞 MCP 서버 + MySQL 연결
- [x] **Phase 2**: 쿌늬 싀행 도구 구현
- [x] **Phase 3**: 슀킀마 정볎 늬소슀 추가
- [x] **Phase 4**: PostgreSQL 지원 확장
- [x] **Phase 5**: 닀쀑 데읎터베읎슀 지원 (MSA 대응)
- [x] **Phase 6**: 고꞉ 데읎터 분석 Ʞ능
- [x] **Phase 7**: 엔터프띌읎슈꞉ 볎안 및 성능 최적화

### 🚧 개발 예정 (v1.1+)

#### **Phase 8**: 추가 데읎터베읎슀 지원
- [ ] **SQLite** 지원 (로컬 개발, 임베디드 환겜)
- [ ] **ClickHouse** 지원 (대용량 분석 워크로드)
- [ ] **MongoDB** 지원 (NoSQL 묞서 데읎터베읎슀)
- [ ] **Redis** 지원 (캐시 및 섞션 데읎터 분석)

#### **Phase 9**: AI Ʞ능 강화
- [ ] **고꞉ 자연얎 처늬**: GPT-4 êž°ë°˜ 복잡한 쿌늬 생성
- [ ] **자동 읞덱슀 추천**: 쿌늬 팹턮 분석 êž°ë°˜ 성능 최적화
- [ ] **읎상 탐지**: ML êž°ë°˜ 데읎터 품질 및 볎안 읎슈 감지
- [ ] **쿌늬 최적화**: 싀행 계획 분석 및 자동 개선 제안

#### **Phase 10**: 엔터프띌읎슈 Ʞ능
- [ ] **RBAC (Role-Based Access Control)**: 섞밀한 권한 ꎀ늬
- [ ] **감사 및 컎플띌읎얞슀**: GDPR, SOX 등 규정 쀀수
- [ ] **고가용성**: 큎러슀터링 및 로드 밞런싱
- [ ] **메튞늭 & 알늌**: Prometheus, Grafana 연동

#### **Phase 11**: 개발자 겜험 개선
- [ ] **GUI ꎀ늬 도구**: 웹 êž°ë°˜ 섀정 및 몚니터링 대시볎드
- [ ] **CLI 도구**: 배포 및 ꎀ늬 자동화
- [ ] **Docker 컚테읎너**: 원큎늭 배포 지원
- [ ] **Kubernetes Operator**: 큎띌우드 넀읎티람 배포

### 📊 성능 목표 (v2.0)
- **응답 시간**: 닚순 쿌늬 < 100ms, 복잡한 분석 < 5s
- **동시 연결**: 1000+ 데읎터베읎슀 동시 ꎀ늬
- **처늬량**: 10,000+ qps (queries per second)
- **가용성**: 99.9% 업타임 볎장

## 🀝 êž°ì—¬ 가읎드

우늬는 컀뮀니티의 Ʞ여륌 환영합니닀! 닀음곌 같은 방식윌로 찞여할 수 있습니닀.

### 🐛 버귞 늬포튞
- GitHub Issues륌 통핎 버귞 신고
- 재현 가능한 예제 윔드 포핚
- 환겜 정볎 (OS, Node.js 버전, DB 타입) 명시

### 💡 Ʞ능 제안
- 새로욎 데읎터베읎슀 지원 요청
- MCP 도구 개선 아읎디얎
- 성능 최적화 제안

### 🔧 개발 ì°žì—¬
1. **Fork & Clone**: 저장소륌 포크하고 로컬에 큎론
2. **람랜치 생성**: `git checkout -b feature/your-feature`
3. **개발**: TypeScript, Jest 테슀튞 작성 필수
4. **테슀튞**: `npm test && npm run build` 통곌 확읞
5. **PR 생성**: 상섞한 섀명곌 핚께 Pull Request

### 📚 묞서화
- README 개선
- 윔드 죌석 추가
- 사용 예시 확장
- 닀국얎 번역 (English, 한국얎)

### 🔒 볎안 읎슈
믌감한 볎안 묞제는 public issue 대신 직접 연띜핎 죌섞요.

## 📋 요구사항

- **Node.js**: ≥ 18.0.0
- **NPM**: ≥ 8.0.0
- **TypeScript**: ≥ 5.0.0
- **데읎터베읎슀**: MySQL 5.7+ 또는 PostgreSQL 12+

## 🏗 아킀텍처

```
┌─────────────────────────────────────────────────────────────┐
│                    Claude AI Client                         │
├──────────────────────────────────────────────────────────────
│                Model Context Protocol                       │
├──────────────────────────────────────────────────────────────
│              Multi-Database MCP Server                      │
│  ┌─────────────────┐  ┌──────────────────┐  ┌─────────────┐ │
│  │ Connection Mgr  │  │  Query Executor  │  │ Schema Mgr  │ │
│  └─────────────────┘  └──────────────────┘  └─────────────┘ │
├──────────────────────────────────────────────────────────────
│              Database Adapter Layer                         │
│  ┌─────────────────┐  ┌──────────────────┐  ┌─────────────┐ │
│  │  MySQL Adapter  │  │PostgreSQL Adapter│  │ Future DBs  │ │
│  └─────────────────┘  └──────────────────┘  └─────────────┘ │
├──────────────────────────────────────────────────────────────
│                    Database Layer                           │
│  ┌─────────────────┐  ┌──────────────────┐  ┌─────────────┐ │
│  │ User Service DB │  │ Order Service DB │  │Analytics DB │ │
│  │     (MySQL)     │  │   (PostgreSQL)   │  │(PostgreSQL) │ │
│  └─────────────────┘  └──────────────────┘  └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
```

## 🌟 후원 및 지원

읎 프로젝튞가 도움읎 되었닀멎:
- ⭐ GitHub Star 눌러죌Ʞ
- 🐛 읎슈 늬포튞 및 플드백
- 💬 컀뮀니티에서 사용 겜험 공유
- 🔗 SNS에서 프로젝튞 소개

## 📜 띌읎선슀

MIT License - 자유롭게 사용, 수정, 배포 가능합니닀.

## 🙏 감사의 말

- **Anthropic**: Model Context Protocol 및 Claude 제공
- **컀뮀니티**: 플드백곌 Ʞ여로 프로젝튞 발전에 도움
- **였픈소슀**: mysql2, pg, TypeScript 등 훌륭한 띌읎람러늬듀

---

## 📞 묞의 및 지원

- **GitHub Issues**: 버귞 늬포튞, Ʞ능 요청
- **GitHub Discussions**: 사용법 질묞, 아읎디얎 공유
- **Documentation**: 자섞한 API 묞서 및 가읎드

**Enterprise Support가 필요하신가요?** 대용량 튞래픜, 컀슀텀 개발, Ʞ술 지원읎 필요한 겜우 별도 묞의 가능합니닀.

---

<div align="center">

**🚀 Database MCP Server - AI 시대의 데읎터베읎슀 통합 솔룚션**

Made with ❀ for the AI & Database community

</div>

Maintenance

ActivitySlowing
ResponsivenessNo issues