Herramientas de búsqueda en bases de datos con parámetros
Una herramienta de búsqueda bajo demanda permitirá que el LLM busque divisas por nombre o código sin cargar la lista completa. Usa una consulta parametrizada (marcador ?) para evitar prompt injection y aplica un límite de filas para mantener las respuestas acotadas.
Este ejercicio forma parte del curso
Introducción a Model Context Protocol (MCP)
Instrucciones del ejercicio
- Define una herramienta llamada
lookup_currencies()que encuentre filas encurrenciesdondenameocodecontengaprefix(sin distinción de mayúsculas/minúsculas). - Usa una consulta SQL parametrizada para insertar
prefixen los marcadores?; usaLIMIT 50para limitar el número de filas devueltas.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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"))