Skip to main content
Glama
alejofig

Berghain Events MCP Server

by alejofig

Berghain 이벤트 API 및 MCP 구현

프로젝트 구조

지엑스피1

Related MCP server: Eventbrite MCP Server

요구 사항

  • 파이썬 3.10+

  • uv(종속성 관리 및 가상 환경용)

  • AWS 계정(DynamoDB 및 App Runner용)

  • Firecrawl API 키

시설

  1. 이 저장소를 복제하세요:

    git clone <repository-url> cd berghain-api
  2. uv 사용하여 가상 환경을 만들고 활성화합니다.

    uv venv source .venv/bin/activate # En Linux/macOS # .venv\\Scripts\\activate # En Windows
  3. uv 로 종속성을 설치합니다:

    uv pip install -r requirements.txt

세부 프로세스

1. Firecrawl을 이용한 데이터 추출

  • Firecrawl MCP를 커서로 설정: Firecrawl API 키가 있는지 확인하세요. 커서 MCP 구성에서 다음을 추가합니다.

    "firecrawl-mcp": { "command": "npx", "args": [ "-y", "firecrawl-mcp" ], "env": { "FIRECRAWL_API_KEY": "fc-YOUR_FIRECRAWL_API_KEY" } }
  • 추출을 실행합니다. Cursor의 에이전트(또는 비슷한 도구)를 사용하여 Firecrawl MCP를 호출하고 https://www.berghain.berlin/en/program/ 에서 이벤트를 추출하도록 요청합니다.

  • 데이터 저장: 추출된 데이터는 events/ 디렉토리에 JSON 파일로 저장해야 합니다. 예를 들어, events/berghain_events_YYYY-MM-DD.json .

2. DynamoDB에 데이터 로드

  • DynamoDB에 테이블을 생성합니다. scripts/create_table.py 스크립트가 이 작업을 처리합니다. 실행합니다(필요한 경우 매개변수를 조정합니다):

    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
  • 테이블에 데이터 로드: scripts/load_data.py 스크립트는 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

    인수로 전달하지 않는 경우, load_data.py 에서 가져온 app/core/config.py 에 필요한 구성이 있는지 확인하세요.

3. FastAPI 및 MCP 서버를 사용한 API

  • API 로직은 app/ 디렉토리에 있으며 엔드포인트는 정의되어 있습니다(예: app/api/endpoints/events.py ).

  • app/main.py 파일은 FastAPI 애플리케이션과 FastMCP 서버를 시작하도록 구성되어 API 엔드포인트를 AI 모델을 위한 도구로 노출합니다. app/main.pycustom_maps 확인하여 GET 경로가 RouteType.TOOL 에 어떻게 매핑되는지 확인하세요.

AWS에 배포

에게. Dockerfile

Dockerfileuv 사용하도록 올바르게 구성되었고 app/main.py 실행했는지 확인하세요.

비. Amazon ECR(Elastic Container Registry)에 이미지 빌드 및 업로드

  1. ECR로 Docker 인증:

    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. ECR에 저장소를 만듭니다(존재하지 않는 경우):

    aws ecr create-repository --repository-name berghain-mcp-api --region tu-region-aws
  3. Docker 이미지를 빌드하세요.

    docker build -t berghain-mcp-api .
  4. 이미지에 태그를 지정하세요:

    docker tag berghain-mcp-api:latest tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latest
  5. ECR에 이미지 업로드:

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

    tu-region-awstu-aws-account-id 원하는 값으로 바꾸세요.

기음. Terraform을 사용하여 인프라 배포

  1. Terraform 파일을 준비합니다. Terraform 구성 파일(예: main.tf , variables.tf , outputs.tf )이 디렉토리(예: terraform/ )에 있는지 확인합니다. 이러한 파일은 ECR 이미지가 사용할 AWS App Runner 서비스, DynamoDB 테이블(Terraform에서 관리하는 경우) 등 필요한 AWS 리소스를 정의해야 합니다. Terraform의 App Runner 구성은 ECR에 업로드된 이미지를 참조해야 합니다.

  2. Terraform 디렉토리로 이동합니다.

    cd terraform
  3. Terraform 초기화:

    terraform init
  4. Terraform 구성을 적용합니다.

    terraform apply

    계획을 검토하고 신청을 확인하세요. Terraform이 리소스를 프로비저닝합니다.

  5. 서비스 URL 가져오기: 적용되면 Terraform은 App Runner 서비스 URL을 포함한 정의된 출력을 표시해야 합니다. 이 URL을 기록해 두세요(예 https://<id-servicio>.<region>.awsapprunner.com ).

배포된 솔루션 테스트

에게. 로컬 테스트 스크립트 조정( mcp_local.py )

mcp_local.py 파일을 프로젝트의 루트로 설정하세요.

중요: mcp_local.pymcp_server_url 변수를 Terraform 출력에서 얻은 URL로 업데이트합니다.

비. 테스트 실행

프로젝트의 루트(또는 mcp_local.py 저장한 곳)에서:

uv run python mcp_local.py

이렇게 하면 PydanticAI 에이전트가 실행되어 배포된 MCP에 연결하고 쿼리를 수행합니다.

특허

MIT

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

Latest Blog Posts

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