Implements a FastAPI server that exposes Berghain events data as API endpoints and MCP tools for AI agents
Uses PydanticAI for agent implementation when testing the MCP server capabilities
Built on Python for server implementation, data processing, and API functionality
Enables deployment of the MCP server infrastructure to AWS using Terraform configuration files
Berghain Events API & MCP Implementation
Estructura del proyecto
Requisitos
- Python 3.10+
- uv (para gestión de dependencias y entorno virtual)
- Cuenta de AWS (para DynamoDB y App Runner)
- API Key de Firecrawl
Instalación
- Clonar este repositorio:
- Crear y activar un entorno virtual con
uv
: - Instalar dependencias con
uv
:
Proceso Detallado
1. Extracción de Datos con Firecrawl
- Configura el MCP de Firecrawl en Cursor:
Asegúrate de tener tu API Key de Firecrawl. En la configuración de MCPs de Cursor, añade:
- Ejecuta la extracción:
Usa un agente en Cursor (o una herramienta similar) para llamar al MCP de Firecrawl y pedirle que extraiga los eventos de
https://www.berghain.berlin/en/program/
. - Guarda los datos:
Los datos extraídos deben guardarse como archivos JSON en el directorio
events/
. Por ejemplo,events/berghain_events_YYYY-MM-DD.json
.
2. Carga de Datos a DynamoDB
- Crea la tabla en DynamoDB:
El script
scripts/create_table.py
se encarga de esto. Ejecútalo (ajusta los parámetros si es necesario): - Carga los datos a la tabla:
El script
scripts/load_data.py
sube los eventos desde los archivos JSON.Asegúrate de queapp/core/config.py
(importado porload_data.py
) tenga las configuraciones necesarias si no las pasas como argumentos.
3. API con FastAPI y Servidor MCP
- La lógica de la API reside en el directorio
app/
, con los endpoints definidos (e.g., enapp/api/endpoints/events.py
). - El archivo
app/main.py
está configurado para iniciar la aplicación FastAPI y el servidor FastMCP, exponiendo los endpoints de la API como tools para modelos de IA. Revisa lascustom_maps
enapp/main.py
para ver cómo se mapean las rutas GET aRouteType.TOOL
.
Despliegue en AWS
a. Dockerfile
Asegúrate de que tu Dockerfile
esté configurado correctamente para usar uv
y ejecutar app/main.py
:
b. Construir y Subir Imagen a Amazon ECR (Elastic Container Registry)
- Autentica Docker con ECR:
- Crea un repositorio en ECR (si no existe):
- Construye tu imagen Docker:
- Etiqueta tu imagen:
- Sube la imagen a ECR:Reemplaza
tu-region-aws
ytu-aws-account-id
con tus valores.
c. Desplegar Infraestructura con Terraform
- Prepara tus archivos de Terraform:
Asegúrate de tener tus archivos de configuración de Terraform (ej.
main.tf
,variables.tf
,outputs.tf
) en un directorio (p.ej.,terraform/
). Estos archivos deben definir los recursos de AWS necesarios, como el servicio de AWS App Runner que usará la imagen de ECR, y la tabla DynamoDB (si Terraform también la gestiona). Tu configuración de App Runner en Terraform deberá referenciar la imagen subida a ECR. - Navega al directorio de Terraform:
- Inicializa Terraform:
- Aplica la configuración de Terraform:Revisa el plan y confirma la aplicación. Terraform provisionará los recursos.
- Obtén la URL del servicio:
Una vez aplicado, Terraform debería mostrar las salidas definidas, incluyendo la URL del servicio App Runner. Anota esta URL (ej.
https://<id-servicio>.<region>.awsapprunner.com
).
Probar la Solución Desplegada
a. Ajustar Script de Prueba Local (mcp_local.py
)
Ajusta el archivo mcp_local.py
en la raíz de tu proyecto
Importante: Actualiza la variable mcp_server_url
en mcp_local.py
con la URL que obtuviste del output de Terraform.
b. Ejecutar Prueba
Desde la raíz de tu proyecto (o donde hayas guardado mcp_local.py
):
Esto ejecutará el agente PydanticAI, que intentará conectarse a tu MCP desplegado y realizar la consulta.
Licencia
MIT
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A server that allows AI agents to query and retrieve information about upcoming events at Berghain nightclub through a DynamoDB-backed FastAPI service.
Related MCP Servers
- AsecurityFlicenseAqualityThis server integrates with the Ticketmaster API to provide AI agents with real-time concert and event data, enabling dynamic fetching and formatting for ease of interpretation.Last updated -12Python
- AsecurityAlicenseAqualityThis server provides tools for AI assistants to interact with the Eventbrite API, allowing users to search for events, get event details, retrieve venue information, and list event categories.Last updated -46622JavaScriptMIT License
- -securityAlicense-qualityIntegrates with the Eventbrite API to provide AI-assisted event management capabilities for viewing events, tracking attendees, and generating analytics reports.Last updated -11MIT License
- -securityFlicense-qualityA powerful server that enables AI agents to interact with MySQL databases, execute SQL queries, and manage database content through a simple interface.Last updated -295JavaScript