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.
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:
- Auth Cache: Firebase JWT validation results (TTL: 60s)
- 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_IDmatches 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_URLis correct - Ensure
PLATFORM_SERVICE_TOKENis valid - Check that user has Eventbrite credentials in the platform
- Review platform API logs for errors
License
MIT
Related Projects
- @prmichaelsen/eventbrite-mcp - Base Eventbrite MCP server
- @prmichaelsen/mcp-auth - MCP authentication wrapper
- Bootstrap Pattern - Pattern documentation
Support
For issues or questions:
- Base MCP server: @prmichaelsen/eventbrite-mcp issues
- This wrapper: Create an issue in this repository
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.