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 SDKFastMCPutilitá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:
- Usando um callable:
async def my_function(param1: str, param2: int = 0):
"""Function description."""
return {"result": param1 + str(param2)}
client.add_function(my_function)
- 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)
- 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:
- servidores com transporte SSE:
mcp_config = {
"mcpServers": {
"server_name": {
"url": "https://server-url/mcp"
}
}
}
- 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_KEYmodel(str): Modelo a ser usado, padrão é "gemma-3-27b-it"temperature(float): Temperatura de geração, padrão é 0.7system_prompt(str, opcional): Prompt de sistema personalizadomcp_config(dict, opcional): Dicionário de configuração MCP
Métodos
add_function(function): Adicionar uma definição de funçãochat(message, execute_functions=False): Enviar uma mensagem e obter respostainitialize(): Inicializar o cliente e todos os componentescleanup(): Limpar todos os recursos
FunctionDefinition
Um dataclass para representar definições de função.
Parâmetros
name(str): Nome da funçãodescription(str): Descrição da funçãoparameters(dict): Esquema de parâmetros da funçãorequired(list): Lista de parâmetros obrigatórioscallable(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.