Il tuo primo server MCP
È il momento di mettere le mani in pasta con il tuo primo server MCP! Qui ti forniamo già tutto il codice, che spiegheremo nel prossimo video, ma intanto dai un'occhiata al flusso del codice:
- Si definisce un'istanza di server MCP con
FastMCP() - Si scrive una funzione tool (
convert_currency()) per eseguire un'azione; in questo caso, recuperare informazioni sulle valute dalla Frankfurter API. - Questa funzione viene trasformata in un tool MCP usando il decorator
@mcp.tool().
Questo esercizio fa parte del corso
Introduzione al Model Context Protocol (MCP)
Istruzioni dell'esercizio
- Dai un'occhiata al codice fornito per vedere come una funzione viene convertita in un tool per un server MCP.
- Alla riga 43, testa il tool MCP con un importo e le valute di tua scelta per la conversione (da e verso).
Nota: dovrai usare i codici valuta ufficiali, come GBP per la sterlina britannica.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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)