Skip to main content
Glama
tomtomjskim

Database MCP Server

by tomtomjskim

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 ์นœํ™”์ : ์ž์—ฐ์–ด ์ฟผ๋ฆฌ, ์Šคํ‚ค๋งˆ ๋ถ„์„, ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋ถ„์„

Related MCP server: Database MCP Server

๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” Anthropic์˜ Model Context Protocol์„ ์‚ฌ์šฉํ•˜์—ฌ Claude์™€ ๊ฐ™์€ AI ๋ชจ๋ธ์ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋™์‹œ์— ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ณ ๊ธ‰ MCP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. MSA(Microservices Architecture) ํ™˜๊ฒฝ์—์„œ ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ž์—ฐ์–ด๋ฅผ ํ†ตํ•œ ํฌ๋กœ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ, ์Šคํ‚ค๋งˆ ํƒ์ƒ‰, ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ Claude Code์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

Claude Code ํ™˜๊ฒฝ์—์„œ ์ด DB MCP ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Claude Code ์‚ฌ์šฉ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋น ๋ฅธ ์‹œ์ž‘:

  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 ํŒŒ์ผ ์ƒ์„ฑ:

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

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐฉ์‹

# ์‚ฌ์šฉ์ž ์„œ๋น„์Šค 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)

{
  "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 ํŒŒ์ผ์— ์ถ”๊ฐ€:

{
  "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 ๊ฐ’ ๋ถˆํ•„์š”

๊ฒ€์ฆ ๋ฐฉ๋ฒ•:

# MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํ™•์ธ
claude mcp list

# ํ—ฌ์Šค์ฒดํฌ ์‹คํ–‰
# Claude Code์—์„œ: "db-mcp ์„œ๋ฒ„ ํ—ฌ์Šค์ฒดํฌ ์‹คํ–‰ํ•ด์ค˜"

๋ฐฉ๋ฒ• 2: DB๋ณ„ ๋ณ„๋„ MCP ์„œ๋ฒ„ (๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•)

๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ MCP ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Claude Desktop ์„ค์ • (๋ณ„๋„ ์„œ๋ฒ„)

{
  "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. ์‹คํ–‰ ์ œํ•œ

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. ์„ค์น˜

npm install

2. ํ™˜๊ฒฝ ์„ค์ •

.env ํŒŒ์ผ ์ƒ์„ฑ:

MySQL ์„ค์ •

# 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 ์„ค์ •

# 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

๊ณตํ†ต ๋ณด์•ˆ ์„ค์ •

MAX_QUERY_EXECUTION_TIME=30000
MAX_RESULT_ROWS=10000
ENABLE_QUERY_LOGGING=true

3. Claude Desktop ์„ค์ •

MySQL ์‚ฌ์šฉ ์‹œ

claude_desktop_config.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์— ์ถ”๊ฐ€:

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

  • Phase 1: ๊ธฐ๋ณธ MCP ์„œ๋ฒ„ + MySQL ์—ฐ๊ฒฐ

  • Phase 2: ์ฟผ๋ฆฌ ์‹คํ–‰ ๋„๊ตฌ ๊ตฌํ˜„

  • Phase 3: ์Šคํ‚ค๋งˆ ์ •๋ณด ๋ฆฌ์†Œ์Šค ์ถ”๊ฐ€

  • Phase 4: PostgreSQL ์ง€์› ํ™•์žฅ

  • Phase 5: ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์› (MSA ๋Œ€์‘)

  • Phase 6: ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ๋Šฅ

  • 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๊ฐ€ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ, ์ปค์Šคํ…€ ๊ฐœ๋ฐœ, ๊ธฐ์ˆ  ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ„๋„ ๋ฌธ์˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿš€ Database MCP Server - AI ์‹œ๋Œ€์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ตํ•ฉ ์†”๋ฃจ์…˜

Made with โค๏ธ for the AI & Database community

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI to query and manage PostgreSQL and MongoDB databases through natural language. Supports automatic schema discovery, safe data operations, and network-wide database access with zero-configuration deployment.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with PostgreSQL or MySQL databases using natural language. Supports SQL queries, schema discovery, and pre-built aggregations without writing SQL.
    289
    MIT