返回市场
双子座-mcp客户端

双子座-mcp客户端

作者:angrysky5616 星标更新:2025-05-27

项目介绍

MCP Gemini 客户端

感谢并基于-medium.com/@fruitful2007/building-an-mcp-client-101-lets-build-one-for-a-gemini-chat-agent

pypi.org/project/gemini-tool-agent

这是一个(可能,哈哈)强大的MCP(模型上下文协议)客户端,使用Google的Gemini AI模型进行智能工具使用和对话处理。

  • 目前已测试与Claude Desktop作为MCP服务器配合良好。

基于未经测试的AI生成代码,非程序员使用需自担风险。

特性

  • 多种Gemini模型支持:支持各种Gemini模型(如2.0-flash、2.5-pro、1.5-pro等)
  • 灵活的包支持:兼容gemini-tool-agent、google-generativeai或google-genai包
  • 运行时模型切换:在对话过程中更换模型
  • 服务器配置管理:存储和管理MCP服务器配置
  • 智能工具使用:AI驱动的工具发现和执行
  • 异步/等待支持:高效的并发操作
  • 全面的错误处理:强大的错误恢复和日志记录
  • 类型提示:采用现代Python实践,提供完整的类型安全

alt text

alt text

使用“adk web”从代理目录-修改agent.py路径以简单地使用Gemini mcp,直到我有更好的设置。 full_mcp_agent-README.md alt text

alt text

google agent framework report text

安装

📋 简单安装说明 这是正确的设置方法与Claude-也许需要安装以下内容才能正常工作:

  • cd /gemini-mcp-client && uv add google-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"
      ]
    }
  }
}

alt text

如果有人想尝试并可能开发一个独立的Gemini MCP工具UI:

  • 可能是幻觉

该项目使用uv进行依赖管理。确保您已安装uv

设置环境

# 创建并激活虚拟环境
uv venv --python 3.12 --seed
source .venv/bin/activate


```bash
# 安装基础依赖-这似乎有误。
# uv add .

# 或许
/gemini-mcp-client
uv sync
uv add mcp

# 安装Gemini包(选择一个或多个):
uv add gemini-tool-agent
# 或
uv add google-generativeai
# 或
uv add google-genai
# 或安装所有选项
uv add all-gemini

开发设置

# 安装开发依赖
uv add --dev ".[dev]"

# 安装pre-commit钩子
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 - 超轻量级模型

命令行使用

# 使用默认模型启动聊天
mcp-gemini-client chat path/to/server.py

# 使用特定模型启动聊天
mcp-gemini-client chat server.py --model gemini-2.5-pro-preview-03-25

# 获取服务器信息
mcp-gemini-client info server.py

# 列出可用模型
mcp-gemini-client models

# 设置日志级别
mcp-gemini-client chat server.py --log-level DEBUG

服务器管理

# 列出已配置的服务器
mcp-gemini-client servers list

# 交互式添加新服务器
mcp-gemini-client servers add

# 通过名称连接到已配置的服务器
mcp-gemini-client chat echo-server

# 启用/禁用服务器
mcp-gemini-client servers enable my-server
mcp-gemini-client servers disable my-server

# 导出给Claude Desktop
mcp-gemini-client servers export claude_config.json

# 从Claude Desktop配置导入
mcp-gemini-client servers import existing_config.json

配置管理

# 显示当前配置
mcp-gemini-client config show

# 设置默认模型
mcp-gemini-client config set default_model gemini-2.5-pro-preview-03-25

# 设置其他设置
mcp-gemini-client config set log_level DEBUG
mcp-g-emin-client config set connection_timeout 60.0

程序化使用

import asyncio
from mcp_gemini_client import MCPClient

async def main():
    # 使用特定模型初始化
    client = MCPClient(model="gemini-2.5-pro-preview-03-25")

    try:
        # 连接到服务器
        await client.connect_to_server("examples/echo_server.py")

        # 获取服务器信息
        info = await client.get_server_info()
        print(f"当前模型: {info['model']}")
        print(f"可用工具: {[tool['name'] for tool in info['tools']]}")

        # 在运行时更改模型
        client.set_model("gemini-2.0-flash")

        # 交互式对话
        response = await client.get_response("有哪些可用的工具?")
        print(response)

        # 直接工具使用
        result = await client.call_tool_directly("echo", {"message": "你好!"})
        print(result)

        # 启动聊天循环
        await client.chat_loop()

    finally:
        await client.close()

asyncio.run(main())

运行时模型切换

在交互式聊天会话期间,您可以更改模型:

💬 你:model gemini-2.5-pro-preview-03-25
✅ 模型已更改为:gemini-2.5-pro-preview-03-25

💬 你:当前模型是什么?
🤖 助手:我目前正在使用gemini-2.5-pro-preview-03-25...

服务器配置

配置文件

  • config/servers.json - MCP服务器配置
  • config/client.json - 客户端设置(模型、超时等)

示例服务器配置

{
  "my-database": {
    "name": "my-database",
    "description": "项目SQLite数据库",
    "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 Desktop集成

直接导出配置给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"
      }
    }
  }
}

快速开始

# 安装和设置
uv add . --optional-dependencies google-generativeai
cp .env.example .env
# 编辑.env并添加你的GEMINI_API_KEY

# 列出可用模型
mcp-gemini-client models

# 测试回声服务器
mcp-gemini-client chat examples/echo_server.py

# 添加服务器配置
mcp-gemini-client servers add

# 使用已配置的服务器
mcp-gemini-client chat my-server

# 导出给Claude Desktop
mcp-gemini-client servers export

示例

与回声服务器聊天

mcp-gemini-client chat examples/echo_server.py

模型选择示例

# 列出可用模型
mcp-gemini-client models

# 使用特定模型
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()

# 添加数据库服务器
db_server = ServerConfig(
    name="project-db",
    description="项目数据库服务器",
    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)

# 导出给Claude Desktop
config_manager.export_claude_desktop_config("claude_config.json")

架构

客户端由这些关键组件构建:

  • MCPClient:主要客户端类,负责服务器连接和对话
  • GeminiAgent:不同Gemini包实现的封装
  • ConfigManager:服务器和客户端配置管理
  • 异步上下文管理:适当的资源清理和连接处理
  • 模型管理:运行时模型选择和切换
  • 错误处理:全面的错误恢复和日志记录
  • 类型安全:完整的类型提示,提供更好的开发体验

开发

代码质量

# 格式化代码
uv run ruff format .

# 检查代码
uv run ruff check .

# 类型检查
uv run pyright

# 运行测试
uv run pytest

测试

# 运行所有测试
uv run pytest

# 运行覆盖率测试
uv run pytest --cov=mcp_gemini_client

# 运行特定测试
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许可证 - 详情见LICENSE文件。