Gemini CLI MCP
MCP server: Gemini CLI MCP
Installation
npx gemini-cli-mcpAsk AI about Gemini CLI MCP
Powered by Claude ยท Grounded in docs
I know everything about Gemini CLI MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Gemini MCP Server
Claude Code์์ Gemini AI๋ฅผ MCP ์๋ฒ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
์ฃผ์ ์ด์
- ๋์ฉ๋ ํ์ผ ๋ถ์: Gemini์ ๊ฑฐ๋ํ ์ปจํ ์คํธ ์๋์ฐ๋ฅผ ํ์ฉํ์ฌ ๋์ฉ๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ํ ๋ฒ์ ๋ถ์ ๊ฐ๋ฅ
- ํ ํฐ ์ ์ฝ: ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ Gemini CLI๋ฅผ ์ด์ฉํด์ Claude Code์ ํ ํฐ ์ฌ์ฉ๋์ ์ ์ฝํ๋ฉด์๋ Claude Code๋ง์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉ ๊ฐ๋ฅ
- ๊ฐํธํ ํตํฉ: ๊ธฐ์กด Claude Code ์ํฌํ๋ก์ฐ์ ์ฝ๊ฒ ํตํฉ ๊ฐ๋ฅ
์ด ์๋ฒ๋ ๋ก์ปฌ์ ์ค์น๋ gemini CLI ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค.
์ฌ์ ์๊ตฌ์ฌํญ
- Python 3.8+
- uv ํจํค์ง ๋งค๋์
- Gemini CLI CLI ๋๊ตฌ
๋น ๋ฅธ ์์
1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/InfolabAI/gemini-cli-mcp.git
cd gemini-cli-mcp
- uv ์ค์น
uv๋ ์์คํ ๋ ๋ฒจ์ ์ค์นํด์ผ ํฉ๋๋ค (Python ๊ฐ์ํ๊ฒฝ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์๋):
# Linux/macOS (๊ถ์ฅ)
curl -LsSf https://astral.sh/uv/install.sh | sh
# macOS Homebrew
brew install uv
# Windows PowerShell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# ์ค์น ํ์ธ
uv --version
- ์์กด์ฑ ์ค์น:
uv sync
Tools
- run_gemini
- Gemini๋ฅผ ์ด์ฉํด์ ํ์ผ, ๋๋ ํ ๋ฆฌ, URL์ ๋๋ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
- ์
๋ ฅ:
prompt(string): Gemini์ ์ ๋ฌํ ํ๋กฌํํธfile_dir_url_path(string): ๋ถ์ํ ํ์ผ, ๋๋ ํ ๋ฆฌ ๋๋ URL ๊ฒฝ๋กworking_directory(string): ์์ ๋๋ ํ ๋ฆฌ (ํ์)
Configuration
Claude Code์์ ์ฌ์ฉํ๋ ค๋ฉด MCP ์๋ฒ ์ค์ ์ ์ถ๊ฐํ์ธ์:
Linux ์ ๊ฒฝ์ฐ, ~/.claude.json ํ์ผ์ ๋ค์ ์ค์ ์ ์ถ๊ฐ:
{
"mcpServers": {
"gemini": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/project",
"run",
"python",
"/path/to/your/project/gemini_mcp_server.py"
],
"env": {}
}
}
}
์ฐธ๊ณ : /path/to/your/project/๋ฅผ ๋ค์ด๋ฐ์ git ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ์ธ์.
๊ฐ๋ฐ
- ์๋ฒ ์ง์ ์คํ(์คํ ํ, ๋ฉ์ถฐ์๋ ๊ฒ์ด ์ ์์)
uv run python gemini_mcp_server.py
- ํ ์คํธ
uv run python test_gemini_mcp.py
- Debugging
MCP ์๋ฒ๋ stdio๋ฅผ ํตํด ํต์ ํ๋ฏ๋ก ๋๋ฒ๊น ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. MCP Inspector ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
- ์ฃผ์ํ ์
subprocess.run ์ ์ฌ์ฉํ ๋ shell=True ์ต์
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ MCP ์๋ฒ ํ๊ฒฝ์์ ์์ ํตํด ๋ช
๋ น์ ์คํํ๊ธฐ ์ํจ์
๋๋ค. ์ด ์ต์
์ด ์์ผ๋ฉด, Gemini CLI ๋ช
๋ น ์คํ ์, ๋๊ธฐ ์ํ์ ๋น ์ง ์ ์์ต๋๋ค. ๊ทธ ์ด์ ๋, MCP ์๋ฒ๋ stdio ๋ชจ๋๋ก ์คํ๋์ด stdin/stdout์ด ํ์ดํ๋ก ์ฐ๊ฒฐ๋๋๋ฐ, ์ผ๋ถ CLI ๋๊ตฌ(ํนํ Node.js ๊ธฐ๋ฐ)๋ tty ํ๊ฒฝ์์์ ํ์ดํ ํ๊ฒฝ์์ ๋ค๋ฅด๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํฐ๋ฏธ๋์์ ์ง์ run_gemini.py ๋ฅผ ์คํ๋ ๋๋ ์์ ํ tty ํ๊ฒฝ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ shell=True ์ต์
์ด ํ์ํ์ง ์์ต๋๋ค.
์ฌ์ฉ ์์
Claude Code์์ MCP ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ Gemini CLI๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค:
- Claude Code์์์ Gemini ํธ์ถ๊ณผ Gemini ์ ์๋ต์ ์
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โป Welcome to Claude Code! โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
> gemini ๋ก gemini_mcp_server.py ์์ฝ ๋ถ์ ์งํํด
โ I'll analyze the gemini_mcp_server.py file using the Gemini MCP server to provide a summary.
โ gemini-mcp-server:run_gemini (MCP)(prompt: "์ด Python ํ์ผ์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๊ตฌ์กฐ๋ฅผ ํ๊ตญ์ด๋ก ์์ฝํด์ฃผ์ธ์. ํด๋์ค, ํจ์, ์ฃผ์ ๋ก์ง์ ํฌํจํด์ ๋ถ์ํด์ฃผ์ธ์.", file_dir_url_path:
"gemini_mcp_server.py")
โฟ {
"result": "[dotenv@16.6.0] injecting env (2) from ../../../.env\n[dotenv@16.6.0] injecting env (2) from ../../../.env\n[dotenv@16.6.0] injecting env (2) from ../../../.env\nMCP STDERR (github): GitHub MCP Server running on stdio\n\nMCP STDERR (sequential-thinking): Sequential Thinking MCP Server running on stdio\n\nMCP STDERR (context7): Context7 Documentation MCP Server running on stdio\n\n์ด Python ํ์ผ(`gemini_mcp_server.py`)์ Gemini CLI ๋๊ตฌ๋ฅผ MCP(Multi-Agent Communication Protocol) ์๋ฒ๋ฅผ ํตํด ์ธ๋ถ์์ ํธ์ถํ ์ ์๋๋ก ๋ํํ๋ ์ญํ ์ ํฉ๋๋ค.\n\n**์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ๊ตฌ์กฐ:**\n\n* **FastMCP ์๋ฒ ์ด๊ธฐํ**: `FastMCP(\"Gemini MCP Server\")`๋ฅผ ์ฌ์ฉํ์ฌ `mcp`๋ผ๋ MCP ์๋ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์ด ํ์ผ์ด MCP ํ๋กํ ์ฝ์ ํตํด ๋ค๋ฅธ ์์ด์ ํธ์ ํต์ ํ ์ ์๋ ์๋ฒ์์ ๋ํ๋
๋๋ค.\n* **`run_gemini` ํจ์ (๋๊ตฌ)**:\n * `@mcp.tool()` ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ๋ถ์ด ์์ด, ์ด ํจ์๊ฐ MCP ์๋ฒ๋ฅผ ํตํด ์ธ๋ถ์์ ํธ์ถ๋ ์ ์๋ \"๋๊ตฌ\"๋ก ๋
ธ์ถ๋จ์ ์๋ฏธํฉ๋๋ค.\n * **์ธ์**: `prompt` (Gemini์ ์ ๋ฌํ ํ๋กฌํํธ)์ `file_dir_url_path` (๋ถ์ํ ํ์ผ, ๋๋ ํ ๋ฆฌ ๋๋ URL ๊ฒฝ๋ก)๋ฅผ ๋ฐ์ต๋๋ค.\n * **์ฃผ์ ๋ก์ง**:\n 1. `file_dir_url_path`๋ฅผ `prompt`์ ์ถ๊ฐํ์ฌ Gemini CLI์ ์ ๋ฌ๋ ์ต์ข
ํ๋กฌํํธ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.\n 2. `subprocess.run`์ ์ฌ์ฉํ์ฌ ์ค์ `gemini` CLI ๋ช
๋ น์ ์คํํฉ๋๋ค. ์ด ๋ `shell=True` ์ต์
์ ์ฌ์ฉํ์ฌ ์์ ํตํด ๋ช
๋ น์ ์คํํ๋ฉฐ, ์ด๋ MCP ์๋ฒ ํ๊ฒฝ์์ ํ์ํ๋ค๊ณ ์ฃผ์์ ๋ช
์๋์ด ์์ต๋๋ค.\n 3. `gemini -m gemini-2.5-flash -p \"...\"` ํ์์ผ๋ก ๋ช
๋ น์ด๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.\n 4. ๋ช
๋ น ์คํ ์ค ๋ฐ์ํ ์ ์๋ `subprocess.TimeoutExpired` (60์ด ์๊ฐ ์ด๊ณผ), `FileNotFoundError` (Gemini CLI๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ), ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ `Exception`์ ์ฒ๋ฆฌํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ์ ํ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.\n 5. Gemini CLI ์คํ์ด ์ฑ๊ณตํ๋ฉด ํ์ค ์ถ๋ ฅ(`stdout`)์ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๊ณ , ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.\n* **์๋ฒ ์คํ**: `if __name__ == \"__main__\":` ๋ธ๋ก ๋ด์์ `mcp.run()`์ ํธ์ถํ์ฌ MCP ์๋ฒ๋ฅผ ์์ํฉ๋๋ค. ์ด๋ ์ด ์คํฌ๋ฆฝํธ๊ฐ ์ง์ ์คํ๋ ๋ ์๋ฒ๊ฐ ๊ตฌ๋๋จ์ ์๋ฏธํฉ๋๋ค.\n\n**์์ฝ:**\n\n`gemini_mcp_server.py`๋ `FastMCP` ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ Gemini CLI๋ฅผ ์ธ๋ถ์์ ํธ์ถ ๊ฐ๋ฅํ ๋๊ตฌ(`run_gemini` ํจ์)๋ก ์ ๊ณตํ๋ ๊ฐ๋จํ ์๋ฒ์
๋๋ค. ์ด ์๋ฒ๋ ํน์ ํ๋กฌํํธ์ ํ์ผ/๋๋ ํ ๋ฆฌ/URL ๊ฒฝ๋ก๋ฅผ ์ธ์๋ก ๋ฐ์ Gemini CLI๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฉฐ, ์คํ ์ค ๋ฐ์ํ ์ ์๋ ๋ค์ํ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค."
}
- Gemini์ ์๋ต์ ์ด์ฉํ Claude Code ์ ์ต์ข ์ถ๋ ฅ
โ gemini_mcp_server.py๋ Gemini CLI๋ฅผ MCP ์๋ฒ๋ก ๋ํํ ํ์ผ์
๋๋ค. FastMCP ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ run_gemini ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, ํ๋กฌํํธ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ฐ์ Gemini CLI๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. 60์ด ํ์์์๊ณผ ์๋ฌ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
