@ibraheem4/eventbrite-mcp
Version:
An Eventbrite MCP server for interacting with Eventbrite's API
132 lines • 4.25 kB
JavaScript
import axios from "axios";
export class EventbriteApiClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = "https://www.eventbriteapi.com/v3";
this.client = axios.create({
baseURL: this.baseUrl,
headers: {
Authorization: `Bearer ${this.apiKey}`,
"Content-Type": "application/json",
},
});
}
/**
* Search for events
*/
async searchEvents(params) {
try {
const queryParams = {};
if (params.q) {
queryParams.q = params.q;
}
if (params.location) {
queryParams.location_latitude = params.location.latitude;
queryParams.location_longitude = params.location.longitude;
if (params.location.within) {
queryParams.location_within = params.location.within;
}
}
if (params.categories && params.categories.length > 0) {
queryParams.categories = params.categories.join(",");
}
if (params.start_date) {
queryParams.start_date = params.start_date;
}
if (params.end_date) {
queryParams.end_date = params.end_date;
}
if (params.price) {
queryParams.price = params.price;
}
if (params.page) {
queryParams.page = params.page;
}
if (params.page_size) {
queryParams.page_size = params.page_size;
}
const response = await this.client.get("/events/search/", {
params: queryParams,
});
return {
events: response.data.events,
pagination: response.data.pagination,
};
}
catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Eventbrite API error: ${error.response?.data?.error_description || error.message}`);
}
throw error;
}
}
/**
* Get event details by ID
*/
async getEvent(eventId) {
try {
const response = await this.client.get(`/events/${eventId}/`);
return response.data;
}
catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Eventbrite API error: ${error.response?.data?.error_description || error.message}`);
}
throw error;
}
}
/**
* Get venue details by ID
*/
async getVenue(venueId) {
try {
const response = await this.client.get(`/venues/${venueId}/`);
return response.data;
}
catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Eventbrite API error: ${error.response?.data?.error_description || error.message}`);
}
throw error;
}
}
/**
* Get categories
*/
async getCategories() {
try {
const response = await this.client.get("/categories/");
return response.data.categories;
}
catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Eventbrite API error: ${error.response?.data?.error_description || error.message}`);
}
throw error;
}
}
/**
* Get user's events (requires user OAuth token)
*/
async getUserEvents(page = 1, pageSize = 50) {
try {
const response = await this.client.get("/users/me/events/", {
params: {
page,
page_size: pageSize,
},
});
return {
events: response.data.events,
pagination: response.data.pagination,
};
}
catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Eventbrite API error: ${error.response?.data?.error_description || error.message}`);
}
throw error;
}
}
}
//# sourceMappingURL=eventbrite-api.js.map