Skip to main content
Glama

MCP Gemini API Server

by techkwon
mcp-gemini-prd.mdโ€ข10.6 kB
# MCP Gemini ์„œ๋ฒ„ ๊ตฌ์ถ• PRD (Product Requirements Document) ## 1. ๊ฐœ์š” Model Context Protocol(MCP) ๊ธฐ๋ฐ˜์œผ๋กœ Google์˜ Gemini API๋ฅผ ํ™œ์šฉํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์œ ํŠœ๋ธŒ ๋ถ„์„, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋ฒ„๋Š” Claude๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ MCP ํด๋ผ์ด์–ธํŠธ์™€ ํ†ตํ•ฉ๋˜์–ด ํ™•์žฅ๋œ AI ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ## 2. ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉ์  MCP(Model Context Protocol)๋Š” Anthropic์ด ์ฃผ๋„ํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์œผ๋กœ, AI ๋ชจ๋ธ์ด ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฐ ๋„๊ตฌ์™€ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. MCP๋Š” "AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ USB-C ํฌํŠธ"๋กœ ๋น„์œ ๋˜๋ฉฐ, ๋‹ค์–‘ํ•œ AI ์‹œ์Šคํ…œ๋“ค์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์™ธ๋ถ€ ๋„๊ตฌ์™€ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ์€: 1. Google์˜ Gemini API๋ฅผ MCP ํ‘œ์ค€์— ๋งž์ถฐ ํ†ตํ•ฉํ•˜์—ฌ Claude์™€ ๊ฐ™์€ MCP ํด๋ผ์ด์–ธํŠธ์—์„œ Gemini ๋ชจ๋ธ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2. ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์œ ํŠœ๋ธŒ ๋ถ„์„, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ MCP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 3. Node.js ๊ธฐ๋ฐ˜์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ## 3. ์ฃผ์š” ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ### 3.1 MCP ์„œ๋ฒ„ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ - MCP ํ”„๋กœํ† ์ฝœ v1.0 ์™„์ „ ์ง€์› - ๋ชจ๋“  ํ•„์ˆ˜ ์—”๋“œํฌ์ธํŠธ ๊ตฌํ˜„ (list-tools, invoke-tool, get-tool-spec) - ๋ณด์•ˆ ์—ฐ๊ฒฐ ๋ฐ ์ธ์ฆ ์ฒ˜๋ฆฌ - ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๊น… - ๋„๊ตฌ ํ˜ธ์ถœ ์‘๋‹ต ์‹œ๊ฐ„ ์ตœ์ ํ™” ### 3.2 Gemini API ํ†ตํ•ฉ - Google Gemini Pro, Gemini Ultra, Gemini Flash ๋ชจ๋ธ ์ง€์› - ํ…์ŠคํŠธ ์ƒ์„ฑ ๋ฐ ๋ถ„์„ ๊ธฐ๋Šฅ - ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•œ API ํ‚ค ๊ด€๋ฆฌ - ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ • ๊ธฐ๋Šฅ (temperature, top_p ๋“ฑ) - ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ ### 3.3 ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ธฐ๋Šฅ - Gemini 2.0 Flash๋ฅผ ํ™œ์šฉํ•œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ - ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ - ์ด๋ฏธ์ง€ ํฌ๊ธฐ ๋ฐ ํ’ˆ์งˆ ์กฐ์ • ์˜ต์…˜ - ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์˜ ๋กœ์ปฌ ์ €์žฅ ๋ฐ ๋ฐ˜ํ™˜ ๊ธฐ๋Šฅ - ์ด๋ฏธ์ง€ ๋ณ€ํ˜• ๋ฐ ํŽธ์ง‘ ๊ธฐ๋Šฅ ### 3.4 ์œ ํŠœ๋ธŒ ๋ถ„์„ ๊ธฐ๋Šฅ - ์œ ํŠœ๋ธŒ ๋™์˜์ƒ URL์—์„œ ์ž๋ง‰ ์ถ”์ถœ - ๋™์˜์ƒ ๋‚ด์šฉ ์š”์•ฝ ๊ธฐ๋Šฅ - ์ฃผ์š” ํ† ํ”ฝ ์ถ”์ถœ ๋ฐ ๋ถ„์„ - ํƒ€์ž„์Šคํƒฌํ”„ ๊ธฐ๋ฐ˜ ๋‚ด์šฉ ๊ตฌ์กฐํ™” - ์—ฌ๋Ÿฌ ๋™์˜์ƒ ๊ฐ„์˜ ๋น„๊ต ๋ถ„์„ ### 3.5 ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ - ์›น ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ - ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ•„ํ„ฐ๋ง ๋ฐ ์ •์ œ - ์ปจํ…์ŠคํŠธ์— ๋งž๋Š” ์ •๋ณด ์ถ”์ถœ - ๊ฒฐ๊ณผ ์š”์•ฝ ๋ฐ ๊ตฌ์กฐํ™” - ์ธ์šฉ ๋ฐ ์†Œ์Šค ์ถ”์  ## 4. ๊ธฐ์ˆ  ์Šคํƒ ### 4.1 ๋ฐฑ์—”๋“œ - ์–ธ์–ด: TypeScript/Node.js (v18+) - MCP SDK: @modelcontextprotocol/mcp-sdk - ์›น ํ”„๋ ˆ์ž„์›Œํฌ: Fastify - ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: Node.js ๋‚ด์žฅ Promise, async/await - API ํ†ตํ•ฉ: @google/generative-ai, youtube-api-v3, google-search-api ### 4.2 ์ธ์ฆ ๋ฐ ๋ณด์•ˆ - API ํ‚ค ๊ด€๋ฆฌ: dotenv - ๋ณด์•ˆ ์—ฐ๊ฒฐ: TLS/SSL - ํ† ํฐ ์ธ์ฆ: jsonwebtoken ### 4.3 ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ - ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: sharp, canvas - ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ: natural - ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”: JSON ### 4.4 ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ - ํ…Œ์ŠคํŠธ: Jest, supertest - ๋กœ๊น…: pino - ์ปจํ…Œ์ด๋„ˆํ™”: Docker - ํ™˜๊ฒฝ ๊ด€๋ฆฌ: npm ## 5. ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ``` [ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜] <--> [MCP ํด๋ผ์ด์–ธํŠธ] <--> [MCP Gemini ์„œ๋ฒ„] <--> [Google API] ``` ### 5.1 MCP ์„œ๋ฒ„ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ 1. **์„œ๋ฒ„ ์ดˆ๊ธฐํ™” ๋ชจ๋“ˆ**: MCP ์„œ๋ฒ„ ์‹คํ–‰ ๋ฐ ์„ค์ • ๊ด€๋ฆฌ 2. **๋„๊ตฌ ๊ด€๋ฆฌ์ž**: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก ๊ด€๋ฆฌ ๋ฐ ๋…ธ์ถœ 3. **์ธ์ฆ ๊ด€๋ฆฌ์ž**: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ 4. **๋„๊ตฌ ๊ตฌํ˜„ ๋ชจ๋“ˆ**: ๊ฐ ๊ธฐ๋Šฅ๋ณ„ ๋„๊ตฌ ๊ตฌํ˜„ (์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์œ ํŠœ๋ธŒ ๋ถ„์„, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰) 5. **Gemini API ํด๋ผ์ด์–ธํŠธ**: Google Gemini API์™€์˜ ํ†ต์‹  ๊ด€๋ฆฌ 6. **๋กœ๊น… ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ**: ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋กœ๊น…, ์˜ค๋ฅ˜ ์ถ”์  ## 6. ํด๋” ๊ตฌ์กฐ ``` mcp-gemini-server/ โ”œโ”€โ”€ .env.example # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ˆ์ œ โ”œโ”€โ”€ .gitignore โ”œโ”€โ”€ Dockerfile โ”œโ”€โ”€ LICENSE โ”œโ”€โ”€ README.md โ”œโ”€โ”€ package.json โ”œโ”€โ”€ package-lock.json โ”œโ”€โ”€ tsconfig.json โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ index.ts # ์ง„์ž…์  โ”‚ โ”œโ”€โ”€ config.ts # ์„œ๋ฒ„ ์„ค์ • โ”‚ โ”œโ”€โ”€ server.ts # MCP ์„œ๋ฒ„ ๊ตฌํ˜„ โ”‚ โ”œโ”€โ”€ api/ โ”‚ โ”‚ โ”œโ”€โ”€ gemini.ts # Gemini API ํด๋ผ์ด์–ธํŠธ โ”‚ โ”‚ โ”œโ”€โ”€ youtube.ts # YouTube API ํด๋ผ์ด์–ธํŠธ โ”‚ โ”‚ โ””โ”€โ”€ search.ts # ๊ฒ€์ƒ‰ API ํด๋ผ์ด์–ธํŠธ โ”‚ โ”œโ”€โ”€ tools/ โ”‚ โ”‚ โ”œโ”€โ”€ base.ts # ๊ธฐ๋ณธ ๋„๊ตฌ ํด๋ž˜์Šค โ”‚ โ”‚ โ”œโ”€โ”€ image-tools.ts # ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋„๊ตฌ โ”‚ โ”‚ โ”œโ”€โ”€ youtube-tools.ts # ์œ ํŠœ๋ธŒ ๋ถ„์„ ๋„๊ตฌ โ”‚ โ”‚ โ””โ”€โ”€ search-tools.ts # ๊ฒ€์ƒ‰ ๋„๊ตฌ โ”‚ โ”œโ”€โ”€ types/ โ”‚ โ”‚ โ”œโ”€โ”€ request.ts # ์š”์ฒญ ํƒ€์ž… โ”‚ โ”‚ โ””โ”€โ”€ response.ts # ์‘๋‹ต ํƒ€์ž… โ”‚ โ””โ”€โ”€ utils/ โ”‚ โ”œโ”€โ”€ auth.ts # ์ธ์ฆ ์œ ํ‹ธ๋ฆฌํ‹ฐ โ”‚ โ”œโ”€โ”€ logging.ts # ๋กœ๊น… ์œ ํ‹ธ๋ฆฌํ‹ฐ โ”‚ โ””โ”€โ”€ error.ts # ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ โ”œโ”€โ”€ tests/ โ”‚ โ”œโ”€โ”€ server.test.ts โ”‚ โ”œโ”€โ”€ image-tools.test.ts โ”‚ โ”œโ”€โ”€ youtube-tools.test.ts โ”‚ โ””โ”€โ”€ search-tools.test.ts โ””โ”€โ”€ examples/ โ”œโ”€โ”€ basic-usage.ts โ”œโ”€โ”€ image-generation.ts โ”œโ”€โ”€ youtube-analysis.ts โ””โ”€โ”€ search-example.ts ``` ## 7. MCP ์„œ๋ฒ„ ๊ตฌ์ถ• ๋ฐฉ๋ฒ• ### 7.1 ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ```bash # ์ €์žฅ์†Œ ํด๋ก  git clone https://github.com/yourusername/mcp-gemini-server.git cd mcp-gemini-server # ์˜์กด์„ฑ ์„ค์น˜ npm install # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • cp .env.example .env # .env ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ ํ•„์š”ํ•œ API ํ‚ค ์ถ”๊ฐ€ ``` ### 7.2 ํ•ต์‹ฌ ๊ตฌํ˜„ ๋‹จ๊ณ„ 1. **MCP SDK ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์„œ๋ฒ„ ์„ค์ •** ```typescript // src/server.ts import { MCPServer, Tool, ToolSpec } from '@modelcontextprotocol/mcp-sdk'; import { FastifyInstance } from 'fastify'; class GeminiMCPServer extends MCPServer { constructor(config: Config) { super(); this.config = config; this._registerTools(); } private _registerTools(): void { // ๋„๊ตฌ ๋“ฑ๋ก ๋กœ์ง // ์˜ˆ: this.registerTool(imageGenerationTool); } } ``` 2. **๋„๊ตฌ ๊ตฌํ˜„** ```typescript // src/tools/image-tools.ts import { Tool, ToolSpec } from '@modelcontextprotocol/mcp-sdk'; import { GenerativeModel } from '@google/generative-ai'; // ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋„๊ตฌ ์ •์˜ async function generateImage(params: any): Promise<any> { const { prompt, size = '1024x1024' } = params; // Gemini API ํ˜ธ์ถœ const model = new GenerativeModel({ model: 'gemini-2.0-flash', apiKey: process.env.GOOGLE_API_KEY }); const result = await model.generateContent({ prompt, generationConfig: { outputModality: 'image' } }); // ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋ฐ ๋ฐ˜ํ™˜ const imageUrl = result.response.candidates[0].content.parts[0].sourceUri; return { imageUrl }; } // ๋„๊ตฌ ์ŠคํŽ™ ์ •์˜ export const imageGenerationTool: Tool = { name: 'image-generation', description: 'Generate images based on text prompts using Google Gemini 2.0 Flash', parameters: { type: 'object', properties: { prompt: { type: 'string', description: 'Text description of the image to generate' }, size: { type: 'string', description: 'Image size (e.g., "1024x1024")', default: '1024x1024' } }, required: ['prompt'] }, function: generateImage }; ``` 3. **๋ฉ”์ธ ์ง„์ž…์  ๊ตฌํ˜„** ```typescript // src/index.ts import dotenv from 'dotenv'; import { Config } from './config'; import { GeminiMCPServer } from './server'; async function main() { dotenv.config(); const config = new Config(); const server = new GeminiMCPServer(config); await server.start(); } if (require.main === module) { main().catch(console.error); } ``` ## 8. Claude์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• Claude ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด MCP ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”: 1. **์„œ๋ฒ„ ์‹คํ–‰** ```bash cd mcp-gemini-server npm start ``` 2. **Claude ๋ฐ์Šคํฌํ†ฑ ์„ค์ •** Claude ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค: ```json { "servers": [ { "name": "Gemini MCP Server", "command": "npm", "args": ["start"], "cwd": "/absolute/path/to/mcp-gemini-server", "env": { "GOOGLE_API_KEY": "your-api-key" } } ] } ``` ์„ค์ • ํŒŒ์ผ ์œ„์น˜: - Mac: `~/Library/Application Support/Claude/claude_desktop_config.json` - Windows: `%APPDATA%\Claude\claude_desktop_config.json` - Linux: `~/.config/Claude/claude_desktop_config.json` 3. **Claude ๋Œ€ํ™” ๋‚ด์—์„œ ์‚ฌ์šฉ** Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ์žฌ์‹œ์ž‘ํ•œ ํ›„, ๋Œ€ํ™” ์ค‘์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ``` ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์ค„๋ž˜? "ํ‘ธ๋ฅธ ์‚ฐ๊ณผ ํ˜ธ์ˆ˜๊ฐ€ ์žˆ๋Š” ํ’๊ฒฝ" ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์ค˜. ``` Claude๋Š” MCP ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ## 9. ์˜ˆ์ƒ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ 1. **API ํ‚ค ๊ด€๋ฆฌ**: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ API ํ‚ค ๊ด€๋ฆฌ ๋ฐ ํ‚ค ํšŒ์ „ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„ 2. **์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ**: ๋‹ค์–‘ํ•œ API ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์šฉํ•œ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต 3. **์„ฑ๋Šฅ ์ตœ์ ํ™”**: ์‘๋‹ต ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐ ์บ์‹ฑ ์ „๋žต 4. **ํ™•์žฅ์„ฑ**: ์ƒˆ๋กœ์šด Gemini ๋ชจ๋ธ ๋ฐ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆํ™”๋œ ์„ค๊ณ„ 5. **๋ณด์•ˆ**: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ ๋ฐ ์•ˆ์ „ํ•œ API ํ†ต์‹  ๋ณด์žฅ ## 10. ํ–ฅํ›„ ํ™•์žฅ ๊ณ„ํš 1. ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ์„œ๋ฒ„ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง 2. ์ถ”๊ฐ€ Google API (Maps, Translate ๋“ฑ) ํ†ตํ•ฉ 3. ํŒŒ์ธํŠœ๋‹๋œ Gemini ๋ชจ๋ธ ์ง€์› 4. ๋‹ค์ค‘ ๋ชจ๋ธ ์—ฐ๊ณ„๋ฅผ ํ†ตํ•œ ๊ณ ๊ธ‰ ์›Œํฌํ”Œ๋กœ์šฐ ์ง€์› 5. ์ด๋ฏธ์ง€ ๋ถ„์„ ๋ฐ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž…๋ ฅ ์ฒ˜๋ฆฌ ํ™•์žฅ ## 11. ๊ฒฐ๋ก  ์ด PRD๋Š” MCP ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ Google์˜ Gemini API๋ฅผ Claude์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ MCP ํด๋ผ์ด์–ธํŠธ์— ํ†ตํ•ฉํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ตฌํ˜„ ๋ฐฉ์•ˆ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. Node.js/TypeScript ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด JavaScript ์ƒํƒœ๊ณ„์˜ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์œ ํŠœ๋ธŒ ๋ถ„์„, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ AI ๋ชจ๋ธ์˜ ๊ธฐ๋Šฅ์„ ํฌ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/techkwon/mcp-gemini'

If you have feedback or need assistance with the MCP directory API, please join our Discord server