Skip to main content
Glama

BIT101 MCP

Ein lokaler, schreibgeschützter Model Context Protocol (MCP)-Dienst für Studierende der Beijing Institute of Technology. Er wandelt BIT101-Community-Inhalte, Kursbewertungen, persönliche Stundenpläne, Noten und Lexue-Kalender in für Agenten leicht verständliche strukturierte Daten um, sodass du direkt in natürlicher Sprache Fragen stellen kannst.

[!IMPORTANT] Dieses Projekt ist ein inoffizielles Community-Projekt und steht in keiner Verbindung zur Beijing Institute of Technology oder zum offiziellen BIT101. Windows wurde mit den wichtigsten Abläufen auf echter Hardware getestet, Fedora 43 + niri wurde als lauffähig verifiziert; das Projekt befindet sich noch in der MVP-Phase. Bitte lies vor der Verwendung Authentifizierung, Sicherheit und Datenschutz.

Funktionen

  • Zusammenfassen der heutigen BIT101-Beiträge oder Suche nach historischen Diskussionen per Stichwort

  • Abfragen von Kursen, Dozenten und Bewertungen aus vergangenen Jahren

  • Abrufen des Stundenplans für heute, diese Woche, nächste Woche oder ein bestimmtes Semester

  • Abfragen von Noten, Leistungspunkten, Klassen-Durchschnitt und Bestnoten (sofern vom Upstream bereitgestellt)

  • Abfragen von Lexue-Kalenderereignissen für einen zukünftigen Zeitraum

  • Kombinieren von Daten aus verschiedenen Quellen zur Beantwortung von Fragen, z. B. „Wie bewerten andere die Dozenten meiner Kurse im nächsten Semester?“

Alle Tools sind schreibgeschützt. Das Projekt kann keine Beiträge verfassen, liken, kommentieren, Aufgaben abgeben, Noten ändern oder Schuldaten modifizieren.

Related MCP server: MCP-Server-CollageAI

Live-Demo

Die folgenden Screenshots stammen aus echten Aufrufen über die OpenCode-CLI auf Windows. Die konkreten Antworten werden vom verwendeten Modell auf Basis der von MCP zurückgegebenen Daten generiert, geben nicht die Meinung der Projektautoren wieder und können sich mit Modell- und Datenaktualisierungen ändern.

Zusammenfassung der heutigen Beiträge

Der Agent ruft list_today_posts auf, um die Beiträge des Tages zu erhalten, und erstellt dann eine kurze Zusammenfassung anhand von Titel, Inhalt und Interaktionen.

BIT101-Zusammenfassung der heutigen Beiträge

Dozenten- und Kursbewertungen

Der Agent sucht zunächst die zugehörigen Kurse des Dozenten und ruft dann get_course_reviews auf, um Kursmetadaten, Bewertungen, Kommentare und historische Informationen zu aggregieren.

Aggregation von Dozenten- und Kursbewertungen

Diskussionen zu Studienrichtungen

Wenn der Kurskatalog keinen exakten Treffer enthält, kann der Agent weiter in BIT101-Beiträgen suchen und relevante Diskussionen lesen – ein Beispiel für die Verkettung mehrerer MCP-Tools.

Zusammenfassung von Diskussionen zu Studienrichtungen

Lexue-Kalender

Der Agent kann Lexue-Ereignisse innerhalb von 7 bis 90 Tagen abfragen. Ein gültiger Kalender ohne anstehende Aufgaben liefert normalerweise eine leere Liste, statt „keine Aufgaben“ fälschlich als Schnittstellenfehler zu werten.

Abfrage anstehender Lexue-Aufgaben

Vorbereitung vor der Verwendung

Derzeit empfohlene Umgebung:

  • Windows 10/11 oder Linux mit Desktop-Browser und verfügbarem System-Keyring (Fedora 43 + niri getestet)

  • Python 3.11 oder höher

  • uv

  • Ein Client mit lokalem stdio-MCP-Support, z. B. Codex, OpenCode, Cursor oder Claude Code

  • BIT101-Konto

  • Für Stundenplan- und Notenabfragen zusätzlich ein Konto der einheitlichen Authentifizierung der Beijing Institute of Technology; bei manchen Anmeldungen kann eine SMS-Verifizierung erforderlich sein

  • Für Lexue-Abfragen muss einmalig eine private Kalender-Abonnement-URL aus Lexue exportiert werden

Installation

Deinem Agenten mitteilen (empfohlen)

Wenn dein Agent Terminalbefehle ausführen und seine eigene MCP-Konfiguration ändern kann, kannst du ihm direkt den folgenden Text senden:

