NYCU
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., "@NYCUlist my upcoming E3 assignments and deadlines"
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.
$ timetable_list_semesters
{"data": ["1151", "114X", "1142", "1141", "113X", ...], "metadata": {"count": 83}}NYCU students use three websites for E3 coursework, the course timetable and part-time attendance. This plugin gives Codex and Claude Code 26 tools for them, and every tool that writes needs an explicit confirmation.
Features
Reads E3: courses, assignments, deadlines, grades, submissions and material downloads (9 tools).
Searches the public timetable: courses, class times and periods, with no login (4 tools).
Uses the portal session: identity, systems and events through NYCU single sign-on (5 tools).
Signs part-time attendance: status, sign-in and sign-out, with
confirmanddry_run(3 tools).Registers by platform: macOS gets all 26 tools. Linux gets the 18 E3 and timetable tools.
Related MCP server: edupage
Quick start
claude plugin marketplace add zyx1121/marketplace
claude plugin install nycu@zyx1121Codex: codex plugin marketplace add zyx1121/marketplace, then codex plugin add nycu@zyx1121. Start a new session and ask "Which E3 assignments are due this week?".
The plugin needs Bun 1.3.13 or later, uv, and Python 3.11 or later. uv can install Python. The MCP server ships bundled, so the plugin directory needs no bun install.
Usage
Service | Tools | Needs |
E3 |
| an E3 token, macOS or Linux |
Timetable |
| nothing, macOS or Linux |
Portal |
| macOS Keychain and Playwright Chromium |
Attendance |
| the portal session and the campus network |
E3 login: in the plugin directory, run
uv run scripts/e3p.py loginonce. It asks for the password at a hidden prompt, so the password never passes through the conversation.Portal login: store your student ID and password in the Keychain item
kilo/nycu-portal, and theotpauth://URI inkilo/nycu-totp. Then ask the agent to runnycu_setup, which prepares Chromium.Attendance:
parttime_sign_inandparttime_sign_outwrite real attendance records. They needconfirm=true. Usedry_runfirst.
Configuration
Setting | Where | Default |
Portal token |
|
|
E3 token |
|
|
E3 overrides |
| from the E3 token file |
Portal password | Keychain | required for portal tools |
Portal TOTP | Keychain | required for portal tools |
Platform override, tests only |
| the real platform |
Token files have mode 600 and follow XDG_CONFIG_HOME. The older UTILS_NYCU_CONFIG, UTILS_E3P_CONFIG and UTILS_E3P_* names still work, but the NYCU_* names win.
How it works
The Bun MCP server registers the tools for the platform at startup. It looks only at the platform and uv, and it does not log in or connect. Each call runs a Python script through uv, and each script declares its packages inline (PEP 723).
The portal relogs once when its cached token expires, then reports the error.
E3 downloads send the token only to the configured Moodle
pluginfileURL over HTTPS. They reject cross-origin redirects, and error messages never contain the token URL.
Limits
Attendance writes are real. A timeout does not mean a rollback, so call
parttime_get_statusafter a timeout.Attendance needs the campus network, because the timeclock is reachable only from there.
Portal and attendance tools need macOS, for the Keychain.
For AI agents
Facts for coding agents and LLM tools. The rules for changing the code are in AGENTS.md.
Summary: Claude Code and Codex plugin with 26 MCP tools for NYCU E3, the public timetable, the portal and part-time attendance.
Type: plugin
Interfaces: MCP
nycu(stdio,dist/server.js). Python scripts inscripts/run under uv.Install:
claude plugin install nycu@zyx1121, afterclaude plugin marketplace add zyx1121/marketplaceRun: the host starts the MCP server
Verify: call
timetable_list_semesters, which needs no loginConfig:
NYCU_PORTAL_CONFIG,NYCU_E3P_CONFIG,NYCU_E3P_TOKEN,NYCU_E3P_USERID,NYCU_E3P_BASE,NYCU_E3P_SERVICESecrets: Keychain
kilo/nycu-portalandkilo/nycu-totp, and the token files in~/.config/nycu/Limits: attendance writes are real and need
confirm=true. Portal tools are macOS only.
Development
bun install --frozen-lockfile
bun run checkplugin.json and mcp.json are the manifest sources. The build writes the Claude-compatible files and dist/server.js, and CI fails when the committed copies differ. The tests use synthetic data, so CI needs no NYCU account and never signs attendance.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
AI-powered corporate learning platform — manage courses, users, and insights via Claude.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
- AurentiaOAuthfr.aurentia
Your Aurentia workspace — projects, CRM, tasks, deliverables — in Claude, Cursor or any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables University of Toronto students to access academic data from ACORN and Quercus via AI assistants. It provides tools to retrieve course schedules, enrollment details, syllabi, assignments, and announcements.-
- AlicenseAqualityCmaintenanceEnables Claude to access school information system data such as timetables, grades, homework, messages, students, teachers, and meal information, including meal ratings.26GPL 3.0
- AlicenseAqualityAmaintenanceA local, read-only MCP server that connects Claude to Monash University Moodle and Ed, providing access to deadlines, announcements, grades, lecture slides, course content, and Ed discussions.1017MIT
- AlicenseNot gradedqualityBmaintenanceExposes a student's unified, source-attributed academic context — today's and this week's classes, assignments, deadlines, recent changes, course and lecture details, search results, and conflicts — to AI agents via high-level tools and resources whose answers always carry citations and conflict notices. Corrections are propose-only, and no tool can submit assignments, change enrolment, or touch grades.1MIT