โœจ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

MCP Gemini API ์„œ๋ฒ„

Cursor์™€ Claude๋ฅผ ์œ„ํ•œ Google Gemini API ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์ƒ์„ฑ, ์ด๋ฏธ์ง€ ๋ถ„์„, ๋น„๋””์˜ค ๋ถ„์„ ๋“ฑ Gemini์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ํ…์ŠคํŠธ ์ƒ์„ฑ (gemini-2.0-flash ๋ชจ๋ธ ์‚ฌ์šฉ)
  • ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ๋ถ„์„
  • YouTube ๋น„๋””์˜ค ๋ถ„์„
  • ์›น ๊ฒ€์ƒ‰

์‹œ์ž‘ํ•˜๊ธฐ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18.0.0 ์ด์ƒ
  • npm ๋˜๋Š” yarn
  • Google API ํ‚ค (Gemini API ์ ‘๊ทผ์šฉ)

์„ค์น˜

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/techkwon/mcp-gemini.git
cd mcp-gemini

# ์˜์กด์„ฑ ์„ค์น˜
npm install

ํ™˜๊ฒฝ ์„ค์ •

  1. config.ts ํŒŒ์ผ์— Google API ํ‚ค ์„ค์ •:
export default {
  googleApiKey: "your_api_key_here",
  // ๊ธฐํƒ€ ์„ค์ •...
};

๋นŒ๋“œ ๋ฐ ์‹คํ–‰

# TypeScript ๋นŒ๋“œ
npm run build

# ์„œ๋ฒ„ ์‹œ์ž‘ (PM2 ์‚ฌ์šฉ)
npm start

# ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์‹คํ–‰
npm run dev

PM2 ์„œ๋ฒ„ ๊ด€๋ฆฌ

์„œ๋ฒ„๋Š” PM2๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
npm run status

# ์„œ๋ฒ„ ๋กœ๊ทธ ํ™•์ธ
npm run logs

# ์„œ๋ฒ„ ์ค‘์ง€
npm run stop

# ์„œ๋ฒ„ ์žฌ์‹œ์ž‘
npm run restart

# ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘ ์‹œ ์ž๋™ ์‹คํ–‰ ์„ค์ •
pm2 startup
pm2 save

Cursor/Claude ์—ฐ๋™

MCP ์„ค์ •

~/.cursor/mcp.json ํŒŒ์ผ์— ๋‹ค์Œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

{
  "github.com/techkwon/mcp-gemini": {
    "command": "npm",
    "args": ["start"],
    "cwd": "<ํ”„๋กœ์ ํŠธ_๊ฒฝ๋กœ>",
    "env": {
      "NODE_ENV": "production"
    },
    "disabled": false,
    "autoStart": true,
    "autoApprove": [
      "gem-generate",
      "gem-generate-image",
      "gem-analyze-video",
      "gem-search"
    ]
  }
}

API ์—”๋“œํฌ์ธํŠธ

  • /gem-generate: ํ…์ŠคํŠธ ์ƒ์„ฑ
  • /gem-generate-image: ์ด๋ฏธ์ง€ ์ƒ์„ฑ/๋ถ„์„
  • /gem-analyze-video: YouTube ๋น„๋””์˜ค ๋ถ„์„
  • /gem-search: ์›น ๊ฒ€์ƒ‰

์ฃผ์š” ์—…๋ฐ์ดํŠธ

์ตœ์‹  ๋ฒ„์ „ (2024-03)

  • PM2๋ฅผ ํ†ตํ•œ ์„œ๋ฒ„ ์ž๋™ํ™” ๊ตฌํ˜„
  • gemini-2.0-flash ๋ชจ๋ธ๋กœ ํ†ต์ผ
  • ์ž๋™ ์žฌ์‹œ์ž‘ ๋ฐ ์˜ค๋ฅ˜ ๋ณต๊ตฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ํ™˜๊ฒฝ ์„ค์ • ๊ฐœ์„ 

