Fastapi-MCP es una herramienta de configuración cero que expone sin problemas los puntos finales de Fastapi como Protocolo de contexto modelo (MCP) herramientas. Le permite montar un servidor MCP directamente dentro de su aplicación Fastapi, haciendo que la integración sea fácil.
En este tutorial, exploraremos cómo usar FastAPI-MCP convirtiendo un punto final de Fastapi, que obtiene alertas para los Parques Nacionales de los Estados Unidos utilizando la API del Servicio de Parques Nacionales, en un servidor compatible con MCP. Estaremos trabajando en IDE cursor para caminar por esta configuración paso a paso.
API del Servicio de Parques Nacionales
Para usar la API del Servicio de Parques Nacionales, puede solicitar una clave API visitando este enlace y llenando un formulario corto. Una vez enviado, la clave API se enviará a su correo electrónico.
Asegúrese de mantener esta clave accesible: la usaremos en breve.
Instalación de cursor IDE
Puedes descargar el IDE cursor de cursor.com. Está construido específicamente para el desarrollo asistido por AI. Es gratis descargar y viene con un Prueba gratuita de 14 días.
Dependencias de Python
Ejecute el siguiente comando para descargar las bibliotecas requeridas:
pip install fastapi uvicorn httpx python-dotenv pydantic fastapi-mcp mcp-proxy
Crearemos una aplicación Simple Fastapi que utiliza la API del Servicio de Parques Nacionales para dar alertas relacionadas con los Parques Nacionales de EE. UU. Más tarde convertiremos esta aplicación en un servidor MCP.
Primero cree un archivo .env y almacene su clave API
NPS_API_KEY=<YOUR_API_KEY>
Reemplace
from fastapi import FastAPI, HTTPException, Query
from typing import List, Optional
import httpx
import os
from dotenv import load_dotenv
from fastapi_mcp import FastApiMCP
# Load environment variables from .env file
load_dotenv()
app = FastAPI(title="National Park Alerts API")
# Get API key from environment variable
NPS_API_KEY = os.getenv("NPS_API_KEY")
if not NPS_API_KEY:
raise ValueError("NPS_API_KEY environment variable is not set")
@app.get("/alerts")
async def get_alerts(
parkCode: Optional[str] = Query(None, description="Park code (e.g., 'yell' for Yellowstone)"),
stateCode: Optional[str] = Query(None, description="State code (e.g., 'wy' for Wyoming)"),
q: Optional[str] = Query(None, description="Search term")
):
"""
Retrieve park alerts from the National Park Service API
"""
url = "https://developer.nps.gov/api/v1/alerts"
params = {
"api_key": NPS_API_KEY
}
# Add optional parameters if provided
if parkCode:
params["parkCode"] = parkCode
if stateCode:
params["stateCode"] = stateCode
if q:
params["q"] = q
try:
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
response.raise_for_status()
return response.json()
except httpx.HTTPStatusError as e:
raise HTTPException(
status_code=e.response.status_code,
detail=f"NPS API error: {e.response.text}"
)
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"Internal server error: {str(e)}"
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
Para probar la aplicación, ejecute el siguiente comando en el terminal:
Una vez que el servidor se ejecute, abra su navegador y vaya a: http: // localhost: 8000/documentos. Esto abrirá una interfaz donde podemos probar nuestro punto final API
- Haga clic en el “Pruébalo” botón.
- En el campo de parámetros Park_Code, ingrese “CA” (para California Parks).
- Hacer clic “Ejecutar”.
Debería recibir una respuesta de 200 OK junto con una carga útil JSON que contiene información de alerta para los parques nacionales en California.
Para hacer esto, agregue el siguiente código justo antes El if __name__ == “__main__”: bloquee en su archivo app.py:
mcp = FastApiMCP(
app,
# Optional parameters
name="National Park Alerts API",
description="API for retrieving alerts from National Parks",
base_url="http://localhost:8000",
)
mcp.mount()
.
Alternativamente, puede copiar el siguiente código y reemplazar su app.py con lo mismo:
from fastapi import FastAPI, HTTPException, Query
from typing import List, Optional
import httpx
import os
from dotenv import load_dotenv
from fastapi_mcp import FastApiMCP
# Load environment variables from .env file
load_dotenv()
app = FastAPI(title="National Park Alerts API")
# Get API key from environment variable
NPS_API_KEY = os.getenv("NPS_API_KEY")
if not NPS_API_KEY:
raise ValueError("NPS_API_KEY environment variable is not set")
@app.get("/alerts")
async def get_alerts(
parkCode: Optional[str] = Query(None, description="Park code (e.g., 'yell' for Yellowstone)"),
stateCode: Optional[str] = Query(None, description="State code (e.g., 'wy' for Wyoming)"),
q: Optional[str] = Query(None, description="Search term")
):
"""
Retrieve park alerts from the National Park Service API
"""
url = "https://developer.nps.gov/api/v1/alerts"
params = {
"api_key": NPS_API_KEY
}
# Add optional parameters if provided
if parkCode:
params["parkCode"] = parkCode
if stateCode:
params["stateCode"] = stateCode
if q:
params["q"] = q
try:
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
response.raise_for_status()
return response.json()
except httpx.HTTPStatusError as e:
raise HTTPException(
status_code=e.response.status_code,
detail=f"NPS API error: {e.response.text}"
)
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"Internal server error: {str(e)}"
)
mcp = FastApiMCP(
app,
# Optional parameters
name="National Park Alerts API",
description="API for retrieving alerts from National Parks",
base_url="http://localhost:8000",
)
mcp.mount()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
A continuación, deberá registrar su servidor Fastapi MCP en el cursor.
- Abra el cursor y navegue a:
Archivo> Preferencias> Configuración del cursor> MCP> Agregar un nuevo servidor MCP global - Esto abrirá el archivo de configuración MCP.JSON.
- Dentro de ese archivo, agregue la siguiente entrada y guárdela:
{
"mcpServers": {
"National Park Service": {
"command": "mcp-proxy",
"args": ["http://127.0.0.1:8000/mcp"]
}
}
}
Ahora ejecute la aplicación usando el siguiente comando:
Una vez que la aplicación se ejecute, navegue a Archivo> Preferencias> Configuración del cursor> MCP. Ahora debería ver su servidor recién agregado en la lista y en ejecución en la sección MCP.
Ahora puede probar el servidor ingresando un mensaje en el chat. Utilizará nuestro servidor MCP para obtener y devolver el resultado apropiado.
Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 90k+ ml de subreddit.
