Brock University Events MCP Server
by Aryan-Jhaveri
This MCP server connects to the Brock University events RSS feed, providing AI assistants with access to campus events. It allows students and faculty to easily discover relevant events, filter by date or category, and get comprehensive event details.
Last updated: N/A
🎓 Brock University Events MCP Server
<div align="center">Brock University
Your own assistant to help you network and be involved!
Model Context Protocol Claude License: MIT
📋 Overview
This MCP server connects to the Brock University events RSS feed and provides AI assistants with access to campus events. It allows students and faculty to easily discover relevant events, filter by date or category, and get comprehensive event details.
✨ Features
- 🔄 Real-time data: Fetch and parse the Brock University events RSS feed
- 🔍 Search capabilities: Find events by keyword
- 📅 Timeline views: Get upcoming events for a specified number of days
- 📆 Date filtering: Filter events by date or date range
- ⏰ Time filtering: Find events by time of day (morning, afternoon, evening)
- 🏷️ Categories: Browse event categories and filter events accordingly
- 📊 Special views: Get customized lists (this week, next week, weekend events)
- 📝 Detailed info: Access comprehensive details for specific events
🛠️ Installation Guide
Prerequisites
- 🐍 Python 3.10 or higher installed on your computer
- 💻 Basic familiarity with command line operations
Step-by-Step Installation
<details open> <summary><b>1️⃣ Get the code</b></summary># Clone with Git
git clone https://github.com/yourusername/mcp-brockevents.git
cd mcp-brockevents
# Or download the ZIP and extract it
</details>
<details open>
<summary><b>2️⃣ Install dependencies</b></summary>
# Install all required packages
pip install -r requirements.txt
</details>
<details open>
<summary><b>3️⃣ Launch the server</b></summary>
# Start the MCP server
python brock_events_server.py
</details>💡 The server is running successfully when there is no error output. Keep this terminal window open while using the server with Claude.
🔄 Connecting to Claude for Desktop
Setting up Claude Desktop
<details open> <summary><b>1️⃣ Install Claude for Desktop</b></summary>- Download from claude.ai/download
- Follow the installation instructions for your operating system
Mac users:
- Click on the Claude menu at the top of your screen
- Select "Settings..."
- Click on "Developer" in the left sidebar
- Click "Edit Config"
Windows users:
- Open File Explorer
- Navigate to
%APPDATA%\Claude\
- Create or edit the file
claude_desktop_config.json
Copy and paste the following JSON into the configuration file:
{
"mcpServers": {
"brocku-events": {
"command": "python",
"args": [
"/REPLACE/WITH/FULL/PATH/TO/brock_events_server.py"
]
}
}
}
⚠️ Important: Replace
/REPLACE/WITH/FULL/PATH/TO/brock_events_server.py
with the actual full path to the server file on your computer.
Examples:
- Mac:
/Users/yourusername/Downloads/mcp-brockevents/brock_events_server.py
- Windows:
C:\\Users\\yourusername\\Downloads\\mcp-brockevents\\brock_events_server.py
- Save the configuration file
- Restart Claude for Desktop
- Verify connection: Look for the 🔨 hammer icon in the bottom right of the chat interface, indicating available tools
🧰 Available Tools
<div align="center"> <table> <tr> <th>Tool</th> <th>Description</th> </tr> <tr> <td><code>get_upcoming_events(days)</code></td> <td>Get events for the specified number of days ahead</td> </tr> <tr> <td><code>search_events(query)</code></td> <td>Search for events matching the keyword query</td> </tr> <tr> <td><code>get_events_by_date(date)</code></td> <td>Get events on a specific date (format: YYYY-MM-DD)</td> </tr> <tr> <td><code>get_events_by_date_range(start_date, end_date)</code></td> <td>Get events between two specified dates</td> </tr> <tr> <td><code>get_events_by_time_of_day(date, time_range)</code></td> <td>Filter events by time of day (morning/afternoon/evening)</td> </tr> <tr> <td><code>get_event_categories()</code></td> <td>List all available event categories with organized grouping</td> </tr> <tr> <td><code>get_events_by_category(category)</code></td> <td>Get events in a specific category with fuzzy matching</td> </tr> <tr> <td><code>get_event_details(query)</code></td> <td>Get detailed information about a specific event</td> </tr> <tr> <td><code>get_events_this_week()</code></td> <td>Get all events occurring this week (Monday-Sunday)</td> </tr> <tr> <td><code>get_events_next_week()</code></td> <td>Get all events occurring next week (Monday-Sunday)</td> </tr> <tr> <td><code>get_weekend_events(date)</code></td> <td>Get events for the upcoming or specified weekend</td> </tr> </table> </div>💬 Example Queries
<details open> <summary><b>Basic Queries</b></summary>- 📅 "What events are happening at Brock University this week?"
- 🎵 "Are there any music events at Brock University?"
- 📝 "What's happening on campus next Tuesday?"
- 🎓 "Show me all the academic events at Brock"
- 📋 "What categories of events are available at Brock University?"
- 🔍 "Tell me more about the Blackout Gala event"
- 🏢 "When and where is the next workshop happening?"
- 👥 "Are there any social events this weekend?"
- 🍔 "Show me events with free food"
- 🤝 "What club meetings are happening this week?"
- 📆 "What events are happening between March 15 and March 20?"
- 🌙 "Show me evening events on Friday"
- 📊 "What's happening next week at Brock?"
🔧 Customization Guide
<details open> <summary><b>📡 Changing the RSS Feed Source</b></summary>You can configure this server to use event feeds from other universities:
Step 1: Locate the RSS Feed URL
- Open
brock_events_server.py
in any text editor - Find line 14 where the RSS feed URL is defined:
RSS_FEED_URL = "https://experiencebu.brocku.ca/events.rss"
Step 2: Replace with Your Preferred Feed
Replace the URL with another university's event feed:
| University | RSS/XML Feed URL | |------------|------------------| | Brock University | https://experiencebu.brocku.ca/events.rss | | University of Guelph | https://gryphlife.uoguelph.ca/Events.rss | | Western University | http://westernadvance.ca/calendar/western.xml |
Step 3: Adapt the Parsing Logic (Advanced)
⚠️ Important Compatibility Note:
The server is specifically designed for Brock University's RSS feed structure. Different universities format their event data with unique:
- Tag naming conventions
- Date formats
- Category systems
- Event property names
If you change the RSS feed URL, you may need to modify the event parsing functions in the code to match the structure of your selected feed. The primary parsing logic is in the fetch_rss_feed()
and related functions.
🚀 Advanced Use Cases
Students can quickly chat and find events based on their interests:
<details open> <summary><b>🔎 Professional Development</b></summary>Users can upload their resume to find and filter professional networking events, and have Claude create elevator pitches about them. Perfect for preparing a game plan for networking events!
</details> <details open> <summary><b>📱 Calendar Integration</b></summary>Claude can filter events and create .ics files of selected events for users to add to their iCal or sync across their other calendars. Learn how to import .ics files to Google Calendar
</details> <details open> <summary><b>📊 Schedule Optimization</b></summary>Users can share an image of their personal schedule and ask "What events fit within my schedule for the month, can you find and filter them for me?" Claude will analyze available time slots and recommend compatible events.
</details>⚠️ Troubleshooting
<details> <summary><b>🛑 Server Won't Start</b></summary>-
Check Python version: Make sure you have Python 3.10+ installed
python --version
-
Dependency issues: Try reinstalling dependencies one by one
pip install mcp[cli] pip install httpx feedparser python-dateutil pytz
-
Permission errors: Make sure you have permission to run the script
-
Configuration file: Double-check your
claude_desktop_config.json
file- Ensure there are no syntax errors (missing commas, brackets, etc.)
- Verify the path to the server file is correct and absolute
-
Server running: Make sure your server is still running in the terminal
-
Claude logs: Check Claude's logs for errors
- On Mac:
~/Library/Logs/Claude/mcp*.log
- On Windows:
%APPDATA%\Claude\logs\mcp*.log
- On Mac:
-
Restart Claude: Sometimes a complete restart of Claude for Desktop resolves connection issues
If the server starts but tools aren't working, the RSS feed might be unavailable or its format might have changed.
Try accessing https://events.brocku.ca/events/rss/ in your browser to check if it's accessible.
</details>👥 Contributing
<div align="center"> </div>Contributions are welcome! Feel free to submit pull requests or open issues if you have suggestions for improvements.
Developer Resources
<div align="center"> <table> <tr> <td align="center"> <a href="https://modelcontextprotocol.io/tutorials/building-mcp-with-llms"> <img src="https://mintlify.s3.us-west-1.amazonaws.com/mcp/images/claude-desktop-mcp-plug-icon.svg" width="80" alt="MCP with LLMs"><br> <b>Building MCP with LLMs</b> </a> </td> <td align="center"> <a href="https://modelcontextprotocol.io/docs/concepts/architecture"> <img src="https://mintlify.s3.us-west-1.amazonaws.com/mcp/images/claude-desktop-mcp-hammer-icon.svg" width="80" alt="MCP Docs"><br> <b>MCP Documentation</b> </a> </td> </tr> </table> </div>📄 License
<div align="center">This project is licensed under the MIT License.
Copyright © 2024
</div>