关于 İTÜ MCP
İTÜ MCP 是面向伊斯坦布尔技术大学学生的开源 MCP 服务,可在本机读取 Ninova、OBS、Portal、图书馆及课程档案等校内系统。它以只读访问为主,并对少数会修改数据的操作要求确认。
主要功能
- 01读取 Ninova 课程与作业
- 02查询 OBS 成绩、课表与注册状态
- 03访问 Portal、图书馆和课程档案
- 04规划课程并计算 GPA 情景
- 05邮件只读查询与附件读取
- 06按工具组筛选功能
适用场景
- 01汇总本周作业截止日期
- 02检查课程冲突与选课资格
- 03估算成绩对 GPA 的影响
- 04查询图书馆藏书和校园班车时刻
MCP 相关
作为本地运行的 MCP 服务,它连接支持 MCP 的客户端与 İTÜ 系统,并将查询工具提供给 AI 助手。大多数工具只读;上传作业和保存注册草稿等修改操作需明确确认。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx itu-mcpNINOVA_USERNAMEİTÜ e-posta adresi ([email protected])NINOVA_PASSWORD密钥İTÜ şifresiNINOVA_MAIL_USERNAMEOptional separate ITU Mail usernameNINOVA_MAIL_PASSWORD密钥Optional separate ITU Mail passwordNINOVA_LIBRARY_NAMEKütüphane hesabındaki ad (hesap araçları için isteğe bağlı)NINOVA_LIBRARY_ID密钥Kütüphane üniversite numarası (hesap araçları için isteğe bağlı)NINOVA_LIBRARY_PIN密钥Ayrı kütüphane PIN'i (hesap araçları için isteğe bağlı)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
111收录的工具列表 · 更新于 1 天前
此工具无需参数。
详细介绍
英文版
İTÜ MCP 是一个非官方、开源的 Model Context Protocol 服务,面向伊斯坦布尔技术大学(İTÜ)的学生。它在你自己的电脑上运行,让 Claude、ChatGPT、Cursor 或 Codex 等 AI 助手帮你读取 İTÜ 的系统:Ninova LMS(课程、作业、文件、公告)、İTÜ Moodle 和物理、化学、数学公共课程网站(教学大纲、指南、公告)、OBS(成绩、课表、注册状态、成绩单、毕业进度)、学生 Portal、图书馆目录,以及往年课程开设情况的公开档案。
- 用自然语言提问:“这周有哪些截止的作业”“如果所有课都拿 BB,我的 GPA 会是多少”“MAT 210E 哪些班还有名额”。
- 默认只读。两项会更改内容的操作(上传作业、保存选课草稿)都会先征求你的确认。
- İTÜ 密码保存在你的电脑上,只会发送到 İTÜ 自己的登录页面。
- 使用
pipx install itu-mcp安装,或将其作为插件添加到 Claude Code:claude plugin marketplace add yatuk/itu-mcp。
本页其余内容为土耳其语。安装方法:3 adımda kur。完整工具列表:docs/advanced.md。安全模型:docs/security.md。本项目与 İTÜ 无关。
这有什么用?
不用为了作业登录 Ninova、为了成绩登录 OBS、为了查看伙食登录 Portal,只要给助手发消息,它就会获取真实数据并回答。
İTÜ MCP 是一个在你电脑上运行的小程序。它让 Claude、Cursor 或 Codex 等助手能够读取 İTÜ 系统。你不需要会编程,只要安装好并提问即可。
| 你输入 | 它查询 |
|---|---|
| “我这周有哪些作业?” | Ninova |
| “期中考试成绩公布了吗?” | OBS |
| “今天有什么饭菜?” | Portal |
| “去年谁教了这门课,有多少人拿到 AA?” | 课程档案 |
| “图书馆有这本书吗?” | 图书馆目录 |
| “帮我找一些关于睡眠与学业成绩的论文,用于我的作业” | 论文索引、图书馆数据库 |
| “总结一下我未读的邮件” | İTÜ Mail |
| “读取 FIZ 102E 的教学大纲和公告” | Moodle 和公共课程网站 |
| “这个班有空位时通知我” | 名额追踪 |
| “把我的课表添加到手机日历” | 日历文件(.ics) |
你的密码不会离开电脑。程序只与 İTÜ 自己的服务端通信。 本项目与伊斯坦布尔技术大学没有官方关联。
3 步完成安装
需要 Python 3.11 或更高版本。如果尚未安装,可以从 python.org 安装。
1. 安装程序
pipx install "itu-mcp[keyring]"
如果没有 pipx,也可以运行 pip install --user "itu-mcp[keyring]"。
2. 保存登录信息并连接到助手
itu-mcp setup
itu-mcp connect
itu-mcp setup 会询问你的 İTÜ 邮箱和密码。输入密码时,屏幕上不会显示,也不会写入任何文件,而是保存到操作系统的钥匙串(Windows 凭据管理器、macOS 钥匙串、Linux 上的 GNOME Keyring 或 KWallet)。
itu-mcp connect 会将服务以无密码方式添加到 Claude Desktop、Claude Code 和 Cursor 的设置中。它不会改动其他设置,并会备份文件。想先查看它将执行什么操作,可以运行 itu-mcp connect --dry-run。如果只想连接一个助手:itu-mcp connect claude-desktop(或 claude-code、cursor)。
我不想使用钥匙串,或者我在使用 Codex
你也可以手动将密码写入助手的设置中。
Claude Code
claude mcp add itu itu-mcp -e [email protected] -e NINOVA_PASSWORD=sifren
Codex CLI
codex mcp add itu --env [email protected] --env NINOVA_PASSWORD=sifren -- itu-mcp
Claude Desktop 和 Cursor 的预设设置文件位于 examples/ 文件夹中。分步说明:docs/installation.md。
3. 提问
重启助手并输入:
Ninova'daki derslerimi listele
如果出现列表,说明安装完成。
没有成功,该怎么办?
先运行:
itu-mcp doctor
每一行都以 OK、UYARI 或 HATA 开头,非 OK 的行下方会写明解决方法。想要同时测试登录,可以运行 itu-mcp doctor --online。
- 如果登录出错,请确认用户名填写的是完整邮箱(
[email protected],而不仅是ad.soyad)。 - 如果找不到命令,请关闭并重新打开终端。安装
pipx后需要打开一个新终端。 - 如果助手看不到工具,请尝试完全关闭并重新打开助手。
- 如果仍然不行,请提交问题,并附上屏幕输出。不要填写密码。
不想提供密码? 课程表、期末考试日期、成绩分布、课程档案、班车时刻表和图书馆目录等公开信息无需密码也能使用。跳过
itu-mcp setup步骤,只运行itu-mcp connect即可。
可以问些什么?
以下是向 Claude Code 提问的示例。你可以用自己的话提问,由助手选择调用哪个工具。输出仅为示例,你看到的会是自己的数据。
|
作业跟进
|
谁教了这门课,课程效果如何?
|
|
选课周
|
先修条件检查
|
|
日常事务
|
成绩和平均分
|
更多灵感:
- “总结 EEF 211E 课程文件中的最新 PDF。”
- “我的导师是谁?实习情况如何?”
- “下载我的成绩单。”
- “BBB 楼现在有空教室吗?”
- “如果我通过 BLG 223E,哪些课程就可以选了?”
- “我还差几门课才能毕业?下学期应该选哪些课?”
- “图书馆有《Introduction to Algorithms》吗?”
- “列出我最近未读的邮件,并总结附件中的 PDF。”
助手的 / 菜单中还提供了现成的工作流:weekly_briefing(每周摘要)、plan_next_term(规划下学期)、registration_week(选课周检查)、check_course_eligibility、research_course 和 gpa_scenario。
常见问题
这是 ITU 的官方应用吗?
不是。这是由学生编写的开源项目,与 ITU 没有官方关联。请仅使用自己的账号。
它会修改我账号中的内容吗?
几乎所有操作都只读取数据。只有两个例外,而且都必须得到你的明确同意才会执行:
- 上传作业。 它会先告诉你要把什么上传到哪里,得到你的确认后才会上传。
- 保存选课草稿。 默认关闭。即使你启用了此功能,如果草稿中有课程将被删除,它也会停止并询问你。
对于这两种操作,如果你的助手支持,程序都会在提交前直接弹出确认窗口,告诉你将写入哪些文件、哪项作业、哪些 CRN,以及哪些课程将从草稿中移除。助手不能通过自行说“我确认”来绕过此窗口。如果你不确认,就不会提交任何内容。
它不会帮你注册课程、退课或发送邮件。
我可以相信它给出的回答吗?
它会直接从 ITU 系统获取数据,不会编造内容。不过,OBS 有时会根据账号返回不同的信息。如果缺少数据,工具会明确告知。在选课、毕业和成绩等重要事项上,始终以 OBS 自己的页面为准。
它支持哪些助手?
任何支持 MCP 的客户端:Claude Code、Claude Desktop、Cursor、Codex 等。对于 ChatGPT 或 Claude.ai 等网页界面,需要安装远程服务,说明见 docs/advanced.md。
有空位时能通知我吗?
部分可以。你可以将已满额班级的 CRN 添加到监视列表(watch_course_sections),之后询问“我关注的班级有空位了吗”,它会告诉你从上次检查以来发生了哪些变化。此操作无需登录。
不过,程序不会在后台运行,也不会自动发送通知。只有在你询问时才会读取名额。如果你想定期跟踪,需要在助手中设置一个定时任务,每隔几分钟询问一次。
工具数量太多,可以减少吗?
可以。工具分为不同组,每个工具的说明都会在对话开始时加载到助手中。关闭你不用的组后,助手就更容易选对工具。
NINOVA_TOOLSETS=ninova,obs,archive # yalnızca bu gruplar açık olsun
NINOVA_DISABLED_TOOLSETS=library,mail # ya da: bunlar dışında her şey açık olsun
工具组:core、ninova、files、obs、registration、portal、planning、public、campus、library、moodle、archive、mail。如果两项都不填写,则所有工具组都会保持开启。运行 itu-mcp --list-toolsets 可查看每个组包含的工具。
需要付费吗?
不需要。本项目采用 MIT 许可证,完全免费。只有在你使用的助手本身收费时,才需要支付相应费用。
工作原理
graph LR
istemci["Claude, Cursor, Codex"] -->|"MCP"| sunucu["İTÜ MCP"]
sunucu --> ninova["Ninova"]
sunucu --> obs["OBS"]
sunucu --> portal["Portal"]
sunucu --> kutuphane["Kütüphane"]
sunucu --> arsiv["Ders Arşivi"]
sunucu --> mail["İTÜ Mail"]
助手收到问题后,会调用 İTÜ MCP 中合适的工具。工具会访问相关的 ITU 系统,并以规整的格式返回答案,然后由助手向你说明。Ninova 和 OBS 使用相同的 ITU 登录信息。不需要密码的工具完全不会使用你的密码。
显示所有工具
| Ninova giriş gerekir | OBS ve Portal giriş gerekir | Herkese açık giriş gerekmez | Planlama ve kütüphane karma | Arşiv giriş gerekmez |
auth_status · list_coursesget_course_* · sync_all_coursesget_upcoming_deadlines · search_contentexport_table · read_resource_text · submit_assignment
|
obs_auth_status · obs_get_profileobs_list_registered_coursesobs_get_registration_draft · obs_save_registration_draftobs_get_elective_group · obs_validate_registration_planobs_get_course_grades · obs_get_attendanceobs_get_advisor · obs_download_transcriptget_cafeteria_menu · obs_get_notificationsobs_get_help_tickets · get_help_ticket
|
get_public_course_schedule · get_public_exam_scheduleobs_get_grade_distributionsearch_itu_directory · search_campus_locationsget_shuttle_schedule · get_sports_facility_hoursget_itu_announcements · get_academic_calendarwatch_course_sections · check_watched_course_sectionsexport_course_schedule_ics · export_exam_schedule_ics
|
obs_calculate_gpa · obs_simulate_cumulative_gpa · calculate_target_gpaestimate_relative_grade · check_course_conflictsfind_open_course_sections · find_empty_classroomsbuild_degree_plan · library_*moodle_* · pool_*search_articles · proquest_search
|
archive_who_taught · archive_course_historyarchive_fill_rate · archive_term_sectionsarchive_search_courses · plan_remaining_coursesarchive_grade_distribution · archive_course_catalogarchive_course_unlocks · archive_search_sectionsarchive_exam_schedule · archive_status
|
İTÜ Mail (salt okunur): mail_status · mail_list_inbox · mail_get_message · mail_get_attachment | ||||
Her aracın ne yaptığı, parametreleri ve sınırları: docs/advanced.md. Kayıt planlama araçları için docs/registration-planning.md, not dağılımları için docs/grade-distribution.md.
Ayarlar (isteğe bağlı)
Çoğu kişinin hiçbir ayara dokunması gerekmez. İstersen şunları ortam değişkeni olarak verebilirsin:
NINOVA_SESSION_PERSIST=1 # girişi hatırla (varsayılan açık)
NINOVA_ALLOW_UPLOADS=1 # ödev yüklemeye izin ver (0 yaparsan kapanır)
NINOVA_OBS_REGISTRATION_WRITES=1 # kayıt taslağı kaydetmeyi aç (varsayılan kapalı)
NINOVA_REQUIRE_ELICITATION=1 # onay penceresi gösteremeyen asistanlarda yazma işlemini reddet
NINOVA_ALLOW_SENSITIVE_OUTPUT=1 # TCKN, telefon, adres ve adların gizlenmeden dönmesine izin ver (varsayılan kapalı)
NINOVA_EXTRA_READ_DIRS=... # asistanın okuyabileceği ek klasörler (tam yol)
NINOVA_EXTRA_DOWNLOAD_DIRS=... # indirmelerin yazılabileceği ek klasörler (tam yol)
NINOVA_MAX_DOWNLOAD_MB=200 # tek indirme için boyut sınırı
NINOVA_TOOLSETS=ninova,obs,archive # yalnızca bu araç gruplarını aç
NINOVA_TRACKING_MAX_AGE_SECONDS=43200 # teslim kaydı bu süreden eskiyse yeniden oku (varsayılan 12 saat)
NINOVA_MAIL_USERNAME=... # mail için ayrı kullanıcı adı
NINOVA_MAIL_PASSWORD=... # mail için ayrı şifre
.env 文件只会在启动服务的文件夹中查找,不会检查上级文件夹。若要使用其他文件,请将完整路径写入 NINOVA_ENV_FILE 变量。该文件夹中的 .env 可以提供用户名和密码等值,但不能更改地址、服务器、文件夹和写入权限等安全相关设置。请在助手的 env 块中,或在 NINOVA_ENV_FILE 指向的文件中设置这些内容。
完整列表见 .env.example 文件和 docs/advanced.md。有关库目录和代理设置,请参阅 docs/library-catalog.md。
安全
| 应该做 | 不要做 |
|---|---|
| 仅使用你自己的 İTÜ 账户 | 不要与任何人分享你的 .env 文件或密码 |
| 上传作业前查看预览 | 不要告诉助手“未经询问就上传” |
| 将公告和邮件内容视为数据 | 不要允许助手遵循公告中的“执行此操作”之类的指令 |
将下载的文件保存在 ~/.ninova_state/downloads 下;如果需要其他文件夹,请通过 NINOVA_EXTRA_DOWNLOAD_DIRS 自行指定 | 不要允许助手将文件保存到任意文件夹,也不要允许它读取你电脑上的任何文件 |
如果要设置远程服务,请配置较长且随机的 NINOVA_REMOTE_API_KEY 和 NINOVA_ALLOWED_HOSTS | 不要通过 NINOVA_REMOTE_ALLOW_UNAUTHENTICATED=1 让服务在没有密钥的情况下暴露到互联网 |
你需要了解的限制:
- 接受地址的工具(
read_page、download_resource等)只接受ninova.itu.edu.tr地址。OBS、Portal 和帮助请求有各自的专用工具。 - OBS 个人资料工具会隐藏 TCKN 和电话号码,帮助请求工具会隐藏人名。即使助手提出请求,只有在你设置了
NINOVA_ALLOW_SENSITIVE_OUTPUT=1后,这些信息才会显示。 - İTÜ Mail 工具只会通过 993 端口连接到
imap.itu.edu.tr服务器。 - 如果远程 HTTP 服务(
itu-mcp-remote)绑定到127.0.0.1以外的地址(包括 Docker 镜像),则必须提供NINOVA_REMOTE_API_KEY和NINOVA_ALLOWED_HOSTS或NINOVA_PUBLIC_BASE_URL,否则服务无法运行,会显示缺少的变量并退出。如果在本地未提供密钥,每次启动时都会生成一个随机密钥,并在屏幕上显示一次。
详情请参阅:docs/security.md 和 docs/advanced.md。
隐私政策(Privacy Policy)
İTÜ MCP 在你的电脑上运行。该项目没有服务器、账户或数据库。
- 收集的数据: 无。项目开发者不会收到任何数据,也不会进行使用情况统计(遥测)。
- 使用和存储: İTÜ 用户名和密码只会从你提供的环境变量中读取,并且只会发送到 İTÜ 的登录页面。会话 Cookie、跟踪记录和你下载的文件都保存在你电脑上的
~/.ninova_state文件夹中。 - 与第三方共享: 工具读取的数据会作为回复传递给你使用的 AI 助手(Claude、ChatGPT 等);这些数据如何处理取决于助手提供方的政策。服务只会向 İTÜ 自有网站和两个公开数据源发送请求:课程档案(
itu-ders.com)以及用于比较先修课程的社区数据集(raw.githubusercontent.com/itu-helper)。不会向这两个数据源发送任何与你账户相关的信息,只会查询课程代码。 - 保留期限: 本地文件会一直保留,直到你将其删除。删除
~/.ninova_state文件夹即可移除所有内容。 - 联系方式: 可通过 GitHub 提交问题,或针对安全问题提交私密报告。
简而言之(英语):服务在本地运行,不收集任何信息,只会将你的 İTÜ 凭据发送到 İTÜ 登录页面,仅在你自己的电脑上的 ~/.ninova_state 中存储会话 Cookie 和下载内容,并且不进行遥测。工具结果会传递给你使用的 AI 助手。
开发
欢迎贡献。如果你发现了错误或有想法,请创建问题。提交代码前,请先阅读贡献指南。
git clone https://github.com/yatuk/itu-mcp.git
cd itu-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
source .venv/bin/activate
pip install -e ".[playwright]"
python -m pytest tests/ -q
python -m ruff check src/ tests/
| 来源 | 链接 |
|---|---|
| 安装 | docs/installation.md |
| 所有工具和高级用法 | docs/advanced.md |
| 安全 | docs/security.md |
| 贡献指南 | CONTRIBUTING.md |
| 更新日志 | CHANGELOG.md |
致谢
本项目基于 Hikmet Gultekin 编写的原始项目 ninova-mcp 构建。它是首个开源、使用凭据的 İTÜ Ninova MCP 服务。
tzi4 贡献了只读 İTÜ Mail 工具、选课规划和成绩分布工具、帮助请求详情,以及 OBS 端的许多修复。感谢。
许可证
MIT。与伊斯坦布尔技术大学没有官方关联。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。