Network School Events MCP Server
This MCP server provides access to Network School's calendar events and wiki resources through Claude Desktop. You can view events (today's events, upcoming events with customizable timeframes), search events by keywords in names/descriptions, and register for events directly with your name, email, and optional phone/timezone. It also provides access to wiki resources including visa information (Malaysia, Singapore), internet/WiFi details, getting started guides, and other school resources. The server features real-time API integration with Network School's public Luma calendar and extensible content - new wiki pages can be easily added as markdown files that become automatically available to Claude.
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., "@Network School Events MCP Serverwhat events are happening today at Network School?"
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.
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!
Related MCP server: Google Calendar MCP Server
Installation
npm installBuild
npm run buildDevelopment
Watch mode for development:
npm run devTesting
Test the API connection and event formatting:
npm testThis 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
{
"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
get_todays_events: Returns all events happening today
get_upcoming_events: Returns events in the next N days (default: 7)
Parameter:
days(optional, number)
search_events: Searches events by name or description
Parameter:
query(required, string)
register_for_event: Register for an event
Parameters:
event_id(required, string): Event API ID from the event listingname(required, string): Your full nameemail(required, string): Your email addressphone_number(optional, string): Your phone numbertimezone(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:
Create a new
.mdfile in thewiki/directory:echo "# My New Page" > wiki/my-new-page.mdAdd your content in Markdown format
Rebuild the server:
npm run buildRestart 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 organizationLink 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
Available Tools
5 toolsget_todays_eventsB
Get all Network School events happening today
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states it 'gets' events, implying a read-only operation, but doesn't specify whether this requires authentication, how results are returned (e.g., format, pagination), or any rate limits. This leaves significant gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool with no parameters, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'events' entail (e.g., structure, fields), how results are returned, or any behavioral constraints. For a tool that presumably returns data, more context is needed to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter explanation in the description. The description appropriately doesn't mention parameters, earning a baseline score of 4 for not adding unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('Network School events happening today'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get_upcoming_events' or 'search_events', which prevents a perfect score, but the temporal scope 'today' provides some implicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_upcoming_events' or 'search_events'. It implies usage for today's events only, but doesn't specify exclusions or prerequisites, leaving the agent to infer context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcoming_eventsB
Get Network School events happening in the next N days
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look ahead (default: 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving events but doesn't cover aspects like permissions needed, rate limits, pagination, or response format. This leaves significant gaps for a tool that likely queries data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (1 parameter with full coverage) and no output schema or annotations, the description is adequate but incomplete. It covers the basic purpose but lacks details on behavior, usage context, or output, making it minimally viable with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, fully documenting the 'days' parameter with its type, description, and default. The description adds no additional parameter details beyond what the schema provides, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('Network School events happening in the next N days'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like get_todays_events or search_events, which limits it to a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_todays_events or search_events. It implies usage for upcoming events but lacks explicit when/when-not instructions or prerequisites, resulting in a minimal score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_for_eventC
Register for a Network School event using the event ID from the event listing
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | The event API ID (e.g., evt-xxx) from the event listing | |
| name | Yes | Full name for registration | |
| Yes | Email address for registration | ||
| phone_number | No | Phone number (optional) | |
| timezone | No | Timezone (default: Asia/Kuala_Lumpur) | Asia/Kuala_Lumpur |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a write operation ('Register') but doesn't disclose behavioral traits such as authentication requirements, rate limits, error conditions, or what happens upon successful registration (e.g., confirmation email). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, earning its place by conveying the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns upon success or failure, nor does it cover behavioral aspects like side effects or error handling. The schema covers parameters well, but overall context for safe and effective use is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional meaning beyond implying the event_id comes from a listing, which is already covered in the schema. Baseline 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Register for') and resource ('a Network School event'), specifying it uses an event ID from the event listing. However, it doesn't explicitly differentiate from sibling tools like get_todays_events or search_events, which are read-only queries rather than write operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance by mentioning the event ID comes from the event listing, but it doesn't specify when to use this tool versus alternatives (e.g., when registration is open vs. closed) or any prerequisites beyond having an event ID. No explicit exclusions or sibling comparisons are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsC
Search Network School events by name or description
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the search functionality without mentioning whether this is a read-only operation, what permissions are needed, how results are returned (pagination, format), or any rate limits. For a search tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple search tool and front-loads the essential information (search functionality and target resource).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the search returns (event objects, IDs, summaries), how results are structured, or any limitations (e.g., partial matches, case sensitivity). Given the lack of structured data elsewhere, the description should provide more context about the tool's behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'query' parameter. The description adds marginal value by specifying it searches 'by name or description', but doesn't provide additional syntax, format, or search behavior details beyond what the schema indicates. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('search') and resource ('Network School events'), and specifies the searchable fields ('by name or description'). However, it doesn't explicitly differentiate from sibling tools like 'search_wiki' which searches a different resource, or 'get_todays_events'/'get_upcoming_events' which retrieve events without search functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_todays_events' or 'get_upcoming_events'. It doesn't indicate whether this is for broad searches versus filtered retrieval, or mention any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_wikiC
Search the Network School wiki for information about visas, internet, food, getting started, and more
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "wifi password", "visa", "breakfast", "sim card") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'search' but doesn't describe how results are returned (e.g., format, pagination), potential limitations (e.g., rate limits, authentication needs), or what happens on errors. The description adds minimal behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and resource. It could be slightly more structured by explicitly listing use cases, but it avoids redundancy and wastes no words, making it appropriately concise for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no annotations, no output schema), the description is minimally adequate. It covers the purpose and scope but lacks details on behavioral traits, usage guidelines, and output format. Without annotations or output schema, more context on results and limitations would improve completeness for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'query' well-documented in the schema (including examples like 'wifi password'). The description adds no additional parameter semantics beyond what the schema provides, such as query syntax or result relevance. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'Network School wiki', specifying the content scope (visas, internet, food, getting started, and more). However, it doesn't explicitly differentiate from sibling tools like search_events, which searches events rather than wiki content, though this distinction is implied by the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the types of information available (visas, internet, etc.) but doesn't specify prerequisites, exclusions, or compare it to sibling tools like search_events for event-related queries. Usage is implied by the content scope but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
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.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Your professional network in Claude — search contacts, log notes, and send warm intros.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
Run in-person events from your AI: create events, manage tickets, attendees, broadcasts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to interact with the Kynhood Events API, allowing users to list events with pagination and retrieve detailed event information through natural language queries.
- FlicenseBqualityDmaintenanceEnables Claude to manage Google Calendar events, schedules, and meetings through natural conversation. It supports viewing calendars, creating Google Meet events, and searching for upcoming activities using Nango for authentication.6
- FlicenseNot gradedqualityFmaintenanceProvides Claude Desktop with access to Apple Calendar and Reminders on macOS for managing schedules and tasks through natural language. It supports comprehensive operations like creating, editing, and searching events and reminders, along with a custom hashtag-based tagging system.3
- FlicenseNot gradedqualityBmaintenanceEnables Claude to query and manage Mail2000 calendar events, including agenda, search, booking, updating, and deleting events through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tHeMaskedMan981/ns-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server