Bases de données comme ressources
Il est temps de prendre ces informations de base de données et de les exposer comme une ressource dans le serveur MCP. Cela pourra ensuite servir à vérifier que le LLM demande des codes de devises pris en charge, ou même dans l'interface pour proposer les codes de devises sous forme de menu déroulant ou de saisie semi-automatique.
La base de données est toujours disponible sous le nom currencies.db, et le code pour instancier un serveur vous a été fourni.
Cet exercice fait partie du cours
<cours>Introduction au Model Context Protocol (MCP)</cours>Instructions de l’exercice
- Établissez une connexion à la base de données (
currencies.db). - Créez une nouvelle ressource de serveur MCP pour la connexion à la base de données.
- Exécutez la requête afin que la fonction
get_currencies()renvoie le contenu de la base de données.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Currency Converter")
# Connect to the database on startup
conn = sqlite3.____("____")
conn.row_factory = sqlite3.Row
# Create an MCP resource
@mcp.____("db://currencies")
def get_currencies() -> str:
"""
Get the list of currency names published by the European Central Bank for currency conversion.
Returns:
One line per currency (code - name), from the database.
"""
try:
# Query the database
cursor = conn.____("SELECT code, name FROM currencies")
rows = cursor.fetchall()
return "\n".join(f"{row['code']} - {row['name']}" for row in rows)
except sqlite3.Error as e: return f"Error: {e}"
result = get_currencies()
print(result[:200] + "..." if len(result) > 200 else result)