์ด์ „ ๋ฒ„์ „

  • YouTube ๋น„๋””์˜ค ๋ถ„์„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ์ด๋ฏธ์ง€ ์ƒ์„ฑ/๋ถ„์„ ๊ธฐ๋Šฅ ๊ฐœ์„ 
  • ์›น ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๋ฌธ์ œ ํ•ด๊ฒฐ

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ

  1. ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

    # PM2 ๋กœ๊ทธ ํ™•์ธ
    npm run logs
    
    # PM2 ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ํ™•์ธ
    npm run status
    
  2. API ํ‚ค ์˜ค๋ฅ˜

    • config.ts ํŒŒ์ผ์—์„œ API ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
    • Gemini API ํ• ๋‹น๋Ÿ‰ ๋ฐ ๊ถŒํ•œ ํ™•์ธ
  3. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฌธ์ œ

    • ecosystem.config.js์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์„ค์ • ํ™•์ธ
    • PM2 ๋ชจ๋‹ˆํ„ฐ๋ง์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์ 

๊ธฐ์—ฌํ•˜๊ธฐ

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ฐ๋ฝ์ฒ˜

ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž: techkwon ์ด๋ฉ”์ผ: techkwon@example.com ํ”„๋กœ์ ํŠธ ๋งํฌ: https://github.com/techkwon/mcp-gemini

์ฃผ์š” ์˜์กด์„ฑ

  • @google/generative-ai: ^0.1.3 (Gemini API SDK)
  • @fastify/cors: ^8.5.0 (CORS ์ง€์›)
  • fastify: ^4.29.0 (์›น ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ)
  • googleapis: ^148.0.0 (Google API ์ง€์›)
  • typescript: ^5.0.0
  • zod: ^3.24.2 (๋ฐ์ดํ„ฐ ๊ฒ€์ฆ)
  • pino: ^8.21.0 (๋กœ๊น…)

Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ ํ†ตํ•ฉ ๊ฐ€์ด๋“œ

์„ค์ • ํŒŒ์ผ ์œ„์น˜

Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์˜ ์„ค์ • ํŒŒ์ผ์€ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค:

  • Windows: %APPDATA%/Claude/config.json
  • macOS: ~/Library/Application Support/Claude/config.json

JSON ์„ค์ • ์˜ˆ์‹œ

{
  "apis": [
    {
      "name": "MCP Gemini",
      "url": "http://localhost:8000",
      "methods": [
        {
          "name": "ํ…์ŠคํŠธ ์ƒ์„ฑ",
          "method": "gem-generate",
          "template": {
            "jsonrpc": "2.0",
            "id": "{uuid}",
            "method": "gem-generate",
            "params": {
              "prompt": "{input}"
            }
          }
        },
        {
          "name": "์ด๋ฏธ์ง€ ์ƒ์„ฑ",
          "method": "gem-generate-image",
          "template": {
            "jsonrpc": "2.0",
            "id": "{uuid}",
            "method": "gem-generate-image",
            "params": {
              "prompt": "{input}"
            }
          }
        },
        {
          "name": "๋น„๋””์˜ค ๋ถ„์„",
          "method": "gem-analyze-video",
          "template": {
            "jsonrpc": "2.0",
            "id": "{uuid}",
            "method": "gem-analyze-video",
            "params": {
              "videoUrl": "{input}",
              "query": "์ด ์˜์ƒ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ์š”์•ฝํ•ด์ฃผ์„ธ์š”"
            }
          }
        },
        {
          "name": "์›น ๊ฒ€์ƒ‰",
          "method": "gem-search",
          "template": {
            "jsonrpc": "2.0",
            "id": "{uuid}",
            "method": "gem-search",
            "params": {
              "query": "{input}"
            }
          }
        }
      ]
    }
  ]
}

