使用说明
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
安装
📋 简易安装说明 以下是用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
```bash
# 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
贡献
- 遵循代码库中的开发指南
- 确保所有测试通过
- 为所有新代码添加类型提示
- 为公共API编写文档字符串
- 保持功能集中和小型化
- 使用多个Gemini软件包进行测试
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
