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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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