Gemma MCP Client

Un cliente para el modelo Gemma-3 de Google que permite la llamada a funciones a través de MCP.

Documentación

Cliente Gemma MCP

Un paquete de Python que combina el modelo de lenguaje Gemma de Google con la integración de servidores MCP (Protocolo de Contenido de Modelos), habilitando potentes capacidades de llamada a funciones tanto en funciones locales como en herramientas MCP remotas.

Características

  • Integración perfecta con el modelo de lenguaje Gemma de Google
  • Soporte tanto para funciones Python locales como para herramientas MCP remotas
  • Descubrimiento y registro automático de herramientas desde servidores MCP
  • Sintaxis de llamada a funciones estilo Python
  • Gestión adecuada de recursos con administradores de contexto asíncronos
  • Soporte para múltiples servidores MCP
  • Pruebas fáciles mediante soporte de servidor de prueba

Instalación

uv add gemma-mcp # or pip install gemma-mcp if you love the old way

Requisitos

  • Python 3.10+
  • google-genai: SDK de Python de Google Generative AI
  • FastMCP utilidades MCP

Uso

Uso Básico

from gemma_mcp import GemmaMCPClient

# a standard MCP configuration
mcp_config = {
    "mcpServers": {
        "weather": {
            "url": "https://weather-api.example.com/mcp"
        },
        "assistant": {
            "command": "python",
            "args": ["./assistant_server.py"]
        }
    }
}

# Initialize client with MCP support
async with GemmaMCPClient(mcp_config=mcp_config).managed() as client:
    # Chat with automatic function execution
    response = await client.chat(
        "What's the weather like in London?",
        execute_functions=True
    )
    print(response)

Añadir Funciones Locales

Puedes añadir funciones locales de tres maneras:

  1. Usando un invocable:
async def my_function(param1: str, param2: int = 0):
    """Function description."""
    return {"result": param1 + str(param2)}

client.add_function(my_function)
  1. Usando un diccionario:
function_def = {
    "name": "my_function",
    "description": "Function description",
    "parameters": {
        "type": "object",
        "properties": {
            "param1": {"type": "string"},
            "param2": {"type": "integer", "default": 0}
        },
        "required": ["param1"]
    }
}
client.add_function(function_def)
  1. Usando un objeto FunctionDefinition:
from gemma_mcp import FunctionDefinition

function_def = FunctionDefinition(
    name="my_function",
    description="Function description",
    parameters={
        "type": "object",
        "properties": {
            "param1": {"type": "string"},
            "param2": {"type": "integer", "default": 0}
        },
        "required": ["param1"]
    },
    required=["param1"]
)
client.add_function(function_def)

Configuración del Servidor MCP

La configuración MCP admite múltiples tipos de servidores:

  1. Servidores con transporte SSE:
mcp_config = {
    "mcpServers": {
        "server_name": {
            "url": "https://server-url/mcp"
        }
    }
}
  1. Servidores con transporte STDIO:
mcp_config = {
    "mcpServers": {
        "server_name": {
            "command": "python",
            "args": ["./server.py"]
        }
    }
}

Pruebas

El paquete incluye soporte para pruebas con servidores MCP en memoria:

from fastmcp import FastMCP
from gemma_mcp import GemmaMCPClient

# Create test server
mcp = FastMCP("Test Server")

# Initialize client with test server
client = GemmaMCPClient()
client.mcp_client.add_test_server(mcp)

# Use the client as normal
async with client.managed():
    response = await client.chat("Test message", execute_functions=True)

Referencia de la API

GemmaMCPClient

La clase principal del cliente que maneja tanto las interacciones con el modelo Gemma como la integración de herramientas MCP.

Parámetros

  • api_key (str, opcional): Clave de API de Gemini. Si no se proporciona, buscará la variable de entorno GEMINI_API_KEY
  • model (str): Modelo a utilizar, por defecto "gemma-3-27b-it"
  • temperature (float): Temperatura de generación, por defecto 0.7
  • system_prompt (str, opcional): Mensaje de sistema personalizado
  • mcp_config (dict, opcional): Diccionario de configuración MCP

Métodos

  • add_function(function): Añadir una definición de función
  • chat(message, execute_functions=False): Enviar un mensaje y obtener respuesta
  • initialize(): Inicializar el cliente y todos los componentes
  • cleanup(): Limpiar todos los recursos

FunctionDefinition

Una clase de datos para representar definiciones de funciones.

Parámetros

  • name (str): Nombre de la función
  • description (str): Descripción de la función
  • parameters (dict): Esquema de parámetros de la función
  • required (list): Lista de parámetros requeridos
  • callable (invocable, opcional): La función invocable real

Licencia

Licencia MIT

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).