MCP Gemini客户端
贷记并开始于- medium.com/@fruitful2007/building-an-mcp-client-101-lets-build-one-for-agemini-chat-agent
pypi.org/project/gemini-tool-agent
一个(可能是哈哈)功能强大的MCP(模型上下文协议)客户端,使用谷歌的Gemini AI模型进行智能工具使用和对话处理。
- 经过测试,目前与Claude Desktop作为MCP服务器运行良好。
基于未经测试的AI生成代码,由非编码人员使用,风险自负。
特性
- 多个Gemini模型:支持多种Gemini型号(2.0-flash、2.5-pro、1.5-pro等)
- 灵活的软件包支持:适用于gemini工具代理、谷歌generativeai或谷歌genai软件包
- 运行时模型切换:在对话中更改模型
- 服务器配置管理:存储和管理MCP服务器配置
- 智能工具使用:人工智能驱动的工具发现和执行
- 异步/等待支持:高效的并发操作
- 全面的错误处理:强大的错误恢复和日志记录
- 类型提示:具有完全类型安全的现代Python实践
使用agents目录中的“adk-web”-将agent.py路径更改为您自己的路径,以便现在使用简单的Gemini mcp,直到我得到更好的设置。 full_mcp_agent-README.md alt text
安装
📋 简易安装说明 以下是用Claude设置它的正确方法——也许,如果工作不正常,你可能需要安装它:
- cd/gegemini mcp客户端&uv添加谷歌generativeai
不会抛出错误,非常适合聊天,不确定Gemini MCP的使用。 只需在路径中编辑并在Claude Desktop中使用此配置:
{
"mcpServers": {
"gemini-ai": {
"command": "uv",
"args": [
"--directory",
"/home/ty/Repositories/ai_workspace/gemini-mcp-client",
"run",
"python",
"servers/gemini_mcp_server.py"
],
"env": {
"GEMINI_API_KEY": "your_gemini_api_key_here"
}
},
"echo-server": {
"command": "uv",
"args": [
"--directory",
"/home/ty/Repositories/ai_workspace/gemini-mcp-client",
"run",
"python",
"examples/echo_server.py"
]
}
}
}如果有人想尝试,可以在Claude之外安装,并可能使用MCP工具为Gemini开发独立UI!:
- 可能是幻觉
此项目使用 uv 用于依赖性管理。确保你有 uv 安装。
设置环境
# Create and activate virtual environment
uv venv --python 3.12 --seed
source .venv/bin/activate
Install base dependencies- this is wrong it seems.
uv add .
maybe
/gemini-mcp-client uv sync uv add mcp
Install a Gemini package (choose one or more):
uv add gemini-tool-agent
OR
uv add google-generativeai
OR
uv add google-genai
OR install all options
uv add all-gemini
### 开发设置
Install with development dependencies
uv add --dev ".[dev]"
Install pre-commit hooks
uv run pre-commit install
## 配置
创建一个 `.env` 项目根目录中的文件:
GEMINI_API_KEY=your_gemini_api_key_here LOG_LEVEL=INFO
## 用法
### 模型选择
客户端支持多种Gemini模型,不确定是否可以添加更多模型:
- `gemini-2.0-flash` -快速、高效的模型(默认)
- `gemini-2.5-pro-preview-03-25` -复杂任务的高级模型
- `gemini-2.5-flash-preview-04-17` -平衡的速度和能力
- `gemini-1.5-pro` -稳定可靠的型号
- `gemini-1.5-flash` -快速、轻便的型号
- `gemini-1.5-flash-8b` -超轻型
### 命令行用法
Start chat with default model
mcp-gemini-client chat path/to/server.py
Start chat with specific model
mcp-gemini-client chat server.py --model gemini-2.5-pro-preview-03-25
Get server information
mcp-gemini-client info server.py
List available models
mcp-gemini-client models
Set logging level
mcp-gemini-client chat server.py --log-level DEBUG
### 服务器管理
List configured servers
mcp-gemini-client servers list
Add new server interactively
mcp-gemini-client servers add
Connect to configured server by name
mcp-gemini-client chat echo-server
Enable/disable servers
mcp-gemini-client servers enable my-server mcp-gemini-client servers disable my-server
Export for Claude Desktop
mcp-gemini-client servers export claude_config.json
Import from Claude Desktop config
mcp-gemini-client servers import existing_config.json
### 配置管理
Show current configuration
mcp-gemini-client config show
Set default model
mcp-gemini-client config set default_model gemini-2.5-pro-preview-03-25
Set other settings
mcp-gemini-client config set log_level DEBUG mcp-gemini-client config set connection_timeout 60.0
### 程序化使用
import asyncio from mcp_gemini_client import MCPClient
async def main(): # Initialize with specific model client = MCPClient(model="gemini-2.5-pro-preview-03-25")
try: # Connect to server await client.connect_to_server("examples/echo_server.py")
# Get server information info = await client.get_server_info() print(f"Current model: {info['model']}") print(f"Available tools: {[tool['name'] for tool in info['tools']]}")
# Change model during runtime client.set_model("gemini-2.0-flash")
# Interactive conversation response = await client.get_response("What tools are available?") print(response)
# Direct tool usage result = await client.call_tool_directly("echo", {"message": "Hello!"}) print(result)
# Start chat loop await client.chat_loop()
finally: await client.close()
asyncio.run(main())
### 运行时模型切换
在交互式聊天会话中,您可以更改模型:
💬 You: model gemini-2.5-pro-preview-03-25 ✅ Model changed to: gemini-2.5-pro-preview-03-25
💬 You: What's the current model? 🤖 Assistant: I'm currently using gemini-2.5-pro-preview-03-25...
## 服务器配置
### 配置文件
- `config/servers.json` -MCP服务器配置
- `config/client.json` -客户端设置(型号、超时等)
### 服务器配置示例
{ "my-database": { "name": "my-database", "description": "Project SQLite database", "server_type": "python", "command": "uv", "args": ["run", "mcp-server-sqlite", "--db-path", "data/project.db"], "env": { "DB_READONLY": "false" }, "enabled": true, "tags": ["database", "sqlite"] } }
### Claude桌面集成
直接导出Claude Desktop的配置:
mcp-gemini-client servers export
这创建了一个 `claude_desktop_config.json` 文件:
{ "mcpServers": { "my-database": { "command": "uv", "args": ["run", "mcp-server-sqlite", "--db-path", "data/project.db"], "env": { "DB_READONLY": "false" } } } }
## 快速开始
Install and setup
uv add . --optional-dependencies google-generativeai cp .env.example .env
Edit .env and add your GEMINI_API_KEY
List available models
mcp-gemini-client models
Test with echo server
mcp-gemini-client chat examples/echo_server.py
Add a server configuration
mcp-gemini-client servers add
Use configured server
mcp-gemini-client chat my-server
Export for Claude Desktop
mcp-gemini-client servers export
## 例子
### 与Echo服务器聊天
mcp-gemini-client chat examples/echo_server.py
### 模型选择示例
List available models
mcp-gemini-client models
Use specific model
mcp-gemini-client chat server.py --model gemini-2.5-pro-preview-03-25
### 服务器配置示例
from mcp_gemini_client.config import get_config_manager, ServerConfig, ServerType
config_manager = get_config_manager()
Add a database server
db_server = ServerConfig( name="project-db", description="Project database server", server_type=ServerType.PYTHON, command="uv", args=["run", "mcp-server-sqlite", "--db-path", "data/project.db"], env={"DB_READONLY": "false"}, tags=["database", "project"] )
config_manager.add_server(db_server)
Export for Claude Desktop
config_manager.export_claude_desktop_config("claude_config.json")
## 建筑
客户端由以下关键组件构建:
- **MCP客户端**:处理服务器连接和对话的主客户端类
- **GeminiAgent**:不同Gemini包实现的包装器
- **配置管理器**:服务器和客户端配置管理
- **异步上下文管理**:适当的资源清理和连接处理
- **模型管理**:运行时模型选择和切换
- **错误处理**:全面的错误恢复和日志记录
- **类型安全**:完整的类型提示,以获得更好的开发体验
## 发展
### 代码质量
Format code
uv run ruff format .
Check code
uv run ruff check .
Type checking
uv run pyright
Run tests
uv run pytest
### 测试
Run all tests
uv run pytest
Run with coverage
uv run pytest --cov=mcp_gemini_client
Run specific test
uv run pytest tests/test_client.py::test_model_selection
## 文档
- **使用指南**: `prompts/usage_guide.md`
- **服务器配置**: `prompts/server_configuration_guide.md`
- **故障排除**: `prompts/troubleshooting.md`
- **最佳实践**: `prompts/best_practices.md`
## 贡献
1. 遵循代码库中的开发指南
1. 确保所有测试通过
1. 为所有新代码添加类型提示
1. 为公共API编写文档字符串
1. 保持功能集中和小型化
1. 使用多个Gemini软件包进行测试
## 许可证
MIT许可证-有关详细信息,请参阅许可证文件。