请帮我安装并配置 BIT101 MCP:
https://github.com/tiny-paris/BIT101-mcp

要求:
1. 先阅读仓库 README,尤其是“认证、安全与隐私”部分,并告诉我它会访问哪些服务。
2. 检查本机是否安装 Python 3.11+、Git 和 uv;缺少时说明后再安装。
3. 优先使用以下命令安装为用户级工具:
   uv tool install "git+https://github.com/tiny-paris/BIT101-mcp.git"
4. 识别我当前使用的 MCP 客户端,将 bit101-mcp 配置为用户级/全局 stdio MCP,
   名称使用 bit101,单次工具执行超时至少设置为 360 秒。
5. 如果找不到命令,运行 uv tool dir --bin,并在 MCP 配置中使用
   bit101-mcp(Windows 为 bit101-mcp.exe)的绝对路径。
6. 重启或重新加载 MCP,验证服务器已连接并能列出工具。
7. 不要在聊天、命令行参数、配置文件或环境变量中向我索要或写入账号、密码、
   短信验证码、Cookie、token 或乐学订阅 URL。需要认证时,只让我在 MCP 自动打开的
   127.0.0.1 临时页面中操作。
8. 不要修改默认上游地址。完成后告诉我修改了哪些配置文件以及验证结果。

Nach Abschluss der Installation durch den Agenten genügt in einem neuen Gespräch die Frage „Fasse die heutigen BIT101-Beiträge zusammen“, um die erste bedarfsgesteuerte Authentifizierung auszulösen.

Installation aus dem Quellcode

Sobald das Repository öffentlich ist, kann Folgendes ausgeführt werden:

git clone https://github.com/tiny-paris/BIT101-mcp.git
cd BIT101-mcp
uv sync --all-groups
uv tool install .

uv tool install . installiert bit101-mcp als benutzerweiten Befehl. Mit dem folgenden Befehl kannst du das ausführbare Verzeichnis von uv anzeigen:

uv tool dir --bin

Wenn der MCP-Client bit101-mcp nicht findet, starte den Client neu oder verwende in der Konfiguration den absoluten Pfad zu bit101-mcp.exe in diesem Verzeichnis.

Nur im Quellcode-Verzeichnis ausführen

Für Entwicklung oder Tests kann der Befehl auch ohne Installation verwendet werden:

uv sync --all-groups
uv run bit101-mcp

Ein stdio-MCP wartet nach dem normalen Start still auf Protokollnachrichten; ein „Einfrieren“ ist normal. Behandle es nicht wie ein normales interaktives Kommando und gib keine Kontodaten oder Passwörter in sein Terminal ein.

[!NOTE] Ein einfaches uvx bit101-mcp wird erst unterstützt, wenn das Projekt auf PyPI veröffentlicht ist. Die aktuelle README setzt nicht voraus, dass ein PyPI-Paket bereits existiert.

Hinweise zu Abhängigkeiten

Das Projekt deklariert 7 direkte Laufzeitabhängigkeiten. Sie sind nicht alle „durch das MCP-Protokoll erzwungen“, sondern jeweils für die aktuell vollständigen Funktionen erforderlich:

Abhängigkeit

Verwendung im Projekt

Derzeit entfernbar?

mcp

MCP-stdio-Server, Tool-Registrierung, Kontext und Protokolltypen

Nein; dies ist die Kernabhängigkeit

httpx

Asynchroner/synchroner HTTPS-Client für BIT101, BIT-Login und Lexue-Kalender

Nein; alle Daten und die Authentifizierung benötigen Netzwerk

keyring

Speichert Sitzungen und Lexue-Abonnement-URLs im Betriebssystem-Schlüsselspeicher

Nein; ohne dies können Sitzungen nicht sicher prozessübergreifend wiederverwendet werden

icalendar

Validierung und Parsing von aus Lexue exportierten ICS/iCalendar-Dateien

Nein; die Lexue-Funktion und der Import beim Start verwenden es

python-dateutil

Expandiert Wiederholungsregeln (RRULE) im Lexue-Kalender

Nein; für wiederkehrende Ereignisse erforderlich

pydantic

MCP-Tool-Parameterbereiche und JSON-Schema, z. B. Beitragsanzahl, Wochenversatz, Abfragetage

Nein; direkt im Quellcode verwendet, und das MCP-SDK basiert ebenfalls darauf

tzdata

Stellt auf Windows die Zeitzonendatenbank Asia/Shanghai für zoneinfo bereit

Nicht empfohlen zu entfernen; sonst können einige Windows/Python-Umgebungen „heute“ und Unterrichtswochen nicht korrekt berechnen

