Gemini MCP服务器
一个模型上下文协议(MCP)服务器,提供对谷歌Gemini AI模型的访问,并具有增强的分析功能。此服务器利用Gemini的大型上下文窗口来分析可能超过其他模型令牌限制的文件和目录。这里的所有测试都是用vibe编码的。
特性
- 通用人工智能查询:直接向Gemini模型提问
- 文件分析:使用自定义提示和分析类型分析单个文件
- 目录分析:分析整个目录及其内容
- 沙盒模式:可选沙盒执行以确保安全
- 灵活的模型选择:支持不同的Gemini型号
先决条件
- Python 3.10或更高版本
- 已安装并配置Google Gemini CLI
安装
- 克隆存储库:
git clone
cd mcp-cli-coder- 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate - 安装依赖项:
pip install -r requirements.txt- 通过创建
.env文件:
GEMINI_TIMEOUT=30
GEMINI_MAX_RETRIES=3可用工具
1.ask_gemini
向Gemini AI模型提出一般性问题。
参数:
query(必填):发送给双子座的问题或提示model(可选):要使用的Gemini模型(默认值:“Gemini-1.5”)sandbox(可选):是否使用沙盒环境(默认:false)
2.分析文件
分析特定文件的内容。
参数:
file_path(必填):要分析的文件的路径analysis_type(必填):分析类型(例如,“摘要”、“代码审查”、“错误检测”、“关键字”)prompt(必填):自定义提示以指导分析sandbox(可选):是否使用沙盒环境(默认:false)
3.分析目录
分析目录及其文件的内容。
参数:
directory_path(必填):要分析的目录的路径analysis_type(必填):分析类型(例如,“摘要”、“文件类型”、“代码审查”、“错误检测”)prompt(必填):自定义提示以指导分析sandbox(可选):是否使用沙盒环境(默认:false)
用法
启动服务器
python src/main.py服务器将通过stdin/stdout启动并监听MCP协议消息。
从其他项目目录使用
由于此MCP服务器通过stdio进行通信,您可以从任何项目目录以多种方式使用它:
1.直接执行
# From any directory
python /path/to/mcp-cli-coder/src/main.py2.使用包装脚本
使用随附的 run_server.sh 更容易执行的脚本:
# Make the script executable (one time setup)
chmod +x /path/to/mcp-cli-coder/run_server.sh
# Run from any directory
/path/to/mcp-cli-coder/run_server.sh3.全球安装
要在系统范围内访问,请创建一个符号链接:
# Add to your PATH (one time setup)
sudo ln -s /path/to/mcp-cli-coder/run_server.sh /usr/local/bin/gemini-mcp
# Then use from anywhere
gemini-mcp4.MCP客户端配置
最常见的用法是通过像Claude Desktop这样的MCP客户端。将此添加到您的MCP设置中:
{
"servers": {
"gemini-mcp": {
"command": "python",
"args": ["/path/to/mcp-cli-coder/src/main.py"],
"env": {
"PYTHONPATH": "/path/to/mcp-cli-coder/src"
}
}
}
}MCP协议示例
初始化连接
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}列出可用工具
{"jsonrpc":"2.0","id":2,"method":"tools/list"}工具调用示例
问双子座:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"ask_gemini","arguments":{"query":"What is the capital of France?","model":"gemini-1.5-flash","sandbox":false}}}分析文件:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"analyze_file","arguments":{"file_path":"./src/main.py","analysis_type":"code review","prompt":"Review this Python code for best practices and potential improvements"}}}分析目录:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"analyze_directory","arguments":{"directory_path":"./src","analysis_type":"summary","prompt":"Provide an overview of this Python project structure"}}}测试序列
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"ping","arguments":{"message":"Hello from complete test!"}}}建筑
组件
- MCP服务器:使用MCP协议实现核心服务器
- 工具注册表:管理和分派工具调用
- Gemini控制器:处理与Gemini CLI的交互
- 工具实施:针对不同功能的单独工具类
配置
服务器使用环境变量进行配置。创建一个 .env 项目根目录中的文件:
# Gemini CLI Configuration
GEMINI_TIMEOUT=30
GEMINI_MAX_RETRIES=3
发展
添加新工具
- 创建一个新的工具类,继承自
ToolBase - 实施所需方法:
input_schema和execute - 在中注册该工具
src/tools/__init__.py
## License
This project is licensed under the MIT License.```