Provides a multi-tenant interface to the Eventbrite API, enabling interaction with Eventbrite's event management and ticketing platform services.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Eventbrite MCP Serverlist my upcoming events for this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 APIPrerequisites
Node.js 20+
Firebase project with authentication enabled
Platform API that implements the credentials endpoint
Eventbrite OAuth tokens stored in your platform
Installation
npm installConfiguration
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=infoEnvironment Variables
Variable | Required | Description |
| Yes | Firebase project ID for JWT validation |
| Yes | Base URL of your platform API |
| Yes | Service token for platform API authentication |
| No | Server port (default: 8080) |
| No | Environment (development/production) |
| 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 startDocker
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-serverDeployment
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=1API Endpoints
Health Check
GET /mcp/healthMCP 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.mdFeatures
✅ 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 projectEnsure 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 correctEnsure
PLATFORM_SERVICE_TOKENis validCheck 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