Philly Events MCP Server
Integrates with Eventbrite as an event source, allowing AI agents to search Philadelphia Eventbrite listings for ticketed events, workshops, and professional networking events with filters for text, category, neighborhood, date range, and price.
Provides a tool to export Philadelphia events in Google Calendar-compatible format, enabling users to import or add events to Google Calendar.
Click on "Deploy 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., "@Philly Events MCP Server What's happening in Fishtown this weekend?"
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.
ποΈ Philly Events MCP Server
An MCP (Model Context Protocol) server that enables AI assistants to discover and search Philadelphia events from multiple sources. This project demonstrates modern AI infrastructure patterns including tool-based agents, semantic search, and structured data aggregation.
π― Project Overview
This MCP server aggregates events from Philadelphia's top event sources:
Do215 - Local indie events, arts, music, nightlife
Visit Philly - Tourism-focused events, major attractions
Eventbrite - Ticketed events, workshops, professional networking
It provides a unified API that AI agents can use to help users discover things to do in Philadelphia.
Related MCP server: better_luma
π Features
Tools Available
Tool | Description |
| Search events across all sources with powerful filters |
| Search a specific event source |
| Export events to Google Calendar format |
| List all event categories |
| List Philadelphia neighborhoods |
| Generate a curated weekly event digest |
Search Capabilities
Text search - Match against titles, descriptions, locations
Category filters - Music, food/drink, arts, sports, nightlife, comedy, etc.
Neighborhood filters - Fishtown, Center City, Rittenhouse, and 20+ more
Date range - Find events for specific time periods
Price filters - Free events or max price limits
Pagination - Handle large result sets efficiently
π¦ Installation
# Clone the repository
git clone https://github.com/anewt225/philly-events-mcp-server.git
cd philly-events-mcp-server
# Install dependencies
npm install
# Build the TypeScript
npm run buildπ§ Usage
Running with stdio (Local Development)
npm startRunning with HTTP (Production)
TRANSPORT=http PORT=3000 npm startAdding it to Claude
First clone, npm install and npm run build (see Installation) so that dist/index.js exists. Then use the absolute path to that file below.
Claude Code (one command):
claude mcp add philly-events -- node /absolute/path/to/philly-events-mcp-server/dist/index.jsClaude Desktop: open Settings β Developer β Edit Config, or edit claude_desktop_config.json directly:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"philly-events": {
"command": "node",
"args": ["/absolute/path/to/philly-events-mcp-server/dist/index.js"]
}
}
}On Windows, use forward slashes or escaped backslashes in the path (for example C:/Users/you/projects/philly-events-mcp-server/dist/index.js). Restart Claude Desktop after saving; the philly_* tools then appear in the tools menu.
π‘ Example Queries
Once connected, you can ask Claude things like:
"What's happening in Fishtown this weekend?"
"Find free outdoor events in Philadelphia"
"Show me live music events under $30"
"Generate a weekly digest of food and drink events"
"Find comedy shows in Center City next Friday"
ποΈ Architecture
philly-events-mcp-server/
βββ src/
β βββ index.ts # MCP server + tool registration
β βββ types.ts # TypeScript interfaces
β βββ constants.ts # Configuration constants
β βββ schemas/ # Zod validation schemas
β β βββ eventSchemas.ts
β βββ services/ # Business logic
β βββ eventScraper.ts
βββ package.json
βββ tsconfig.json
βββ README.mdKey Design Decisions
MCP Protocol - Uses Anthropic's Model Context Protocol for seamless AI integration
TypeScript - Strong typing for reliability and maintainability
Zod Schemas - Runtime validation with clear error messages
Modular Scrapers - Each source is independent and can be updated separately
In-Memory Cache - Efficient event retrieval within a session
π Roadmap
Phase 2: Intelligence Layer
Implement RAG with vector database for semantic search
Add preference learning based on user selections
Build recommendation engine
Phase 3: Product Features
Google Calendar API integration
Weekly email digest automation
User preference profiles
Event similarity matching
π§ͺ Testing
# Build and verify
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsπ Event Categories
Category | Description |
| Concerts, live music, DJs |
| Food events, happy hours, tastings |
| Museums, galleries, exhibitions |
| Sports games, fitness events |
| Clubs, parties, bar events |
| Stand-up, improv, sketch |
| Parks, hiking, outdoor activities |
| Kid-friendly events |
| Neighborhood events, meetups |
| Classes, learning events |
| Professional events |
| Movies, screenings |
| Plays, musicals |
| Farmers markets, flea markets |
| Festivals, celebrations |
ποΈ Neighborhoods
Center City, Rittenhouse, Old City, Northern Liberties, Fishtown, University City, Manayunk, East Passyunk, South Philly, Fairmount, Gayborhood, Chinatown, Queen Village, Graduate Hospital, Brewerytown, Kensington, Port Richmond, Germantown, Chestnut Hill, Mount Airy, Hawthorne, Bella Vista
π License
MIT License - Feel free to use and modify for your own projects.
π€ Contributing
Contributions welcome! This project is designed to be extended:
Add new event sources
Improve scraping accuracy
Enhance category classification
Add new tool capabilities
π€ Author
Built as a portfolio project demonstrating:
Modern MCP server development
AI agent infrastructure
Product thinking for local discovery
TypeScript best practices
Made with β€οΈ for Philadelphia
Available Tools
6 toolsphilly_export_to_calendarExport Events to Calendar FormatARead-onlyIdempotent
Convert Philadelphia events to Google Calendar format for import.
This tool takes event IDs (from search results) and returns them in Google Calendar JSON format, ready for import via the Google Calendar API.
Args:
event_ids (array): Array of event IDs to export (max 50)
include_description (boolean): Include full description (default: true)
include_source_link (boolean): Include link to original event (default: true)
Returns: Array of Google Calendar event objects ready for API import.
Example workflow:
Use philly_search_events to find events
Note the event IDs from results
Call this tool with those IDs to get calendar format
Import to Google Calendar via API
Inputs: event_ids (required), include_description, include_source_link.
philly_list_categoriesList Event CategoriesARead-onlyIdempotent
List all available event categories for filtering Philadelphia events.
Use this to discover what categories are available when searching for events.
Inputs: response_format.
philly_list_neighborhoodsList Philadelphia NeighborhoodsARead-onlyIdempotent
List all recognized Philadelphia neighborhoods for filtering events.
Use this to discover what neighborhood filters are available.
Inputs: response_format.
philly_search_eventsSearch Philadelphia EventsARead-onlyIdempotent
Search for events across all Philadelphia event sources (Do215, Visit Philly, Eventbrite).
This is the primary tool for discovering events happening in Philadelphia. It aggregates results from multiple sources, deduplicates them, and allows filtering by various criteria.
Args:
query (string, optional): Text to search in event titles, descriptions, and locations
categories (array, optional): Filter by categories like 'music', 'food_drink', 'arts_culture', 'sports', 'nightlife', 'comedy', 'outdoor', 'family', 'community', 'workshop', 'networking', 'film', 'theater', 'markets', 'festivals'
neighborhoods (array, optional): Filter by Philly neighborhoods like 'Fishtown', 'Center City', 'Rittenhouse', 'Northern Liberties', 'Old City', etc.
start_date (string, optional): Start date in YYYY-MM-DD format
end_date (string, optional): End date in YYYY-MM-DD format
is_free (boolean, optional): Only return free events
max_price (number, optional): Maximum ticket price in USD
limit (number): Max results to return (default: 20, max: 100)
offset (number): Pagination offset (default: 0)
response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns: Aggregated event listings from all sources with deduplication.
Examples:
"Find live music this weekend" β query="live music", categories=["music"]
"Free outdoor events in Fishtown" β is_free=true, categories=["outdoor"], neighborhoods=["Fishtown"]
"Comedy shows under $30" β categories=["comedy"], max_price=30
Inputs: limit, query, offset, is_free, +6 more.
philly_search_sourceSearch Specific Event SourceARead-onlyIdempotent
Search for events from a specific Philadelphia event source.
Use this when you want to search only one source (e.g., just Do215 or just Eventbrite) rather than aggregating from all sources.
Args:
source (string): Event source to search - one of 'do215', 'visitphilly', 'eventbrite'
query (string, optional): Search text
limit (number): Max results (default: 20)
response_format ('markdown' | 'json'): Output format
Available sources:
do215: Local indie events, arts, music, nightlife
visitphilly: Tourism-focused events, major attractions
eventbrite: Ticketed events, workshops, professional events
Inputs: source (required), limit, query, response_format.
philly_weekly_digestGenerate Weekly Event DigestARead-onlyIdempotent
Generate a curated weekly digest of Philadelphia events.
This tool searches for events happening in the next 7 days and formats them as a digestible newsletter-style summary, organized by category.
Args:
categories (array, optional): Focus on specific categories
neighborhoods (array, optional): Focus on specific neighborhoods
include_free_only (boolean): Only include free events (default: false)
max_events (number): Maximum events in digest (default: 20, max: 50)
response_format ('markdown' | 'json'): Output format
Perfect for:
Weekly event roundup emails
Planning your weekend
Discovering new things to do
Inputs: categories, max_events, neighborhoods, response_format, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 6 tools
Each tool targets a distinct operation: discovery (list_categories, list_neighborhoods), search (search_events aggregate, search_source single-source), export, and digest. The aggregate vs single-source search distinction is clearly explained. philly_weekly_digest partially overlaps with philly_search_events since it's essentially a preset filtered search with formatting, but the newsletter framing keeps it distinguishable.
All tools use a consistent philly_ prefix followed by a verb_noun pattern (list_categories, search_events, export_to_calendar, weekly_digest). No mixing of conventions or casing styles.
Six tools is well-scoped for a niche city event aggregator, with each tool earning its place: discovery, search, single-source search, export, and digest. No redundant or trivial tools in the set.
The surface covers discovery, search, filtering, export, and digest workflows well. The one noticeable gap is a get_event-by-ID tool, which would be useful given that export_to_calendar consumes event IDs yielded by search.
Maintenance
Related MCP Connectors
Run ticketed events from your AI assistant: create events, sell tickets via Stripe, check in.
Run in-person events from your AI: create events, manage tickets, attendees, broadcasts.
Read-only search of upcoming local events worldwide: music, comedy, AI/tech, arts, food, sports.
Read your events, sales, orders and attendees from your AI assistant. OAuth sign-in, read only.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates with the Eventbrite API to provide AI-assisted event management capabilities for viewing events, tracking attendees, and generating analytics reports.9 npm3MIT
- AlicenseAqualityCmaintenanceProvides read-only tools for discovering, searching, and browsing events from Luma, Posh, and Partiful platforms, including event details and guest lists, with optional authenticated access to a user's Luma events.10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search event calendars by keyword and list upcoming or date-filtered events from a chosen calendar, returning titles, dates, venues, coordinates, and keywords.349 npmMIT

SyncSoofficial
AlicenseNot gradedqualityBmaintenanceEnables agents to search and retrieve live local happenings in New York City β music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife β each with dates, times, prices, booking links and images. Two tools, search_directions and get_details, let assistants answer time-sensitive questions about what is happening nearby and return bookable results.2MIT