Skip to main content
Glama
prmichaelsen

Eventbrite MCP Server

by prmichaelsen

Eventbrite MCP Server

Multi-tenant Eventbrite MCP server with Firebase authentication, wrapping @prmichaelsen/eventbrite-mcp.

Overview

This server provides a multi-tenant Model Context Protocol (MCP) interface to the Eventbrite API. It uses:

  • Firebase Authentication for user identity verification

  • Platform API for secure credential management

  • @prmichaelsen/mcp-auth for authentication wrapping

  • @prmichaelsen/eventbrite-mcp as the base MCP server

Architecture

Client (Firebase JWT) ↓ Firebase Auth Provider (validates JWT → userId) ↓ Platform Token Resolver (userId → Eventbrite token via platform) ↓ Eventbrite MCP Server (executes tools) ↓ Eventbrite API

Prerequisites

  • Node.js 20+

  • Firebase project with authentication enabled

  • Platform API that implements the credentials endpoint

  • Eventbrite OAuth tokens stored in your platform

Installation

npm install

Configuration

Copy .env.example to .env and configure:

# Firebase (for JWT validation) FIREBASE_PROJECT_ID=your-firebase-project-id # Platform API (for token resolution) PLATFORM_URL=https://your-platform.com PLATFORM_SERVICE_TOKEN=your-service-token # Server PORT=8080 NODE_ENV=development LOG_LEVEL=info

Environment Variables

Variable

Required

Description

FIREBASE_PROJECT_ID

Yes

Firebase project ID for JWT validation

PLATFORM_URL

Yes

Base URL of your platform API

PLATFORM_SERVICE_TOKEN

Yes

Service token for platform API authentication

PORT

No

Server port (default: 8080)

NODE_ENV

No

Environment (development/production)

LOG_LEVEL

No

Logging level (default: info)

Development

# Install dependencies npm install # Run in development mode with hot reload npm run dev # Build TypeScript npm run build # Run production build npm start

Docker

Build

docker build -t eventbrite-mcp-server .

Run

docker run -p 8080:8080 \ -e FIREBASE_PROJECT_ID=your-project \ -e PLATFORM_URL=https://your-platform.com \ -e PLATFORM_SERVICE_TOKEN=your-token \ eventbrite-mcp-server

Deployment

Google Cloud Run

# Build and push to GCR docker build -t gcr.io/YOUR_PROJECT/eventbrite-mcp-server:latest . docker push gcr.io/YOUR_PROJECT/eventbrite-mcp-server:latest # Generate service token SERVICE_TOKEN=$(node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))") # Create secret echo -n "$SERVICE_TOKEN" | gcloud secrets create platform-service-token --data-file=- # Deploy gcloud run deploy eventbrite-mcp-server \ --image gcr.io/YOUR_PROJECT/eventbrite-mcp-server:latest \ --region us-central1 \ --allow-unauthenticated \ --set-env-vars="FIREBASE_PROJECT_ID=your-project,PLATFORM_URL=https://your-platform.com,NODE_ENV=production" \ --update-secrets=PLATFORM_SERVICE_TOKEN=platform-service-token:latest \ --min-instances=0 \ --max-instances=10 \ --memory=512Mi \ --cpu=1

API Endpoints

Health Check

GET /mcp/health

MCP Message Endpoint

POST /mcp/message Authorization: Bearer <firebase-jwt> Content-Type: application/json { "jsonrpc": "2.0", "method": "tools/list", "id": 1 }

Testing

Local Testing

# Start server npm start # Test health endpoint curl http://localhost:8080/mcp/health # Test with Firebase JWT curl -X POST http://localhost:8080/mcp/message \ -H "Authorization: Bearer <firebase-jwt>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Production Testing

curl -X POST https://your-server.run.app/mcp/message \ -H "Authorization: Bearer <firebase-jwt>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Platform API Requirements

Your platform must implement the credentials endpoint:

// GET /api/credentials/eventbrite // Headers: // Authorization: Bearer <service-token> // X-User-ID: <user-id> // Response: { "access_token": "user-eventbrite-token", "expires_at": "2024-12-31T23:59:59Z" }

Project Structure

eventbrite-mcp-server/ ├── src/ │ ├── index.ts # Main server entry point │ └── auth/ │ ├── firebase-provider.ts # Firebase JWT validation │ └── platform-token-resolver.ts # Platform API integration ├── agent/ │ └── patterns/ │ └── bootstrap.md # Bootstrap pattern documentation ├── package.json ├── tsconfig.json ├── Dockerfile ├── .env.example ├── .gitignore ├── .dockerignore └── README.md

Features

  • ✅ Multi-tenant architecture

  • ✅ Firebase authentication

  • ✅ Platform-managed credentials (secure)

  • ✅ Stateless server (no database)

  • ✅ Token caching for performance

  • ✅ Rate limiting

  • ✅ Health checks

  • ✅ Docker support

  • ✅ Cloud Run ready

Security

  • Firebase JWT tokens are validated on every request

  • Eventbrite tokens are never exposed to clients

  • Service token authenticates server-to-platform communication

  • All credentials are managed by the platform API

  • Rate limiting prevents abuse

Caching

The server implements two levels of caching:

  1. Auth Cache: Firebase JWT validation results (TTL: 60s)

  2. Token Cache: Eventbrite access tokens (TTL: 5min)

Caching improves performance and reduces external API calls.

Troubleshooting

TypeScript Errors

TypeScript errors about missing modules are expected before running npm install. Install dependencies to resolve.

Authentication Failures

  • Verify FIREBASE_PROJECT_ID matches your Firebase project

  • Ensure Firebase JWT is valid and not expired

  • Check that the JWT is sent in the Authorization: Bearer <token> header

Token Resolution Failures

  • Verify PLATFORM_URL is correct

  • Ensure PLATFORM_SERVICE_TOKEN is valid

  • Check that user has Eventbrite credentials in the platform

  • Review platform API logs for errors

License

MIT

Support

For issues or questions:

-
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/prmichaelsen/eventbrite-mcp-server'

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