Berghain 이벤트 API 및 MCP 구현
프로젝트 구조
지엑스피1
Related MCP server: Eventbrite MCP Server
요구 사항
파이썬 3.10+
uv(종속성 관리 및 가상 환경용)
AWS 계정(DynamoDB 및 App Runner용)
Firecrawl API 키
시설
이 저장소를 복제하세요:
git clone <repository-url> cd berghain-apiuv사용하여 가상 환경을 만들고 활성화합니다.uv venv source .venv/bin/activate # En Linux/macOS # .venv\\Scripts\\activate # En Windowsuv로 종속성을 설치합니다: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.py의custom_maps확인하여 GET 경로가RouteType.TOOL에 어떻게 매핑되는지 확인하세요.
AWS에 배포
에게. Dockerfile
Dockerfile 이 uv 사용하도록 올바르게 구성되었고 app/main.py 실행했는지 확인하세요.
비. Amazon ECR(Elastic Container Registry)에 이미지 빌드 및 업로드
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.comECR에 저장소를 만듭니다(존재하지 않는 경우):
aws ecr create-repository --repository-name berghain-mcp-api --region tu-region-awsDocker 이미지를 빌드하세요.
docker build -t berghain-mcp-api .이미지에 태그를 지정하세요:
docker tag berghain-mcp-api:latest tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latestECR에 이미지 업로드:
docker push tu-aws-account-id.dkr.ecr.tu-region-aws.amazonaws.com/berghain-mcp-api:latesttu-region-aws과tu-aws-account-id원하는 값으로 바꾸세요.
기음. Terraform을 사용하여 인프라 배포
Terraform 파일을 준비합니다. Terraform 구성 파일(예:
main.tf,variables.tf,outputs.tf)이 디렉토리(예:terraform/)에 있는지 확인합니다. 이러한 파일은 ECR 이미지가 사용할 AWS App Runner 서비스, DynamoDB 테이블(Terraform에서 관리하는 경우) 등 필요한 AWS 리소스를 정의해야 합니다. Terraform의 App Runner 구성은 ECR에 업로드된 이미지를 참조해야 합니다.Terraform 디렉토리로 이동합니다.
cd terraformTerraform 초기화:
terraform initTerraform 구성을 적용합니다.
terraform apply계획을 검토하고 신청을 확인하세요. Terraform이 리소스를 프로비저닝합니다.
서비스 URL 가져오기: 적용되면 Terraform은 App Runner 서비스 URL을 포함한 정의된 출력을 표시해야 합니다. 이 URL을 기록해 두세요(예
https://<id-servicio>.<region>.awsapprunner.com).
배포된 솔루션 테스트
에게. 로컬 테스트 스크립트 조정( mcp_local.py )
mcp_local.py 파일을 프로젝트의 루트로 설정하세요.
중요: mcp_local.py 의 mcp_server_url 변수를 Terraform 출력에서 얻은 URL로 업데이트합니다.
비. 테스트 실행
프로젝트의 루트(또는 mcp_local.py 저장한 곳)에서:
이렇게 하면 PydanticAI 에이전트가 실행되어 배포된 MCP에 연결하고 쿼리를 수행합니다.
특허
MIT