Daher sind für die aktuelle Einzelpaketversion alle 7 Laufzeitabhängigkeiten; funktional gesehen dienen icalendar und python-dateutil jedoch nur Lexue. Falls sie in Zukunft als optionale Funktionen ausgegliedert werden, könnten sie zu zusätzlichen Abhängigkeiten werden. Eine Aufteilung jetzt würde die Installations- und Fehlerkomplexität erhöhen, während der eingesparte Umfang sehr begrenzt ist.

In uv.lock sind außerdem indirekte Abhängigkeiten wie anyio, httpcore, certifi zu sehen; sie werden automatisch von den oben genannten Bibliotheken mitgebracht, sind keine vom Projekt direkt aufgerufenen Top-Level-Komponenten und sollten nicht manuell installiert oder entfernt werden.

Die folgenden Abhängigkeiten dienen nur der Entwicklung und Veröffentlichung und werden nicht als normale Laufzeitabhängigkeiten installiert:

Abhängigkeit

Verwendung

pytest, pytest-asyncio

Automatisierte Tests

ruff

Code- und Formatprüfung

hatchling

Erstellung von Quell- und Wheel-Paketen

MCP-Client konfigurieren

Die erste Schulauthentifizierung kann bis zu einigen Minuten dauern. Daher wird empfohlen, das Timeout für einzelne Tool-Aufrufe auf 360 Sekunden zu setzen. Nach der Konfiguration muss der MCP-Client neu gestartet werden, damit er einen neuen Dienstprozess startet.

Codex

Die Codex-CLI, die Codex-IDE-Erweiterung und der Codex-Host im ChatGPT-Desktop teilen sich die MCP-Konfiguration in config.toml. Offizielle Anleitung siehe Codex-MCP-Dokumentation.

Zuerst über die CLI hinzufügen:

codex mcp add bit101 -- bit101-mcp
codex mcp list

Dann die benutzerweite %USERPROFILE%\.codex\config.toml prüfen und das Tool-Timeout ergänzen:

[mcp_servers.bit101]
command = "bit101-mcp"
tool_timeout_sec = 360

Wenn es nur in einem vertrauenswürdigen Projekt aktiviert werden soll, kann dieselbe Konfiguration in die .codex/config.toml dieses Projekts gelegt werden. Die benutzerweite Konfiguration funktioniert in beliebigen Verzeichnissen und neuen Gesprächen.

Wenn der Befehl nicht im PATH von Codex liegt, kann ein absoluter Pfad verwendet werden:

[mcp_servers.bit101]
command = 'C:\path\to\bit101-mcp.exe'
tool_timeout_sec = 360

OpenCode

Dieses Projekt wurde mit der folgenden traditionellen OpenCode-Konfiguration auf Windows mit echter Hardware getestet. Eine opencode.json im Projektstammverzeichnis gilt nur für dieses Projekt; für die Verwendung in beliebigen Verzeichnissen lege sie in die benutzerweite ~/.config/opencode/opencode.json (unter Windows üblicherweise %USERPROFILE%\.config\opencode\opencode.json).

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bit101": {
      "type": "local",
      "command": ["bit101-mcp"],
      "enabled": true,
      "timeout": 360000
    }
  }
}

Verbindung prüfen:

opencode mcp list

Wenn der Start nur im Quellcode-Verzeichnis möglich ist, liegt das meist daran, dass die Konfiguration einen relativen Befehl verwendet und keine globale Installation vorliegt. Installiere bit101-mcp oder ändere command auf den absoluten Pfad von .venv\Scripts\bit101-mcp.exe.

OpenCode V2 hat eine andere Konfigurationsstruktur: Dienste liegen unter mcp.servers, das Ausführungs-Timeout unter mcp.timeout.execution. Maßgeblich ist die offizielle OpenCode-MCP-Dokumentation:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "timeout": {
      "execution": 360000
    },
    "servers": {
      "bit101": {
        "type": "local",
        "command": ["bit101-mcp"]
      }
    }
  }
}

Cursor

Gemäß der Cursor-MCP-Dokumentation liegt die globale Konfiguration in ~/.cursor/mcp.json, die Projektkonfiguration in .cursor/mcp.json:

{
  "mcpServers": {
    "bit101": {
      "command": "bit101-mcp",
      "args": []
    }
  }
}

Nach dem Speichern Cursor neu starten und in der Liste der verfügbaren Tools des Agenten prüfen, dass bit101 aktiviert ist.

Claude Code

Gemäß der Claude-Code-MCP-Dokumentation einen benutzerweiten stdio-Dienst hinzufügen:

claude mcp add --scope user bit101 -- bit101-mcp
claude mcp list

