Votre premier serveur MCP
Passez à la pratique avec votre premier serveur MCP! Nous avons tout le code pour vous ici, que nous expliquerons dans la prochaine vidéo, mais jetez d'abord un coup d'œil au déroulement du code :
- Une instance de serveur MCP est définie avec
FastMCP() - Une fonction d'outil (
convert_currency()) est écrite pour effectuer une action; dans ce cas-ci, récupérer des informations de devises à partir de l'API Frankfurter. - Cette fonction est convertie en outil MCP à l'aide du décorateur
@mcp.tool().
Cette activité fait partie du cours
Introduction au Model Context Protocol (MCP)
Instructions de l’exercice
- Parcourez le code fourni pour voir comment une fonction est transformée en outil pour un serveur MCP.
- À la ligne 43, testez l'outil MCP avec un montant et les devises de votre choix pour la conversion (de et vers).
Remarque : vous devrez utiliser les codes de devises officiels, comme GBP pour la livre sterling britannique.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create an MCP server instance
mcp = FastMCP("Currency Converter")
@mcp.tool()
def convert_currency(amount: float, from_currency: str, to_currency: str) -> str:
"""
Convert an amount from one currency to another using current exchange rates.
Args:
amount: The amount to convert
from_currency: Source currency code (e.g., 'USD', 'EUR', 'GBP')
to_currency: Target currency code (e.g., 'USD', 'EUR', 'GBP')
Returns:
A string with the conversion result and exchange rate
"""
# API endpoint for Frankfurter
url = f"https://api.frankfurter.dev/v1/latest?base={from_currency}&symbols={to_currency}"
try:
# Make the API request
response = requests.get(url)
response.raise_for_status()
# Parse the response
data = response.json()
# Get the exchange rate
rate = data['rates'].get(to_currency)
if rate is None:
return f"Could not find exchange rate for {from_currency} to {to_currency}"
# Calculate the converted amount
converted_amount = amount * rate
return f"{amount} {from_currency} = {converted_amount:.2f} {to_currency} (Rate: {rate})"
except requests.exceptions.RequestException as e:
return f"Error converting currency: {str(e)}"
print("Testing Currency Converter:")
result = convert_currency(amount=100, from_currency="USD", to_currency="EUR")
print(result)