Ferramentas de consulta ao banco com parâmetros
Uma ferramenta de consulta sob demanda vai permitir que o LLM pesquise moedas por nome ou código sem carregar a lista completa. Use uma consulta parametrizada (placeholder ?) para evitar prompt injection e aplique um limite de linhas para manter as respostas controladas.
Este exercicio faz parte do curso
Introdução ao Model Context Protocol (MCP)
Instruções do exercicio
- Defina uma ferramenta chamada
lookup_currencies()que encontre linhas emcurrenciesondenameoucodecontenhaprefix(sem diferenciar maiúsculas de minúsculas). - Use uma consulta SQL parametrizada para inserir
prefixnos placeholders?; useLIMIT 50para limitar o número de linhas retornadas.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# Add lookup_currencies(prefix): find rows where name or code contains prefix
@mcp.____()
def ____(____: str) -> str:
"""Find currencies whose code or name contains the given prefix."""
try:
# Use parameterized query and LIMIT 50
cursor = conn.execute(
"SELECT code, name FROM currencies WHERE name LIKE ? OR code LIKE ? LIMIT ____",
(f"%{____}%", f"%{____}%")
)
rows = cursor.fetchall()
return "\n".join(f"{row['code']} - {row['name']}" for row in rows)
except sqlite3.Error as e:
return f"Database error: {e}"
print(lookup_currencies("Euro"))