Allgemeine stdio-Konfiguration

Andere MCP-Clients müssen lediglich einen lokalen stdio-Prozess konfigurieren:

{
  "command": "bit101-mcp",
  "args": []
}

Schreibe keine Kontodaten, Passwörter, Cookies, Tokens oder Lexue-URLs in die MCP-Konfiguration, Umgebungsvariablen oder Tool-Parameter.

Erste Schritte

Nach der Konfiguration kannst du direkt Fragen im Agenten-Gespräch stellen; ein manueller Start eines Hintergrunddienstes ist nicht erforderlich. Zum Beispiel:

BIT101-Community und Kurse

总结一下今天 BIT101 都有哪些帖子。
查找最近关于“数据结构”的讨论。
如何评价某某老师的某门课?请区分普遍评价和少数意见。
查找“特立自动化”相关讨论,并列出信息来源。

Stundenplan und Noten

我今天有什么课?
我下周有什么课?按实际日期和开始时间排序。
列出本学期完整课表。
列出我的所有成绩,包括课程、学期、学分、成绩、班级平均分和最高分。

Bei Fragen zu „diese/nächste Woche“ berechnet der Server die genaue Kalenderwoche anhand des aktuellen Datums und liefert vollständige Zeiten wie starts_at, ends_at; der Agent muss Unterrichtswochen oder Zeitfenster nicht selbst erraten.

Lexue

未来 14 天有哪些乐学任务?按截止时间排序。
看看未来 30 天的乐学日历。

Verfügbare Tools

Tool

Funktion

Erforderliche Authentifizierung

list_today_posts

Ruft BIT101-Beiträge des aktuellen Tages in der Zeitzone Shanghai ab

BIT101

search_posts

Sucht BIT101-Beiträge

BIT101

get_post

Liest einen bestimmten Beitrag und zugehörige Informationen

BIT101

search_courses

Sucht Kurse und Dozenten

BIT101

get_course_reviews

Aggregiert Kurs-, Dozenten-, Bewertungs- und historische Kursinformationen

BIT101

get_today_schedule

Ruft die Kurse des heutigen Tages ab

Einheitliche Schulauthentifizierung

get_week_schedule

Ruft den datierten Stundenplan für diese, nächste oder eine relative Woche ab

Einheitliche Schulauthentifizierung

get_schedule

Ruft den vollständigen Stundenplan des aktuellen oder eines bestimmten Semesters ab

Einheitliche Schulauthentifizierung

get_scores

Ruft Noten und verfügbare Klassenstatistiken ab

Einheitliche Schulauthentifizierung

get_upcoming_lexue_tasks

Parst Lexue-Kalenderereignisse der nächsten 1–90 Tage

Schulauthentifizierung + Lexue-Abonnement-URL

Erfolgreiche Ergebnisse haben einheitlich folgende Form:

{
  "ok": true,
  "data": {}
}

Fehlerergebnisse enthalten keine Upstream-Stapelverfolgungen oder Authentifizierungsinformationen:

{
  "ok": false,
  "error": {
    "code": "UPSTREAM_UNAVAILABLE",
    "service": "bit101",
    "message": "BIT101 is temporarily unavailable.",
    "retryable": true
  }
}

Technische Grundlagen

Der Kern ist in vier Schichten gegliedert:

  1. MCP-Tool-Schicht: Setzt nur Benutzerkonzepte wie Beiträge, Kurse, Stundenpläne, Noten und Aufgaben aus; keine Cookies, Challenge-Tokens oder interne Dienstkennungen.

  2. Client-Schicht: Behandelt BIT101-API und Schuldatengateway getrennt; bei Anfragefehlern wird geprüft, ob die Sitzung abgelaufen ist, und genau ein wiederherstellbarer Wiederholungsversuch unternommen.

  3. Standardisierungsschicht: Wandelt verschiedene Upstream-Formate in stabile, JSON-freundliche Felder um; zuständig für Shanghai-Zeitzonendaten, Unterrichtswochen, Kurszeiten, Noten und ICS-Ereignisparsing.

  4. Authentifizierungs- und Speicherschicht: Öffnet nur bei Bedarf eine lokale Seite; Passwörter gelangen nicht in MCP-Parameter; nach Erfolg wird nur die wiederverwendbare Sitzung gespeichert.

MCP verwendet den stdio-Transport. Die Standardausgabe sendet nur MCP-Protokolldaten, Laufzeitprotokolle werden ausschließlich auf die Standardfehlerausgabe geschrieben, damit Protokolle die Protokollkommunikation nicht stören.

Authentifizierungsablauf

