Gemini模型客户端

一个使用Google Gemini AI模型进行智能工具使用和对话处理的MCP客户端,支持多种Gemini模型和运行时模型切换。

  • by angrysky56
  • Python
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 angrysky56/gemini-mcp-client

使用说明

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

贡献

  1. 遵循代码库中的开发指南
  2. 确保所有测试通过
  3. 为所有新代码添加类型提示
  4. 为公共API编写文档字符串
  5. 保持功能集中和小型化
  6. 使用多个Gemini软件包进行测试

许可证

MIT许可证-有关详细信息,请参阅许可证文件。