Gemma MCP Client

Um cliente para o modelo Gemma-3 do Google que permite chamadas de função através do MCP.

Documentação

Gemma MCP Client

Um pacote Python que combina o modelo de linguagem Gemma do Google com integração de servidor MCP (Model Content Protocol), permitindo poderosas capacidades de chamada de funções tanto em funções locais quanto em ferramentas MCP remotas.

Recursos

  • Integração perfeita com o modelo de linguagem Gemma do Google
  • Suporte para funções Python locais e ferramentas MCP remotas
  • Descoberta e registro automático de ferramentas a partir de servidores MCP
  • Sintaxe de chamada de função no estilo Python
  • Gerenciamento adequado de recursos com context managers assíncronos
  • Suporte a múltiplos servidores MCP
  • Testes fáceis através do suporte a servidor de teste

Instalação

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

Requisitos

  • Python 3.10+
  • google-genai: Google Generative AI Python SDK
  • FastMCP utilitários 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)

Adicionando Funções Locais

Você pode adicionar funções locais de três maneiras:

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

client.add_function(my_function)
  1. Usando um dicionário:
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 um 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)

Configuração do Servidor MCP

A configuração MCP suporta vários tipos de servidor:

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

Testes

O pacote inclui suporte para testes com servidores MCP em memória:

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)

Referência da API

GemmaMCPClient

A classe principal do cliente que lida tanto com interações do modelo Gemma quanto com a integração de ferramentas MCP.

Parâmetros

  • api_key (str, opcional): chave da API Gemini. Se não for fornecida, procurará a variável de ambiente GEMINI_API_KEY
  • model (str): Modelo a ser usado, padrão é "gemma-3-27b-it"
  • temperature (float): Temperatura de geração, padrão é 0.7
  • system_prompt (str, opcional): Prompt de sistema personalizado
  • mcp_config (dict, opcional): Dicionário de configuração MCP

Métodos

  • add_function(function): Adicionar uma definição de função
  • chat(message, execute_functions=False): Enviar uma mensagem e obter resposta
  • initialize(): Inicializar o cliente e todos os componentes
  • cleanup(): Limpar todos os recursos

FunctionDefinition

Um dataclass para representar definições de função.

Parâmetros

  • name (str): Nome da função
  • description (str): Descrição da função
  • parameters (dict): Esquema de parâmetros da função
  • required (list): Lista de parâmetros obrigatórios
  • callable (callable, opcional): A função callable real

Licença

Licença MIT

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.