Warum kann die BIT101-Anmeldung im Browser nicht direkt wiederverwendet werden?

Browser-Cookies gehören zum eigenen Sicherheitsbereich des Browsers; MCP ist ein unabhängiger lokaler Prozess. Das Projekt liest bewusst nicht die Cookie-Datenbank von Chrome/Edge und verlangt auch keine Browser-Erweiterung. Das bedeutet eine zusätzliche Erstauthentifizierung, vermeidet aber, dass MCP alle Browser-Anmeldedaten des Benutzers durchsucht.

Ein neues Agenten-Gespräch löscht den Anmeldestatus nicht. Beim MCP-Start werden gespeicherte Sitzungen gelesen und validiert; eine erneute Anmeldung erfolgt nur, wenn die Sitzung nicht existiert, der Upstream sie als ungültig einstuft, die temporäre Challenge des Authentifizierungsgateways abgelaufen ist oder der System-Schlüsselspeicher nicht verfügbar ist.

BIT101

Beim ersten Aufruf eines Community-Tools:

  1. MCP startet eine temporäre Seite auf einem zufälligen Port von 127.0.0.1.

  2. Der Benutzer gibt auf der lokalen Seite Matrikelnummer und BIT101-Passwort ein.

  3. Der lokale Prozess verarbeitet das Passwort gemäß dem bestehenden BIT101-Anmeldeprotokoll und sendet es per HTTPS an die BIT101-API.

  4. Nach erfolgreicher Anmeldung wird nur die zurückgegebene BIT101-Sitzung im System-Schlüsselspeicher abgelegt; das ursprüngliche Passwort wird nicht dauerhaft gespeichert.

  5. Die temporäre Seite wird geschlossen, der ursprüngliche Tool-Aufruf wird fortgesetzt.

Schulstundenplan und Noten

Stundenplan und Noten stammen aus der persönlichen Datenschnittstelle der Schule und sind nicht derselbe „Schlüssel“ wie die BIT101-Community-Sitzung. Beim ersten Aufruf sammelt die lokale Seite Konto, Passwort der einheitlichen Authentifizierung sowie bei Bedarf den SMS-Code und übergibt sie per HTTPS an das bestehende BIT-Login-REST-Gateway. MCP speichert die vom Gateway zurückgegebene kurzlebige Challenge-Sitzung, nicht das Schulpasswort.

Lexue-Kalender

Das aktuelle BIT-Login-REST-Gateway bietet keine Lexue-Kalenderschnittstelle, die dieses Projekt aufrufen könnte, und das Projekt implementiert auch das Schul-CAS/SSO nicht neu. Daher muss der Benutzer im MVP auf der Seite Kalender → Kalender exportieren in Lexue eine private Abonnement-URL erzeugen und sie einmal in der lokalen Verbindungsseite einfügen.

Die Verbindungsseite lädt den iCalendar-Inhalt tatsächlich herunter und validiert ihn; nur ein gültiges Abonnement zeigt Connected an. Eine normale calendar/view.php-Seite wird abgelehnt. Die Abonnement-URL gelangt nicht in Agenten- oder MCP-Tool-Ergebnisse und wird im System-Schlüsselspeicher abgelegt. Ein gültiger Kalender ohne anstehende Ereignisse liefert eine leere Liste.

Authentifizierung, Sicherheit und Datenschutz

Das Wichtigste zuerst

Dieses Projekt verringert das Risiko, dass Passwörter in Agenten, Chatverläufe und Protokolle gelangen, kann aber keine „Null-Risiko“-Garantie geben. Die Installation eines lokalen MCP entspricht der Installation eines netzwerkfähigen lokalen Programms; der Benutzer muss dem Projektquellcode, den Installationspaketen, den Abhängigkeiten und den konfigurierten entfernten Authentifizierungsdiensten vertrauen.

Besonders zu unterscheiden sind zwei Aussagen:

  • Passwörter werden nicht an den Agenten/LLM gesendet: Das ist eine explizit umgesetzte Grenze dieses Projekts.

  • Passwörter existieren nur auf diesem Rechner: Das ist nicht der Fall. Das Passwort der einheitlichen Schulauthentifizierung muss vom lokalen MCP per HTTPS an das konfigurierte entfernte BIT-Login-Gateway übermittelt werden, um die Authentifizierung abzuschließen.

Welche Informationen gehen wohin?

Information

Wer hat Zugriff

Wird dauerhaft gespeichert

BIT101-Passwort

Lokaler Authentifizierungscode; nach dem Upstream-Protokoll verarbeitet und an die BIT101-API übermittelt

Passwort wird nicht gespeichert

