Skip to main content
Glama

Berghain Events MCP Server

by alejofig

Berghain Events API & MCP Implementation

Estructura del proyecto

berghain-api/ ├── app/ # Aplicación principal FastAPI │ ├── api/ # Rutas de la API │ ├── core/ # Configuración y componentes centrales │ ├── db/ # Capa de acceso a datos (DynamoDB) │ └── main.py # Punto de entrada de la aplicación y FastMCP server ├── scripts/ # Scripts para creación de tabla y carga de datos en DynamoDB │ ├── create_table.py │ └── load_data.py ├── events/ # Directorio para los JSON extraídos de Firecrawl ├── Dockerfile # Dockerfile para despliegue ├── requirements.txt # Dependencias del proyecto (para uv) └── README.md # Este archivo

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

  1. Clonar este repositorio:

    git clone <repository-url> cd berghain-api
  2. Crear y activar un entorno virtual con uv:

    uv venv source .venv/bin/activate # En Linux/macOS # .venv\\Scripts\\activate # En Windows
  3. Instalar dependencias con uv:

    uv pip install -r requirements.txt

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:

    "firecrawl-mcp": { "command": "npx", "args": [ "-y", "firecrawl-mcp" ], "env": { "FIRECRAWL_API_KEY": "fc-YOUR_FIRECRAWL_API_KEY" } }
  • 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):

    uv run python scripts/create_table.py --table berghain_events --region tu-region-aws # Para desarrollo local con DynamoDB Local (ej. docker run -p 8000:8000 amazon/dynamodb-local): # uv run python scripts/create_table.py --table berghain_events --region localhost --endpoint-url http://localhost:8000
  • Carga los datos a la tabla: El script scripts/load_data.py sube los eventos desde los archivos JSON.

    uv run python scripts/load_data.py --table berghain_events --region tu-region-aws --path events # Para desarrollo local: # uv run python scripts/load_data.py --table berghain_events --region localhost --endpoint-url http://localhost:8000 --path events

    Asegúrate de que app/core/config.py (importado por load_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., en app/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 las custom_maps en app/main.py para ver cómo se mapean las rutas GET a RouteType.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)

  1. Autentica Docker con ECR:

    aws ecr get-login-password --region tu-region-aws | docker login --username AWS --password-stdin tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com
  2. Crea un repositorio en ECR (si no existe):

    aws ecr create-repository --repository-name berghain-mcp-api --region tu-region-aws
  3. Construye tu imagen Docker:

    docker build -t berghain-mcp-api .
  4. Etiqueta tu imagen:

    docker tag berghain-mcp-api:latest tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest
  5. Sube la imagen a ECR:

    docker push tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest

    Reemplaza tu-region-aws y tu-aws-account-id con tus valores.

c. Desplegar Infraestructura con Terraform

  1. 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.

  2. Navega al directorio de Terraform:

    cd terraform
  3. Inicializa Terraform:

    terraform init
  4. Aplica la configuración de Terraform:

    terraform apply

    Revisa el plan y confirma la aplicación. Terraform provisionará los recursos.

  5. 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):

uv run python mcp_local.py

Esto ejecutará el agente PydanticAI, que intentará conectarse a tu MCP desplegado y realizar la consulta.

Licencia

MIT

-
security - not tested
F
license - not found
-
quality - not tested

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.

  1. Estructura del proyecto
    1. Requisitos
      1. Instalación
        1. Proceso Detallado
          1. 1. Extracción de Datos con Firecrawl
          2. 2. Carga de Datos a DynamoDB
          3. 3. API con FastAPI y Servidor MCP
        2. Despliegue en AWS
          1. a. Dockerfile
          2. b. Construir y Subir Imagen a Amazon ECR (Elastic Container Registry)
          3. c. Desplegar Infraestructura con Terraform
        3. Probar la Solución Desplegada
          1. a. Ajustar Script de Prueba Local (mcp_local.py)
          2. b. Ejecutar Prueba
        4. Licencia

          Related MCP Servers

          • A
            security
            F
            license
            A
            quality
            This 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 -
            1
            2
          • A
            security
            A
            license
            A
            quality
            This 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.
          • -
            security
            A
            license
            -
            quality
            Integrates with the Eventbrite API to provide AI-assisted event management capabilities for viewing events, tracking attendees, and generating analytics reports.
            Last updated -
            0
            1
            MIT License
            • Apple
          • -
            security
            A
            license
            -
            quality
            A powerful server that enables AI agents to interact with MySQL databases, execute SQL queries, and manage database content through a simple interface.
            Last updated -
            439
            6
            MIT License
            • Apple

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/alejofig/mcp-berghain'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server