Berghain Events MCP Server

by alejofig
  • Linux
  • Apple

Integrations

  • 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

Berghain Events API & MCP-Implementierung

Projektstruktur

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

Anforderungen

  • Python 3.10+
  • uv (für Abhängigkeitsmanagement und virtuelle Umgebung)
  • AWS-Konto (für DynamoDB und App Runner)
  • Firecrawl-API-Schlüssel

Einrichtung

  1. Klonen Sie dieses Repository:
    git clone <repository-url> cd berghain-api
  2. Erstellen und aktivieren Sie eine virtuelle Umgebung mit uv :
    uv venv source .venv/bin/activate # En Linux/macOS # .venv\\Scripts\\activate # En Windows
  3. Installieren Sie Abhängigkeiten mit uv :
    uv pip install -r requirements.txt

Detaillierter Prozess

1. Datenextraktion mit Firecrawl

  • Firecrawl MCP auf Cursor einstellen: Stellen Sie sicher, dass Sie Ihren Firecrawl-API-Schlüssel haben. Fügen Sie in der Cursor-MCP-Konfiguration Folgendes hinzu:
    "firecrawl-mcp": { "command": "npx", "args": [ "-y", "firecrawl-mcp" ], "env": { "FIRECRAWL_API_KEY": "fc-YOUR_FIRECRAWL_API_KEY" } }
  • Führen Sie die Extraktion aus: Verwenden Sie einen Agenten in Cursor (oder einem ähnlichen Tool), um das Firecrawl MCP aufzurufen und es aufzufordern, Ereignisse von https://www.berghain.berlin/en/program/ zu extrahieren.
  • Daten speichern: Die extrahierten Daten sollten als JSON-Dateien im Verzeichnis events/ gespeichert werden. Beispiel: events/berghain_events_YYYY-MM-DD.json .

2. Daten in DynamoDB laden

  • Erstellen Sie die Tabelle in DynamoDB: Das Skript scripts/create_table.py kümmert sich darum. Führen Sie es aus (passen Sie die Parameter gegebenenfalls an):
    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
  • Daten in die Tabelle laden: Das Skript scripts/load_data.py lädt Ereignisse aus JSON-Dateien.
    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
    Stellen Sie sicher, dass app/core/config.py (importiert von load_data.py ) über die erforderlichen Konfigurationen verfügt, wenn Sie diese nicht als Argumente übergeben.

3. API mit FastAPI und MCP Server

  • Die API-Logik befindet sich im Verzeichnis app/ , wobei die Endpunkte definiert sind (z. B. in app/api/endpoints/events.py ).
  • Die Datei app/main.py ist so konfiguriert, dass die FastAPI-Anwendung und der FastMCP-Server gestartet werden und die API-Endpunkte als Tools für KI-Modelle verfügbar gemacht werden. Überprüfen Sie die custom_maps in app/main.py um zu sehen, wie GET-Routen RouteType.TOOL zugeordnet werden.

Bereitstellung auf AWS

Zu. Dockerfile

Stellen Sie sicher, dass Ihr Dockerfile richtig für die Verwendung uv konfiguriert ist und führen Sie app/main.py aus:

B. Erstellen und Hochladen eines Images in Amazon ECR (Elastic Container Registry)

  1. Docker mit ECR authentifizieren:
    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. Erstellen Sie ein Repository in ECR (falls es nicht vorhanden ist):
    aws ecr create-repository --repository-name berghain-mcp-api --region tu-region-aws
  3. Erstellen Sie Ihr Docker-Image:
    docker build -t berghain-mcp-api .
  4. Markieren Sie Ihr Bild:
    docker tag berghain-mcp-api:latest tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest
  5. Laden Sie das Bild zu ECR hoch:
    docker push tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest
    Ersetzen Sie tu-region-aws und tu-aws-account-id durch Ihre Werte.

C. Bereitstellen der Infrastruktur mit Terraform

  1. Bereiten Sie Ihre Terraform-Dateien vor: Stellen Sie sicher, dass Sie Ihre Terraform-Konfigurationsdateien (z. B. main.tf , variables.tf , outputs.tf ) in einem Verzeichnis (z. B. terraform/ ) haben. Diese Dateien sollten die erforderlichen AWS-Ressourcen definieren, z. B. den AWS App Runner-Dienst, den das ECR-Image verwenden wird, und die DynamoDB-Tabelle (sofern sie auch von Terraform verwaltet wird). Ihre App Runner-Konfiguration in Terraform muss auf das in ECR hochgeladene Bild verweisen.
  2. Navigieren Sie zum Terraform-Verzeichnis:
    cd terraform
  3. Terraform initialisieren:
    terraform init
  4. Wenden Sie die Terraform-Konfiguration an:
    terraform apply
    Überprüfen Sie den Plan und bestätigen Sie die Anwendung. Terraform stellt die Ressourcen bereit.
  5. Holen Sie sich die Service-URL: Nach der Anwendung sollte Terraform die definierten Ausgaben anzeigen, einschließlich der App Runner-Service-URL. Notieren Sie sich diese URL (z. B. https://<id-servicio>.<region>.awsapprunner.com ).

Testen der bereitgestellten Lösung

Zu. Lokales Testskript anpassen ( mcp_local.py )

Legen Sie die Datei mcp_local.py im Stammverzeichnis Ihres Projekts fest

Wichtig: Aktualisieren Sie die Variable mcp_server_url in mcp_local.py mit der URL, die Sie aus der Terraform-Ausgabe erhalten haben.

B. Test ausführen

Vom Stammverzeichnis Ihres Projekts (oder wo auch immer Sie mcp_local.py gespeichert haben):

uv run python mcp_local.py

Dadurch wird der PydanticAI-Agent ausgeführt, der versucht, eine Verbindung zu Ihrem bereitgestellten MCP herzustellen und die Abfrage auszuführen.

Lizenz

MIT

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
    Python
  • A
    security
    A
    license
    A
    quality
    An unofficial server that allows AI assistants to access Fathom Analytics data, enabling users to retrieve account information, site statistics, events, aggregated reports, and real-time visitor tracking.
    Last updated -
    5
    8
    1
    TypeScript
    MIT License
  • 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.
    Last updated -
    4
    2
    1
    JavaScript
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    A Server-Sent Events implementation using FastAPI framework that integrates Model Context Protocol (MCP), allowing AI models to access external tools and data sources like weather information.
    Last updated -
    9
    Python
    MIT License

View all related MCP servers

ID: rhukrg7s0i