Passwort der einheitlichen Schulauthentifizierung

Lokaler Authentifizierungscode und konfiguriertes BIT-Login-Gateway

Wird nicht gespeichert

SMS-Verifizierungscode

Lokaler Authentifizierungscode und BIT-Login-Gateway

Wird nicht gespeichert

BIT101/Schulsitzung

Lokales MCP und entsprechender Upstream

Betriebssystem-Schlüsselspeicher

Private Lexue-Abonnement-URL

Lokales MCP und der bit.edu.cn-Kalenderdienst

Betriebssystem-Schlüsselspeicher

Beiträge, Kurse, Stundenpläne, Noten, Lexue-Ereignisse

MCP und aktueller Agent

Gelangt in den Kontext des aktuellen Agenten

Standardmäßige Upstream-Adressen:

  • BIT101-API: https://bit101.flwfdd.xyz

  • BIT-Login-REST: https://login.bit101.flwfdd.xyz

HTTPS verhindert allgemeines Netzwerk-Mithören, ersetzt aber nicht das Vertrauen in den Serverbetreiber. Benutzer, die Bedenken haben, dass das Schulpasswort ein entferntes Gateway passiert, sollten die Stundenplan- und Noten-Tools nicht aktivieren.

Umgesetzte Schutzmaßnahmen

  • Der temporäre HTTP-Dienst bindet nur an 127.0.0.1 und verwendet einen vom Betriebssystem zugewiesenen zufälligen Port.

  • Jede Authentifizierung verwendet einen 256-Bit-Zufalls-state und einen Vergleich in konstanter Zeit gegen gefälschte Übermittlungen.

  • Die Seite deaktiviert Cache, externe Inhalte, iframes, Referrer und MIME-Erraten.

  • Die Seite beendet das Lauschen nach Erfolg, Abbruch oder Timeout.

  • Passwörter und Verifizierungscodes werden nicht in Dateien geschrieben; der Code räumt die entsprechenden Variablenreferenzen so bald wie möglich nach der Anfrage auf.

  • Sitzungen werden über das Python-keyring im Betriebssystem-Schlüsselspeicher abgelegt (Windows Credential Manager oder Linux Secret Service/Keyring-Backend); ist dies nicht verfügbar, werden sie nur im Speicher des aktuellen Prozesses gehalten, ohne Rückfall auf Klartextdateien.

  • Protokolle maskieren Passwörter, Verifizierungscodes, Cookies, Bearer-Tokens und Authorization-Header.

  • Die Lexue-URL muss HTTPS unter der Domäne bit.edu.cn verwenden und gültiges iCalendar zurückgeben.

  • Alle Tools sind als schreibgeschützt markiert und bieten keine Möglichkeit, Schul- oder Community-Daten zu ändern.

Worauf der Benutzer achten sollte

  • Nur aus vertrauenswürdigen Repositories oder vertrauenswürdigen Veröffentlichungsseiten installieren und nach Möglichkeit Quellcode und Veröffentlichungshashes prüfen.

  • Die lokale Authentifizierungsseiten-URL sollte mit http://127.0.0.1:<zufälliger Port>/connect beginnen.

  • Niemals Passwörter, Verifizierungscodes, Cookies, Tokens oder Lexue-URLs im Agenten-Chatfeld, in MCP-Parametern, Issues oder Protokollen senden.

  • Persönliche Schulkonten nicht auf nicht vertrauenswürdigen öffentlichen Computern verwenden.

  • Die Lexue-Abonnement-URL ist ein privater Link, der „beim Besitz lesbar“ ist; sie sollte wie ein Passwort geschützt werden. Bei Verdacht auf Offenlegung in Lexue neu erzeugen.

  • Bei Noten- und Stundenplanabfragen werden die entsprechenden Daten dem aktuellen Agenten bereitgestellt. Entscheide anhand der Datenrichtlinie des verwendeten Modells und Clients selbst, ob du sie aktivierst.

Lokale Sitzungen löschen

Unter Windows Systemsteuerung → Anmeldeinformationsverwaltung → Windows-Anmeldeinformationen öffnen; unter Linux das Secret-Service-Verwaltungstool der aktuellen Desktop-Umgebung (üblicherweise GNOME Keyring oder KDE Wallet). Die folgenden Einträge mit dem Dienstnamen bit101-mcp löschen:

  • bit101-session

  • school-session

  • lexue-calendar-url

Nach dem Löschen authentifiziert sich der nächste Aufruf des entsprechenden Tools erneut. Das Deinstallieren des Python-Pakets löscht diese Systemanmeldeinformationen nicht automatisch. Wenn unter Linux kein Keyring-Backend verfügbar ist, wird die Sitzung nur im Speicher des aktuellen Prozesses gehalten; nach einem MCP-Neustart ist eine erneute Anmeldung erforderlich.

