MCP Hub
Back to servers

Eventbrite MCP Server

A multi-tenant Model Context Protocol server that provides a secure interface to the Eventbrite API using Firebase authentication. It enables structured interaction with Eventbrite tools for event management while maintaining platform-managed credentials.

Updated
Feb 11, 2026

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

VariableRequiredDescription
FIREBASE_PROJECT_IDYesFirebase project ID for JWT validation
PLATFORM_URLYesBase URL of your platform API
PLATFORM_SERVICE_TOKENYesService token for platform API authentication
PORTNoServer port (default: 8080)
NODE_ENVNoEnvironment (development/production)
LOG_LEVELNoLogging 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

Related Projects

Support

For issues or questions:

Reviews

No reviews yet

Sign in to write a review