Eventbrite MCP Server

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.

Category
Visit Server

README

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

Related Projects

Support

For issues or questions:

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured