İTÜ MCP — Claude Code MCP server: what it does, how to install
This MCP server connects İTÜ services to an AI assistant. Use it to check courses, grades, assignments, schedules, and library records.
claude mcp add --env NINOVA_USERNAME=<NINOVA_USERNAME> --env NINOVA_PASSWORD=<NINOVA_PASSWORD> --env NINOVA_MAIL_USERNAME=<NINOVA_MAIL_USERNAME> --env NINOVA_MAIL_PASSWORD=<NINOVA_MAIL_PASSWORD> --env NINOVA_LIBRARY_NAME=<NINOVA_LIBRARY_NAME> --transport stdio itu-mcp -- uvx itu-mcpWhat İTÜ MCP does
İTÜ MCP lets an assistant read Ninova, OBS, Portal, Moodle, course websites, İTÜ Mail, the library catalogue, and an archive of past courses. You can ask about upcoming work, grades, registration status, timetable details, open seats, announcements, or library holdings. It can also create an .ics calendar file and watch for a seat to become available.
The server runs on your computer and is read-only by default. Uploading an assignment and saving a registration draft require confirmation. Private records need İTÜ credentials; the password stays on the machine and is sent only to İTÜ’s login page. Python 3.11 or newer and uvx are required.
Claude Code adds the server with claude mcp add; setup commands are also provided for Codex, Cursor, GitHub Copilot, and Gemini CLI. The project is unofficial, so access still depends on İTÜ services and your account.
What it helps with
- check upcoming assignment deadlines
- review grades and graduation progress
- find a course section with open seats
- look up schedules and course announcements
- search the İTÜ library catalogue
Example prompts for the agent
- List my upcoming Ninova assignments and their due dates.
- Check my OBS grades and calculate the GPA for the grades I provide.
- Find open sections for
MAT 210Eand create an.icscalendar file.
How to install İTÜ MCP
Platform CLI
claude mcp add --env NINOVA_USERNAME=<NINOVA_USERNAME> --env NINOVA_PASSWORD=<NINOVA_PASSWORD> --env NINOVA_MAIL_USERNAME=<NINOVA_MAIL_USERNAME> --env NINOVA_MAIL_PASSWORD=<NINOVA_MAIL_PASSWORD> --env NINOVA_LIBRARY_NAME=<NINOVA_LIBRARY_NAME> --transport stdio itu-mcp -- uvx itu-mcpReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from itu-mcp <command>
Platform CLI
codex mcp add itu-mcp --env NINOVA_USERNAME=<NINOVA_USERNAME> --env NINOVA_PASSWORD=<NINOVA_PASSWORD> --env NINOVA_MAIL_USERNAME=<NINOVA_MAIL_USERNAME> --env NINOVA_MAIL_PASSWORD=<NINOVA_MAIL_PASSWORD> --env NINOVA_LIBRARY_NAME=<NINOVA_LIBRARY_NAME> -- uvx itu-mcpReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from itu-mcp <command>
Config file
{
"mcpServers": {
"itu-mcp": {
"command": "uvx",
"args": [
"itu-mcp"
],
"env": {
"NINOVA_USERNAME": "<NINOVA_USERNAME>",
"NINOVA_PASSWORD": "<NINOVA_PASSWORD>",
"NINOVA_MAIL_USERNAME": "<NINOVA_MAIL_USERNAME>",
"NINOVA_MAIL_PASSWORD": "<NINOVA_MAIL_PASSWORD>",
"NINOVA_LIBRARY_NAME": "<NINOVA_LIBRARY_NAME>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from itu-mcp <command>
Config file
{
"servers": {
"itu-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"itu-mcp"
],
"env": {
"NINOVA_USERNAME": "<NINOVA_USERNAME>",
"NINOVA_PASSWORD": "<NINOVA_PASSWORD>",
"NINOVA_MAIL_USERNAME": "<NINOVA_MAIL_USERNAME>",
"NINOVA_MAIL_PASSWORD": "<NINOVA_MAIL_PASSWORD>",
"NINOVA_LIBRARY_NAME": "<NINOVA_LIBRARY_NAME>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from itu-mcp <command>
Platform CLI
gemini mcp add -e NINOVA_USERNAME=<NINOVA_USERNAME> -e NINOVA_PASSWORD=<NINOVA_PASSWORD> -e NINOVA_MAIL_USERNAME=<NINOVA_MAIL_USERNAME> -e NINOVA_MAIL_PASSWORD=<NINOVA_MAIL_PASSWORD> -e NINOVA_LIBRARY_NAME=<NINOVA_LIBRARY_NAME> itu-mcp uvx itu-mcpReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from itu-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about İTÜ MCP
How do I install İTÜ MCP in Claude Code?
Run `claude mcp add itu-mcp -e NINOVA_PASSWORD=<NINOVA_PASSWORD> -e NINOVA_MAIL_PASSWORD=<NINOVA_MAIL_PASSWORD> -e NINOVA_LIBRARY_ID=<NINOVA_LIBRARY_ID> -e NINOVA_LIBRARY_PIN=<NINOVA_LIBRARY_PIN> -- uvx itu-mcp`.
What does İTÜ MCP do?
It connects an AI assistant to İTÜ systems so you can retrieve course, assignment, grade, schedule, library, and other campus information.
Do I need an İTÜ password?
Public information works without one. Private records require İTÜ credentials, while the password remains on your computer.