Konfigurationsoptionen

Nicht-geheime Parameter dürfen nur über Umgebungsvariablen konfiguriert werden:

Variable

Standardwert

Verwendung

BIT101_API_URL

https://bit101.flwfdd.xyz

BIT101-API-Basisadresse

BIT101_SCHOOL_API_URL

https://login.bit101.flwfdd.xyz

BIT-Login-REST-Basisadresse

BIT101_REQUEST_TIMEOUT

30

Timeout für einzelne Upstream-HTTP-Anfragen, in Sekunden

BIT101_AUTH_TIMEOUT

300

Maximale Wartezeit der lokalen Authentifizierungsseite, in Sekunden

Anmeldeinformationen und Sitzungen können nicht über Tool-Parameter oder Umgebungsvariablen konfiguriert werden. Das Ändern der Upstream-Adresse bedeutet, einem neuen Dienstbetreiber zu vertrauen; bitte vorsichtig verwenden.

Häufig gestellte Fragen

Muss der Agent im Projektverzeichnis gestartet werden?

Nein. Nach der Installation des Befehls mit uv tool install . und dem Eintrag des MCP in die benutzerweite Client-Konfiguration kann er aus beliebigen Verzeichnissen verwendet werden. Die opencode.json, .cursor/mcp.json oder .codex/config.toml im Projektstammverzeichnis gelten nur für das jeweilige Projekt.

Warum öffnet sich beim ersten Mal ein Browser?

Die Authentifizierung wird bedarfsgesteuert ausgelöst. Die erste Beitragsabfrage benötigt eine BIT101-Sitzung; die erste Stundenplan-/Notenabfrage benötigt eine Schulsitzung; die erste Lexue-Abfrage benötigt zusätzlich ein privates Kalenderabonnement. Passwörter und Abonnement-URLs dürfen nicht über den Chat laufen, daher wird eine temporäre lokale Seite zur Erfassung verwendet.

Warum verlangt MCP eine Anmeldung, obwohl die BIT101-Webseite bereits angemeldet ist?

Die Websitzung liegt in Browser-Cookies. MCP liest keine Browser-Cookies und muss daher eine eigene minimale Sitzung aufbauen. Das opfert den Komfort der einmaligen Erstanmeldung, vermeidet aber den direkten Zugriff auf alle Browser-Anmeldedaten.

Warum ist in neuen Gesprächen gelegentlich eine erneute Anmeldung nötig?

Neue Gespräche löschen Sitzungen nicht aktiv, aber MCP validiert die Upstream-Sitzung. Eine erneute Anmeldung erfolgt, wenn die Sitzung abgelaufen ist, vom Server widerrufen wurde, die Gateway-Challenge ungültig ist oder der System-Schlüsselspeicher nicht verfügbar ist. Wenn direkt nach erfolgreicher Anmeldung und sofortigem Neustart erneut gefragt wird, prüfe, ob im System-Schlüsselspeicher Einträge für bit101-mcp existieren.

Lexue zeigt Connected, warum gibt es keine Aufgaben?

Wenn die Abonnement-URL die iCalendar-Validierung besteht, bedeutet eine leere Liste in der Regel nur, dass im gewählten Zeitraum tatsächlich keine Ereignisse liegen. Du kannst den Abfragezeitraum von 7 auf 30 Tage erweitern, um das zu bestätigen.

Warum wirken die Schultools langsam?

Die erste Schulauthentifizierung, SMS-Verifizierung und der Abruf von Notendetails können länger dauern. Setze das MCP-Tool-Timeout auf 360 Sekunden und warte, bis der aktuelle Aufruf abgeschlossen ist; starte nicht mehrere Schultools gleichzeitig neu.

Der Befehl bit101-mcp wird nicht gefunden?

Führe uv tool dir --bin aus, um das Installationsverzeichnis zu finden, füge es zum PATH hinzu oder trage in der MCP-Konfiguration direkt den absoluten Pfad zu bit101-mcp.exe ein. Starte den Client nach der Änderung neu.

Fehlercodes

Code

Bedeutung

BIT101_AUTH_REQUIRED

Eine BIT101-Sitzung muss aufgebaut werden

SCHOOL_AUTH_REQUIRED

Eine Schulsitzung muss aufgebaut werden

AUTH_EXPIRED

Die gespeicherte Sitzung ist abgelaufen

AUTH_FAILED

Die Anmeldung war nicht erfolgreich oder die Anmeldeinformationen wurden vom Upstream nicht akzeptiert

