Strumenti di ricerca nel database con parametri
Uno strumento di ricerca on-demand permetterà all'LLM di cercare valute per nome o codice senza caricare l'intera lista. Usa una query parametrizzata (segnaposto ?) per evitare la prompt injection e applica un limite di righe così che le risposte restino contenute.
Questo esercizio fa parte del corso
Introduzione al Model Context Protocol (MCP)
Istruzioni dell'esercizio
- Definisci uno strumento chiamato
lookup_currencies()che trovi le righe incurrenciesin cuinameocodecontieneprefix(senza distinzione tra maiuscole e minuscole). - Usa una query SQL parametrizzata per inserire
prefixnei segnaposto?; usaLIMIT 50per limitare il numero di righe restituite.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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"))