๋ณ€์ˆ˜ ์„ค๋ช…

  • {uuid}: ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ณ ์œ  ์š”์ฒญ ID
  • {input}: Claude ์ฑ„ํŒ…์ฐฝ์— ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์˜ ์„ค์ • ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ์œ„์˜ JSON ์„ค์ •์„ ๊ธฐ์กด ์„ค์ •์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ฑ„ํŒ…์ฐฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
@MCP Gemini.ํ…์ŠคํŠธ ์ƒ์„ฑ ํ•œ๊ตญ์˜ ์ „ํ†ต ์Œ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”
@MCP Gemini.์ด๋ฏธ์ง€ ์ƒ์„ฑ ํ•œ์˜ฅ๋งˆ์„์˜ ์•„๋ฆ„๋‹ค์šด ํ’๊ฒฝ
@MCP Gemini.๋น„๋””์˜ค ๋ถ„์„ https://youtube.com/watch?v=VIDEO_ID
@MCP Gemini.์›น ๊ฒ€์ƒ‰ ์ตœ์‹  ์ธ๊ณต์ง€๋Šฅ ๊ธฐ์ˆ  ๋™ํ–ฅ

์‘๋‹ต ํ˜•์‹

๋ชจ๋“  API ์‘๋‹ต์€ ๋‹ค์Œ ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

{
  "jsonrpc": "2.0",
  "id": "์š”์ฒญ์—์„œ ๋ณด๋‚ธ ID",
  "result": {
    "content": "์‘๋‹ต ๋‚ด์šฉ"
  }
}

์˜ค๋ฅ˜ ์‘๋‹ต

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค:

{
  "jsonrpc": "2.0",
  "id": "์š”์ฒญ์—์„œ ๋ณด๋‚ธ ID",
  "error": {
    "code": ์˜ค๋ฅ˜์ฝ”๋“œ,
    "message": "์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€",
    "data": {
      "details": "์ƒ์„ธ ์˜ค๋ฅ˜ ์ •๋ณด"
    }
  }
}

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

์„œ๋ฒ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

  • 400: ์ž˜๋ชป๋œ ์š”์ฒญ ํ˜•์‹
  • 401: ์ธ์ฆ ์˜ค๋ฅ˜ (API ํ‚ค ๊ด€๋ จ)
  • 500: ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜

๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

  • API ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜์„ธ์š”
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์ ์ ˆํ•œ ๋ณด์•ˆ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”
  • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”

๋ฌธ์ œ ํ•ด๊ฒฐ

ํฌํŠธ ์ถฉ๋Œ

์ด๋ฏธ 8000๋ฒˆ ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ:

# ๊ธฐ์กด Node.js ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
pkill -f "node"

์„œ๋ฒ„ ์•ˆ์ •์„ฑ

์„œ๋ฒ„๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ:

  • PM2๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์„ธ์š”
  • ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ข…๋ฃŒ ์›์ธ์„ ํŒŒ์•…ํ•˜์„ธ์š”

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๋กœ๊น…

  • Pino ๋กœ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” pino-pretty๋ฅผ ํ†ตํ•ด ๊ฐ€๋…์„ฑ ์žˆ๋Š” ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค

ํƒ€์ž… ์•ˆ์ •์„ฑ

  • TypeScript์™€ Zod๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค
  • API ์š”์ฒญ/์‘๋‹ต์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค

CLINE MCP ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋“ฑ๋ก ๊ฐ€์ด๋“œ