AUTH_TIMEOUT

Timeout beim Warten auf die lokale Authentifizierungsseite

LEXUE_SETUP_REQUIRED

Das Lexue-Abonnement existiert nicht, ist ungültig oder kein gültiger Kalender

NOT_FOUND

Der angegebene Beitrag oder Datensatz existiert nicht

UPSTREAM_UNAVAILABLE

Der Upstream-Dienst ist vorübergehend nicht verfügbar; später erneut versuchen

INVALID_RESPONSE

Der Upstream hat unerkennbare Daten zurückgegeben

Alle Fehler werden bereinigt; es werden keine Passwörter, Cookies, Tokens, Authorization-Header, rohe Stapelverfolgungen oder vollständige sensible Anfragen zurückgegeben.

Entwicklung

Projektstruktur:

src/bit101_mcp/
├── server.py           # MCP 入口、工具注册和服务器说明
├── tools/              # Agent 可见的只读工具
├── clients/            # BIT101 与学校上游客户端
├── auth/               # 本地浏览器认证、状态机和凭据存储
├── models/             # 数据标准化、周次和 ICS 解析
└── logging_utils.py    # stderr 日志和秘密脱敏

Entwicklungsabhängigkeiten installieren und Prüfungen ausführen:

uv sync --all-groups
uv run ruff check .
uv run ruff format --check .
uv build

Vor der Veröffentlichung validieren die Maintainer mit Mock-Tests, die nicht mit dem öffentlichen Repository verteilt werden, Datenstandardisierung, Authentifizierungsstatus, Geheimnis-Maskierung und Wiederholungsabläufe; diese Tests benötigen keine echten Konten. Integrationstests mit echten Konten bleiben manuell und optional; Testanmeldeinformationen sollten nicht in das Repository oder CI eingecheckt werden.

Danksagungen

Dank an das BIT101-Projekt und alle seine Mitwirkenden. Die von älteren Studierenden langjährig gepflegte Community, Kursbewertungen, Campus-Datenschnittstellen und Authentifizierungswerkzeuge haben das Campusleben der Studierenden erheblich erleichtert und bilden eine wichtige Grundlage für dieses Projekt.

Dieses Projekt bezieht sich insbesondere auf folgende Projekte und nutzt deren Schnittstellen und Dokumentationen:

BIT101 MCP ist ein unabhängig entwickelter inoffizieller MCP-Client, der über Netzwerkschnittstellen mit den zugehörigen Diensten interagiert. Die MIT-Lizenz dieses Repositories gilt nur für den originären Code dieses Projekts und ersetzt oder ändert keine Lizenzen der Upstream-Projekte.

Aktuelle Einschränkungen

  • Windows wurde mit den wichtigsten Abläufen auf echter Hardware getestet; Fedora 43 + niri wurde als lauffähig verifiziert, andere Linux-Desktop-Umgebungen wurden noch nicht einzeln verifiziert.

  • Lexue erfordert weiterhin das einmalige manuelle Einfügen einer exportierten privaten Kalender-Abonnement-URL.

  • Die Gültigkeitsdauer der Schulsitzung wird vom Upstream-Gateway bestimmt; eine dauerhafte Anmeldung ohne erneute Anmeldung kann nicht garantiert werden.

  • Notendurchschnitt und Bestnoten hängen davon ab, ob der Upstream für jeden Kurs Details bereitstellt.

  • Es wurden noch kein PyPI-Paket und keine eigenständige Windows-ausführbare Datei veröffentlicht.

  • Es werden keine Schreiboperationen angeboten.

Lizenz

Dieses Projekt verwendet die MIT License. Sie sind willkommen, es unter Beibehaltung der Urheberrechts- und Lizenzhinweise zu verwenden, zu modifizieren, zu verteilen und Verbesserungen einzureichen.

Beiträge

Issues und Pull Requests sind willkommen. Bitte geben Sie beim Melden eines Problems Folgendes an:

  • Betriebssystem, Python-, uv- und MCP-Client-Versionen

  • Verwendete Toolnamen und maskierte Fehlercodes

  • Ob eine lokale Authentifizierungsseite angezeigt wird

  • Reproduzierbare Schritte

Bitte übermitteln Sie keine Studentenausweisnummern, Passwörter, Verifizierungscodes, Cookies, Tokens, vollständige Anfrage-Header, 乐学-URLs oder andere persönliche Informationen.

A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • Read-only China A-share data for AI agents: market, limit-up, capital flow and disclosures.

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.

View all MCP Connectors

Latest Blog Posts

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/tiny-paris/BIT101-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server