Network School Events MCP Server
# Network School Events MCP Server
A Model Context Protocol (MCP) server that provides access to Network School Luma calendar events through Claude Desktop.
## Features
### Tools
- **get_todays_events**: Fetch all events happening today
- **get_upcoming_events**: Get events in the next N days (default: 7)
- **search_events**: Search events by name or description
- **register_for_event**: Register for events directly with your name and email
### Wiki Resources
- **Access Network School wiki pages** with information about:
- Visas (Malaysia, Singapore, travel from different countries)
- Internet (WiFi passwords, SIM cards)
- Getting Started guide
- And more - easily add new wiki pages as markdown files!
## Installation
```bash
npm install
```
## Build
```bash
npm run build
```
## Development
Watch mode for development:
```bash
npm run dev
```
## Testing
Test the API connection and event formatting:
```bash
npm test
```
This will fetch events from the Luma API and display them in the formatted output.
## Configuration
Add to your Claude Desktop config file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"network-school-events": {
"command": "node",
"args": ["/Users/akashkumar/Code/ns-mcp/build/index.js"]
}
}
}
```
You can also copy the configuration from `claude_config_example.json` in this project.
## Usage in Claude Desktop
After configuration, restart Claude Desktop. The server will automatically connect when Claude starts.
You can then ask Claude questions like:
**Viewing Events:**
- "What events are happening today at Network School?"
- "Show me upcoming events in the next 14 days"
- "Show me events in the next 30 days"
- "Search for hackathon events"
- "Find events about AI or machine learning"
- "Are there any coding events coming up?"
**Registering for Events:**
- "Register me for the Vibecoding event with name John Doe and email john@example.com"
- "Sign me up for event evt-XXX with my name and email"
- After viewing events, you can say: "Register me for that AI Music Lab event"
**Accessing Wiki Information:**
- "How do I get a visa for Malaysia from India?"
- "What's the WiFi password?"
- "How do I get started at Network School?"
- "What are the visa requirements for Singapore?"
- Claude will automatically access the relevant wiki pages to answer your questions!
### Available Tools
1. **get_todays_events**: Returns all events happening today
2. **get_upcoming_events**: Returns events in the next N days (default: 7)
- Parameter: `days` (optional, number)
3. **search_events**: Searches events by name or description
- Parameter: `query` (required, string)
4. **register_for_event**: Register for an event
- Parameters:
- `event_id` (required, string): Event API ID from the event listing
- `name` (required, string): Your full name
- `email` (required, string): Your email address
- `phone_number` (optional, string): Your phone number
- `timezone` (optional, string): Your timezone (default: Asia/Kuala_Lumpur)
## API
This server fetches data from the public Network School Luma calendar API. No authentication is required.
## Adding Wiki Content
To add or update wiki pages:
1. Create a new `.md` file in the `wiki/` directory:
```bash
echo "# My New Page" > wiki/my-new-page.md
```
2. Add your content in Markdown format
3. Rebuild the server:
```bash
npm run build
```
4. Restart Claude Desktop
The new wiki page will automatically be available as a resource that Claude can access!
**Tips:**
- Use descriptive filenames (e.g., `transportation.md`, `food-guide.md`)
- Include headers with `#` for better organization
- Link to other resources or external URLs
- Keep information up-to-date
## Tech Stack
- TypeScript
- Node.js
- @modelcontextprotocol/sdk
- axios for HTTP requests
- date-fns for date formatting
## License
MIT
TDQS
Scored across 5 tools
Most tools have distinct purposes: get_todays_events and get_upcoming_events are clearly differentiated by time frame, register_for_event handles registration, and search_events focuses on event discovery. However, search_wiki overlaps slightly with search_events in being a search function, though their domains (events vs. wiki content) differ enough to avoid major confusion.
All tool names follow a consistent verb_noun pattern with snake_case, such as get_todays_events, register_for_event, and search_events. This uniformity makes the tool set predictable and easy for an agent to understand and navigate without naming conflicts.
With 5 tools, this server is well-scoped for managing school events and related information. The count is appropriate as it covers core operations like event retrieval, registration, and searching without being overly sparse or bloated, fitting typical server purposes efficiently.
The tool set covers key event operations like retrieval, search, and registration, but lacks update or delete capabilities for events, which could be gaps in a full lifecycle. Additionally, while search_wiki adds value, it might not fully integrate with the event domain, leaving minor coverage issues for a comprehensive event management system.