์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

  1. GitHub ์ €์žฅ์†Œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  2. README.md ํŒŒ์ผ์— ๋ช…ํ™•ํ•œ ์„ค์น˜ ๋ฐ ์„ค์ • ๋ฐฉ๋ฒ•์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  3. (์„ ํƒ์‚ฌํ•ญ) llms-install.md ํŒŒ์ผ์„ ํ†ตํ•ด AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋“ฑ๋ก ์ ˆ์ฐจ

  1. CLINE MCP ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ €์žฅ์†Œ์— ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค

  2. ์ด์Šˆ์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

    • GitHub ์ €์žฅ์†Œ URL: https://github.com/techkwon/mcp-gemini
    • ๋กœ๊ณ  ์ด๋ฏธ์ง€: 400ร—400 ํฌ๊ธฐ์˜ PNG ํŒŒ์ผ
    • ์ถ”๊ฐ€ ์ด์œ : ์ด MCP ์„œ๋ฒ„๊ฐ€ CLINE ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์น˜ ์˜ˆ์‹œ:
    ## MCP Gemini ์„œ๋ฒ„ ๋“ฑ๋ก ์š”์ฒญ
    
    ### GitHub ์ €์žฅ์†Œ
    https://github.com/techkwon/mcp-gemini
    
    ### ์ฃผ์š” ๊ธฐ๋Šฅ
    - Gemini API๋ฅผ ํ™œ์šฉํ•œ ํ…์ŠคํŠธ ์ƒ์„ฑ
    - ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ํŽธ์ง‘ (gemini-2.0-flash-exp ๋ชจ๋ธ ์‚ฌ์šฉ)
    - YouTube ๋น„๋””์˜ค ์ฝ˜ํ…์ธ  ๋ถ„์„
    - ์›น ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
    
    ### ์‚ฌ์šฉ์ž ์ด์ 
    - ์ตœ์‹  Gemini ๋ชจ๋ธ์„ MCP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ํ™œ์šฉ
    - ๋‹ค์–‘ํ•œ ๋ฏธ๋””์–ด ํ˜•์‹(ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค) ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    - ๋ช…ํ™•ํ•œ JSON-RPC ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‰ฌ์šด ํ†ตํ•ฉ
    - ์ƒ์„ธํ•œ ๋ฌธ์„œํ™”์™€ ์˜ˆ์ œ ์ œ๊ณต
    
  3. CLINE์ด README.md๋งŒ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค

์Šน์ธ ์ ˆ์ฐจ

  1. CLINE ํŒ€์ด ์ œ์ถœ๋œ MCP ์„œ๋ฒ„๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค
  2. ๋ณด์•ˆ ๋ฐ ์•ˆ์ •์„ฑ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค
  3. ์Šน์ธ๋˜๋ฉด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์— ๋“ฑ๋ก๋˜์–ด ๋ชจ๋“  CLINE ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

์„ค์น˜ ๊ฐ€์ด๋“œ ์ตœ์ ํ™”

llms-install.md ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# MCP Gemini ์„œ๋ฒ„ ์„ค์น˜ ๊ฐ€์ด๋“œ (AI ์—์ด์ „ํŠธ์šฉ)

## ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ
- Node.js 18.0.0 ์ด์ƒ
- npm ๋˜๋Š” yarn
- Google AI Studio API ํ‚ค

## ์„ค์น˜ ๋‹จ๊ณ„
1. ์ €์žฅ์†Œ ํด๋ก 
2. ์˜์กด์„ฑ ์„ค์น˜: `npm install`
3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •: GOOGLE_API_KEY ์ถ”๊ฐ€
4. ๋นŒ๋“œ: `npm run build`
5. ์„œ๋ฒ„ ์‹คํ–‰: `npm run start`

## ์„ค์ • ๊ฒ€์ฆ
- 8000๋ฒˆ ํฌํŠธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
- API ํ‚ค ์œ ํšจ์„ฑ ๊ฒ€์ฆ
- CORS ์„ค์ • ํ™•์ธ

## ๋ฌธ์ œ ํ•ด๊ฒฐ
- ํฌํŠธ ์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
- API ํ‚ค ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
- ์ผ๋ฐ˜์ ์ธ ์„ค์น˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ

Featured Templates

View More
Customer service
AI-Powered Product List Manager
153 868
Customer service
Service ERP
126 1188
AI Assistants
Talk with Claude 3
159 1523
Customer service
Multi-language AI Translator
136 921

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.