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 AIFastMCPutilidades 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:
- Usando un invocable:
async def my_function(param1: str, param2: int = 0):
"""Function description."""
return {"result": param1 + str(param2)}
client.add_function(my_function)
- 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)
- 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:
- Servidores con transporte SSE:
mcp_config = {
"mcpServers": {
"server_name": {
"url": "https://server-url/mcp"
}
}
}
- 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_KEYmodel(str): Modelo a utilizar, por defecto "gemma-3-27b-it"temperature(float): Temperatura de generación, por defecto 0.7system_prompt(str, opcional): Mensaje de sistema personalizadomcp_config(dict, opcional): Diccionario de configuración MCP
Métodos
add_function(function): Añadir una definición de funciónchat(message, execute_functions=False): Enviar un mensaje y obtener respuestainitialize(): Inicializar el cliente y todos los componentescleanup(): Limpiar todos los recursos
FunctionDefinition
Una clase de datos para representar definiciones de funciones.
Parámetros
name(str): Nombre de la funcióndescription(str): Descripción de la funciónparameters(dict): Esquema de parámetros de la funciónrequired(list): Lista de parámetros requeridoscallable(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).