Skip to main content
Glama
Database MCP Server

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>