
mcp berghain
一个基于FastAPI的Berghain活动数据提取、存储和查询工具,支持DynamoDB集成。
Repository Info
About This Server
一个基于FastAPI的Berghain活动数据提取、存储和查询工具,支持DynamoDB集成。
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
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
- Clonar este repositorio:
git clone <repository-url> cd berghain-api - Crear y activar un entorno virtual con
uv:uv venv source .venv/bin/activate # En Linux/macOS # .venv\\Scripts\\activate # En Windows - 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.pyse 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.pysube los eventos desde los archivos JSON.
Asegúrate de queuv 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 eventsapp/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.pyestá 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_mapsenapp/main.pypara 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:
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 - Crea un repositorio en ECR (si no existe):
aws ecr create-repository --repository-name berghain-mcp-api --region tu-region-aws - Construye tu imagen Docker:
docker build -t berghain-mcp-api . - Etiqueta tu imagen:
docker tag berghain-mcp-api:latest tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest - Sube la imagen a ECR:
Reemplazadocker push tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latesttu-region-awsytu-aws-account-idcon 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:
cd terraform - Inicializa Terraform:
terraform init - Aplica la configuración de Terraform:
Revisa el plan y confirma la aplicación. Terraform provisionará los recursos.terraform apply - 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
Quick Start
Clone the repository
git clone https://github.com/alejofig/mcp-berghainInstall dependencies
cd mcp-berghain
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.