UNC LibCal MCP
UNC LibCal MCP
MCP-Server zur Buchung von UNC Davis Library Lernräumen über Claude, Cursor, Codex oder einen beliebigen MCP-Client – mit optionaler Apple-Kalender-Integration.
Entwickelt für UNC-Studierende, Dozierende und Mitarbeitende mit gültigem Onyen. Nicht verbunden mit oder unterstützt von UNC Libraries.
Was es tut
Fragen Sie Ihren Agenten:
Buche mir morgen um 14 Uhr einen Davis-Cube
Der Server wird:
LibCal-Verfügbarkeit prüfen (öffentliche API – keine Anmeldung erforderlich)
Rangfolge-Optionen vorschlagen (
libcal_suggest) oder einen von Ihnen bestätigten Slot buchen (libcal_book)Die Reservierung in Ihrer Browser-Sitzung abschließen (Playwright + gespeicherter Onyen-Login)
Optional das Ereignis zum Apple-Kalender hinzufügen (nur macOS)
Related MCP server: @aiwerk/mcp-server-cal
Voraussetzungen
Node.js 20+
UNC Onyen (für Buchungen; Verfügbarkeitsprüfungen funktionieren ohne Anmeldung)
macOS für die Apple-Kalender-Synchronisierung (optional)
Chromium (wird automatisch über Playwright installiert)
Schnellstart
1. Klonen und installieren
git clone https://github.com/Thespaceblade/unc-libcal-mcp.git
cd unc-libcal-mcp
npm install
npx playwright install chromium
npm run build
npm test2. Bei LibCal anmelden
npm run loginEin Browser öffnet sich → melden Sie sich mit Ihrem Onyen an (+ Duo, falls aufgefordert) → sobald die Davis-LibCal-Seite geladen ist, drücken Sie Enter im Terminal.
Ihre Sitzung wird unter ~/.unc-libcal/storage-state.json gespeichert (diese Datei niemals committen).
3. Konfigurieren (optional)
Beim ersten Start wird ~/.unc-libcal/config.json mit Standardwerten erstellt:
{
"defaultCategory": "davis-cubes",
"calendarName": "Calendar",
"preferSameDay": true,
"minLeadMinutes": 30,
"searchHorizonDays": 7,
"bookingPurpose": "Study session"
}Bitten Sie den Agenten, libcal_list_calendars auszuführen, und setzen Sie dann calendarName auf Ihren bevorzugten Apple-Kalender. Erteilen Sie die Automation-Berechtigung, wenn macOS dazu auffordert (Terminal oder Cursor → Kalender).
4. MCP-Client verbinden
Jeder Client benötigt den absoluten Pfad zu dist/index.js. Von innerhalb des Repos:
pwd # e.g. /Users/you/projects/unc-libcal-mcp
# Use: <that-path>/dist/index.jsOder als Einzeiler:
node -e "const p=require('path'); console.log(p.join(process.cwd(),'dist/index.js'))"Alle unten genannten Clients verwenden denselben stdio-Server:
{
"command": "node",
"args": ["/absolute/path/to/unc-libcal-mcp/dist/index.js"]
}Starten Sie den Client nach der Konfigurationsänderung neu.
Claude Desktop
Datei: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"unc-libcal": {
"command": "node",
"args": ["/absolute/path/to/unc-libcal-mcp/dist/index.js"]
}
}
}Beenden Sie Claude Desktop vollständig und öffnen Sie es erneut.
Cursor
Option A – Benutzeroberfläche: Einstellungen → MCP → Server hinzufügen → den obigen JSON-Block einfügen.
Option B – Projektdatei: .cursor/mcp.json in diesem Repo (gut zum Teilen mit Teammitgliedern):
{
"mcpServers": {
"unc-libcal": {
"command": "node",
"args": ["./dist/index.js"]
}
}
}Verwenden Sie ./dist/index.js nur, wenn das MCP-Arbeitsverzeichnis von Cursor das Projektverzeichnis ist; andernfalls den absoluten Pfad verwenden.
OpenAI Codex (CLI)
Codex verwendet TOML, nicht JSON. Datei: ~/.codex/config.toml (oder .codex/config.toml in einem vertrauenswürdigen Projekt).
[mcp_servers.unc-libcal]
command = "node"
args = ["/absolute/path/to/unc-libcal-mcp/dist/index.js"]Oder über die CLI:
codex mcp add unc-libcal -- node /absolute/path/to/unc-libcal-mcp/dist/index.js
codex mcp list # verify it appearsWenn Server nicht angezeigt werden, stellen Sie sicher, dass das Projekt vertrauenswürdig ist (codex trust im Repo), wenn Sie eine projektlokale .codex/config.toml verwenden.
Claude Code (CLI)
Datei: ~/.claude.json (global) oder .mcp.json im Projekt:
{
"mcpServers": {
"unc-libcal": {
"command": "node",
"args": ["/absolute/path/to/unc-libcal-mcp/dist/index.js"]
}
}
}Führen Sie in einer Claude-Code-Sitzung /mcp aus, um zu bestätigen, dass die Tools geladen sind.
Andere MCP-Clients
Jeder Client, der stdio MCP unterstützt, kann dieselben command + args verwenden. Zeigen Sie nach npm run build auf dist/index.js.
5. Funktion überprüfen
Versuchen Sie in Ihrem Agenten:
Check libcal auth statusDann:
Suggest Davis cubes for 2 hours tomorrowSie sollten libcal_auth_status, libcal_suggest, libcal_check_availability, libcal_book und libcal_list_calendars sehen, sobald der Server verbunden ist.
MCP-Tools
Tool | Anmeldung erforderlich | Zweck |
| Nein | Rangfolge-Buchungsoptionen; Priorität für denselben Tag, sofern Sie kein Datum angeben |
| Nein | Offene Slots an einem Datum |
| Ja | Bestätigten Slot buchen + optional Apple-Kalender-Ereignis |
| Ja | Prüfen, ob die gespeicherte Sitzung noch gültig ist |
| Nein | Apple-Kalendernamen auflisten (macOS) |
Buchungsablauf
Bei offenen Anfragen („einen Cube buchen“, „maximale Stunden“) → Agent ruft zuerst
libcal_suggestaufAgent zeigt nummerierte Optionen; Sie wählen eine aus
Agent ruft
libcal_bookmituser_confirmed: trueund dem gewählten Datum/der gewählten Uhrzeit auf
libcal_book wird ohne ausdrückliche Bestätigung nicht ausgeführt.
Raumkategorien
ID | Beschreibung |
| Davis Collaboration Cubes (Standard) |
| Davis Gruppenarbeitsräume |
| Data Services Laborcomputer |
Beispiel-Prompts
Book me a study room for as long as possible
→ libcal_suggest shows TODAY vs later; you pick; then libcal_book
Book me a Davis cube tomorrow 11am–1pm
→ libcal_suggest or direct libcal_book with your exact time
Any study rooms free Friday afternoon?
→ libcal_check_availability or libcal_suggestSo funktioniert es
Verfügbarkeit – Reverse-Engineering der LibCal-Grid-API (
/spaces/availability/grid)Buchung – Playwright steuert die echte LibCal-Oberfläche: Slot auswählen → Zeiten übermitteln →
/spaces/auth-Checkout → BestätigungsformularKalender – AppleScript → Kalender.app (macOS-Automation-Berechtigung erforderlich)
Sitzungen laufen regelmäßig ab. Führen Sie npm run login erneut aus, wenn libcal_auth_status als abgelaufen meldet.
CLI-Skripte
# Refresh Onyen session
npm run login
# Run unit tests (38 tests)
npm test
# Book via CLI (uses saved session)
node dist/scripts/run-task.js --date 2026-09-01 --start 14:00 --duration 120
# Check public bookings page / cancel-link availability
node dist/scripts/list-bookings.jsBuchungen stornieren
UNC LibCal bietet keine „Meine Buchungen“-Stornierungsseite in der Weboberfläche. Stornieren Sie über den Link in Ihrer Bestätigungs-E-Mail von alerts@mail.libcal.com.
LibCal-Grenzen (UNC Davis)
Bis zu 3 Stunden pro Tag, in 30-Minuten-/1-Stunden-Segmenten
Beliebte Slots können zwischen Vorschlag und Buchung vergeben werden
Cubes können ein „Kurs- oder Gruppenname“-Feld im Checkout-Formular erfordern (Standard:
bookingPurposein der Konfiguration)
Entwicklung
npm run build # compile TypeScript → dist/
npm test # unit + integration tests
npm run dev # build and start MCP server on stdioEinschränkungen
Persönliches Automatisierungstool – nutzen Sie es verantwortungsbewusst und befolgen Sie die Richtlinien der UNC-Bibliothek
Nur gegen
calendar.lib.unc.edu(UNC Chapel Hill) getestetAndere LibCal-Einrichtungen benötigen andere
lid/gid-Konstanten insrc/libcal/constants.ts
Lizenz
MIT – siehe LICENSE.
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 Servers
- FlicenseAqualityDmaintenanceEnables interaction with the DiSH room booking platform to search availability, create bookings, and manage reservations. It allows AI assistants to handle meeting room logistics directly through natural language commands.3

@aiwerk/mcp-server-calofficial
AlicenseAqualityCmaintenanceConnects AI assistants to Cal.com for managing bookings, event types, and availability through natural language.1260MIT- FlicenseNot gradedqualityDmaintenanceEnables natural language booking and management of rooms in Nexudus coworking spaces, including listing rooms, checking availability, booking, viewing/cancelling bookings, and schedules.
- FlicenseNot gradedqualityDmaintenanceExposes Cal.com scheduling tools to AI agents via MCP, enabling listing event types, checking availability, and managing bookings (create, cancel, reschedule).
Related MCP Connectors
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Manage Novacal event types, availability, and bookings.
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/Thespaceblade/unc-libcal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server