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
ํ๊ฒฝ ์ค์
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 ๋น๋์ค ๋ถ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ด๋ฏธ์ง ์์ฑ/๋ถ์ ๊ธฐ๋ฅ ๊ฐ์
- ์น ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ
๋ฌธ์ ํด๊ฒฐ
์ผ๋ฐ์ ์ธ ๋ฌธ์
์๋ฒ๊ฐ ์์๋์ง ์๋ ๊ฒฝ์ฐ
# PM2 ๋ก๊ทธ ํ์ธ npm run logs # PM2 ํ๋ก์ธ์ค ์ํ ํ์ธ npm run statusAPI ํค ์ค๋ฅ
config.tsํ์ผ์์ API ํค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธ- Gemini API ํ ๋น๋ ๋ฐ ๊ถํ ํ์ธ
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฌธ์
ecosystem.config.js์์ ๋ฉ๋ชจ๋ฆฌ ์ ํ ์ค์ ํ์ธ- PM2 ๋ชจ๋ํฐ๋ง์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ถ์
๊ธฐ์ฌํ๊ธฐ
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - 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 ์ฑํ ์ฐฝ์ ์ ๋ ฅํ ํ ์คํธ
์ฌ์ฉ ๋ฐฉ๋ฒ
- Claude ๋ฐ์คํฌํฑ ์ฑ์ ์ค์ ํ์ผ์ ์ฝ๋๋ค.
- ์์ JSON ์ค์ ์ ๊ธฐ์กด ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
- Claude ๋ฐ์คํฌํฑ ์ฑ์ ์ฌ์์ํฉ๋๋ค.
- ์ฑํ ์ฐฝ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค:
@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 ๋ง์ผํ๋ ์ด์ค ๋ฑ๋ก ๊ฐ์ด๋
์ฌ์ ์ค๋น์ฌํญ
- GitHub ์ ์ฅ์๊ฐ ๊ณต๊ฐ๋์ด ์์ด์ผ ํฉ๋๋ค
- README.md ํ์ผ์ ๋ช ํํ ์ค์น ๋ฐ ์ค์ ๋ฐฉ๋ฒ์ด ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค
- (์ ํ์ฌํญ)
llms-install.mdํ์ผ์ ํตํด AI ์์ด์ ํธ๋ฅผ ์ํ ์ถ๊ฐ ์ค์น ๊ฐ์ด๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค
๋ฑ๋ก ์ ์ฐจ
CLINE MCP ๋ง์ผํ๋ ์ด์ค ์ ์ฅ์์ ์๋ก์ด ์ด์๋ฅผ ์์ฑํฉ๋๋ค
์ด์์ ๋ค์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค:
- 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 ์ธํฐํ์ด์ค๋ก ์ฌ์ด ํตํฉ - ์์ธํ ๋ฌธ์ํ์ ์์ ์ ๊ณตCLINE์ด README.md๋ง์ผ๋ก ์๋ฒ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ค์นํ ์ ์๋์ง ํ ์คํธํฉ๋๋ค
์น์ธ ์ ์ฐจ
- CLINE ํ์ด ์ ์ถ๋ MCP ์๋ฒ๋ฅผ ๊ฒํ ํฉ๋๋ค
- ๋ณด์ ๋ฐ ์์ ์ฑ ๊ฒ์ฆ์ ์งํํฉ๋๋ค
- ์น์ธ๋๋ฉด ๋ง์ผํ๋ ์ด์ค์ ๋ฑ๋ก๋์ด ๋ชจ๋ 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 ํค ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ผ๋ฐ์ ์ธ ์ค์น ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
Gemini API Server
Project Details
- techkwon/mcp-gemini
- Last Updated: 3/30/2025
Recomended MCP Servers
๐ Enable AI assistants to search, access, and analyze PubMed articles through a simple MCP interface.
ๆตท้พๆฑคmcpๆๅก๏ผไฝฟไฝ ็ฌ่ชไธไบบไนๅฏไปฅไบซๅๆตท้พๆฑคๆธธๆ็ไน่ถฃ
This extension enables developers to implement the MCP server features easily.
Fledge Model Context Protocol (MCP) Server for Cursor AI integration
An MCP server that provides Unix command documentation directly within LLMs conversations.
MCP server for dynamic graphql
An unofficial MCP server for Render to help developers ship code faster via Cline, Cursor, and Windsurf
Model Context Protocol Server for Apache OpenDALโข
A Model Context Protocol (MCP) server for research and documentation assistance using Perplexity AI. Won 1st @ Cline...
MCP server for creating whimsical boards from an LLM context





