Skip to main content
Glama

BIT101 MCP

베이징이공대학(北京理工大学) 학생을 위한 로컬, 읽기 전용 Model Context Protocol(MCP) 서비스입니다. BIT101 커뮤니티 콘텐츠, 강의 평가, 개인 시간표, 성적, 러쉐(乐学) 캘린더를 Agent가 이해하기 쉬운 구조화된 데이터로 변환하여 자연어로 직접 질문할 수 있게 해줍니다.

[!IMPORTANT] 이 프로젝트는 비공식 커뮤니티 프로젝트로, 베이징이공대학 및 BIT101 공식과는 아무런 관련이 없습니다. Windows에서 주요流程 실기 테스트를 완료했고, Fedora 43 + niri에서 실행 가능함을 확인했습니다. 프로젝트는 아직 MVP 단계입니다. 사용 전에 인증, 보안 및 개인정보 보호를 읽어주세요.

할 수 있는 일

  • 오늘의 BIT101 게시물 요약 또는 키워드로 과거 토론 검색

  • 강의, 교수, 역대 학생 평가 조회

  • 오늘, 이번 주, 다음 주 또는 지정 학기의 시간표 조회

  • 성적, 학점, 학급 평균 및 최고점 조회(상위 서비스가 제공하는 경우)

  • 향후 기간의 러쉐 캘린더 이벤트 조회

  • 서로 다른 출처의 데이터를 조합하여 "다음 학기 강의 교수에 대한 사람들의 평가는 어떤가요?" 같은 질문에 답변

모든 도구는 읽기 전용입니다. 프로젝트는 게시, 좋아요, 댓글, 과제 제출, 성적 변경 또는 학교 데이터 수정을 할 수 없습니다.

Related MCP server: MCP-Server-CollageAI

실기 데모

다음 스크린샷은 Windows의 OpenCode cli 실기 호출 결과입니다. 구체적인 답변은 사용된 모델이 MCP가 반환한 데이터를 기반으로 생성한 것으로, 프로젝트 작성자의 의견을 대변하지 않으며 모델 및 데이터 업데이트에 따라 변경될 수 있습니다.

오늘의 게시물 요약

Agent가 list_today_posts를 호출하여 당일 게시물을 가져온 후 제목, 내용, 상호작용 현황을 바탕으로 간단한 요약을 생성합니다.

BIT101 오늘의 게시물 요약

교수 및 강의 평가

Agent가 먼저 교수에 해당하는 강의를 검색한 후 get_course_reviews를 호출하여 강의 메타데이터, 평점, 리뷰 및 과거 정보를 집계합니다.

교수 및 강의 평가 집계

전공 방향 토론

강의 라이브러리에 완전히 일치하는 항목이 없을 때 Agent는 BIT101 게시물을 계속 검색하고 관련 토론을 읽을 수 있으며, 여러 MCP 도구를 연속으로 사용하는 효과를 보여줍니다.

전공 방향 관련 토론 요약

러쉐 캘린더

Agent는 7~90일 내의 러쉐 이벤트를 조회할 수 있습니다. 유효한 캘린더에 최근 작업이 없으면 "작업 없음"을 인터페이스 오류로 오판하지 않고 정상적으로 빈 목록을 반환합니다.

러쉐 최근 작업 조회

사용 전 준비

현재 권장 환경:

  • Windows 10/11, 또는 데스크톱 브라우저와 사용 가능한 시스템 keyring이 있는 Linux(Fedora 43 + niri 실측 완료)

  • Python 3.11 이상

  • uv

  • 로컬 stdio MCP를 지원하는 클라이언트(예: Codex, OpenCode, Cursor 또는 Claude Code)

  • BIT101 계정

  • 시간표, 성적 조회 시 베이징이공대학 통합 인증 계정도 필요합니다. 일부 로그인은 SMS 인증이 필요할 수 있습니다.

  • 러쉐 조회 시 러쉐에서 개인 캘린더 구독 주소를 한 번 내보내야 합니다.

설치

Agent에게 지시하기(권장)

Agent가 터미널 명령을 실행하고 자신의 MCP 구성을 수정할 수 있다면, 다음 내용을 그대로 보내면 됩니다:

请帮我安装并配置 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. 不要修改默认上游地址。完成后告诉我修改了哪些配置文件以及验证结果。

Agent가 설치를 완료한 후 새 대화에서 "오늘의 BIT101 게시물 요약"을 물어보면 최초 필요 시 인증이 트리거됩니다.

소스에서 설치

저장소가 공개된 후 다음을 실행할 수 있습니다:

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

uv tool install .bit101-mcp를 사용자 수준 명령으로 설치합니다. 다음 명령으로 uv의 실행 파일 디렉터리를 확인할 수 있습니다:

uv tool dir --bin

MCP 클라이언트가 bit101-mcp를 찾지 못하면 클라이언트를 재시작하거나, 구성에서 해당 디렉터리의 bit101-mcp.exe 절대 경로를 사용하세요.

소스 디렉터리 내에서만 실행

개발 또는 테스트 시 명령을 설치하지 않고도 실행할 수 있습니다:

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

stdio MCP는 정상적으로 시작되면 조용히 프로토콜 메시지를 기다리므로 "멈춘 것처럼" 보이는 것이 정상입니다. 일반 대화형 명령으로 취급하지 말고, 터미널에 계정이나 비밀번호를 입력하지 마세요.

[!NOTE] 프로젝트가 PyPI에 게시된 후에야 간단한 uvx bit101-mcp가 지원됩니다. 현재 README는 PyPI 패키지가 이미 존재한다고 가정하지 않습니다.

의존성 설명

프로젝트는 7개의 런타임 직접 의존성을 선언합니다. 이들은 모두 "MCP 프로토콜 필수 요구사항"이 아니라 현재 전체 기능에 각각 필요한 구성 요소입니다:

의존성

프로젝트 내 용도

현재 삭제 가능 여부

mcp

MCP stdio 서버, 도구 등록, 컨텍스트 및 프로토콜 유형

불가능; 핵심 의존성

httpx

BIT101, BIT-Login 및 러쉐 캘린더에 접근하는 비동기/동기 HTTPS 클라이언트

불가능; 모든 데이터와 인증에 네트워크 필요

keyring

세션 및 러쉐 구독 주소를 운영 체제 자격 증명 저장소에 저장

불가능; 삭제 시 프로세스 간 세션 재사용을 안전하게 할 수 없음

icalendar

러쉐에서 내보낸 ICS/iCalendar 검증 및 파싱

불가능; 러쉐 기능 및 시작 시 가져오기에 사용

python-dateutil

러쉐 캘린더의 반복 규칙(RRULE) 확장

불가능; 주기 이벤트에 필요

pydantic

MCP 도구 매개변수 범위 및 JSON 스키마(예: 게시물 수, 주 오프셋, 조회 일수)

불가능; 소스에서 직접 사용하며 MCP SDK도 이를 기반으로 함

tzdata

Windows에서 zoneinfoAsia/Shanghai 시간대 데이터베이스 제공

삭제 비권장; 그렇지 않으면 일부 Windows/Python 환경에서 "오늘" 및 학사 주를 올바르게 계산할 수 없음

따라서 현재 단일 패키지 버전에서는 이 7개 모두 실행 의존성입니다. 그러나 기능적으로 icalendarpython-dateutil은 러쉐에만 사용되므로, 향후 선택 기능으로 분리하면 추가 의존성으로 변경할 수 있습니다. 지금 분리하면 설치 및 오류 보고 복잡성이 증가하고 절약되는 용량도 제한적입니다.

uv.lock에는 anyio, httpcore, certifi 등의 간접 의존성도 보이는데, 이들은 위 라이브러리가 자동으로 가져온 것으로 프로젝트가 직접 호출하는 최상위 구성 요소가 아니므로 별도로 수동 설치하거나 삭제해서는 안 됩니다.

다음 의존성은 개발 및 배포에만 사용되며 일반 실행 의존성으로 설치되지 않습니다:

의존성

용도

pytest, pytest-asyncio

자동화 테스트

ruff

코드 검사 및 형식 검사

hatchling

소스 패키지 및 wheel 빌드

MCP 클라이언트 구성

최초 학교 인증은 최대 몇 분이 걸릴 수 있으므로 단일 도구 호출 타임아웃을 360초로 설정하는 것이 좋습니다. 구성 완료 후 MCP 클라이언트를 재시작하여 새 서비스 프로세스를 시작해야 합니다.

Codex

Codex CLI, Codex IDE 확장 및 ChatGPT 데스크톱의 Codex 호스트는 config.toml의 MCP 구성을 공유합니다. 공식 문서는 Codex MCP 문서를 참조하세요.

먼저 CLI로 추가:

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

그런 다음 사용자 수준 %USERPROFILE%\.codex\config.toml을 확인하고 도구 타임아웃을 보완:

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

특정 신뢰할 수 있는 프로젝트에서만 활성화하려면 동일한 구성을 해당 프로젝트의 .codex/config.toml에 넣을 수 있습니다. 사용자 수준 구성은 모든 디렉터리와 새 대화에서 사용할 수 있습니다.

명령이 Codex의 PATH에 없으면 절대 경로로 변경할 수 있습니다:

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

OpenCode

이 프로젝트는 아래의 기존 OpenCode 구성으로 Windows 실기 테스트를 완료했습니다. 프로젝트 루트의 opencode.json은 해당 프로젝트에만 적용됩니다. 모든 디렉터리에서 사용하려면 사용자 수준 ~/.config/opencode/opencode.json에 넣으세요(Windows에서는 일반적으로 %USERPROFILE%\.config\opencode\opencode.json에 해당).

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

연결 확인:

opencode mcp list

소스 디렉터리에서만 시작할 수 있다면 일반적으로 구성이 상대 명령을 사용하고 전역 설치가 없기 때문입니다. bit101-mcp를 설치하거나 command.venv\Scripts\bit101-mcp.exe의 절대 경로로 변경하면 됩니다.

OpenCode V2의 구성 구조는 다르며, 서비스는 mcp.servers 아래에 있고 실행 타임아웃은 mcp.timeout.execution에 있습니다. OpenCode MCP 공식 문서를 기준으로 하세요:

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

Cursor

Cursor MCP 문서에 따라 전역 구성은 ~/.cursor/mcp.json에, 프로젝트 구성은 .cursor/mcp.json에 둡니다:

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

저장 후 Cursor를 재시작하고 Agent의 사용 가능한 도구 목록에서 bit101이 활성화되었는지 확인하세요.

Claude Code

Claude Code MCP 문서에 따라 사용자 수준 stdio 서비스를 추가하세요:

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

일반 stdio 구성

다른 MCP 클라이언트는 로컬 stdio 프로세스 하나만 구성하면 됩니다:

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

계정, 비밀번호, Cookie, 토큰 또는 러쉐 URL을 MCP 구성, 환경 변수 또는 도구 매개변수에 작성하지 마세요.

사용 시작

구성 완료 후 Agent 대화에서 직접 질문하면 되며, 백그라운드 서비스를 수동으로 시작할 필요가 없습니다. 예:

BIT101 커뮤니티 및 강의

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

시간표 및 성적

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

"이번 주/다음 주"를 물어보면 서버가 현재 날짜를 기준으로 정확한 주차를 계산하고 starts_at, ends_at 등의 전체 시간을 반환합니다. Agent가 학사 주나 교시 시간을 직접 추측할 필요가 없습니다.

러쉐

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

사용 가능한 도구

도구

역할

필요한 인증

list_today_posts

상하이 시간대 기준 당일 게시된 BIT101 게시물 가져오기

BIT101

search_posts

BIT101 게시물 검색

BIT101

get_post

지정 게시물 및 관련 정보 읽기

BIT101

search_courses

강의 및 교수 검색

BIT101

get_course_reviews

강의, 교수, 리뷰 및 과거 강의 정보 집계

BIT101

get_today_schedule

오늘의 강의 가져오기

학교 통합 인증

get_week_schedule

이번 주, 다음 주 또는 상대 주의 날짜 포함 시간표 가져오기

학교 통합 인증

get_schedule

현재 또는 지정 학기의 전체 시간표 가져오기

학교 통합 인증

get_scores

성적 및 가능한 학급 통계 가져오기

학교 통합 인증

get_upcoming_lexue_tasks

향후 1~90일의 러쉐 캘린더 이벤트 파싱

학교 인증 + 러쉐 구독 주소

성공 결과는 통일된 형식입니다:

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

실패 결과에는 상위 서비스 스택 또는 인증 정보가 포함되지 않습니다:

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

기술 원리

핵심은 네 계층으로 나뉩니다:

  1. MCP 도구 계층: 게시물, 강의, 시간표, 성적, 작업 등의 사용자 개념만 노출하고 Cookie, 챌린지 토큰 또는 내부 서비스 식별자는 노출하지 않습니다.

  2. 클라이언트 계층: BIT101 API와 학교 데이터 게이트웨이를 각각 처리하며, 요청 실패 시 세션 만료 여부를 판단하고 복구 가능한 재시도를 한 번만 수행합니다.

  3. 표준화 계층: 서로 다른 상위 서비스 형식을 안정적이고 JSON 친화적인 필드로 변환합니다. 상하이 시간대 날짜, 학사 주, 강의 시간, 성적 및 ICS 이벤트 파싱을 담당합니다.

  4. 인증 및 저장 계층: 필요할 때만 로컬 페이지를 엽니다. 비밀번호는 MCP 매개변수에 들어가지 않으며, 성공 후 재사용 가능한 세션만 저장합니다.

MCP는 stdio transport를 사용합니다. 표준 출력은 MCP 프로토콜 데이터만 보내고, 실행 로그는 표준 오류에만 기록하여 로그가 프로토콜 통신을 방해하지 않도록 합니다.

인증 프로세스

브라우저의 BIT101 로그인을 직접 재사용할 수 없는 이유는?

브라우저 Cookie는 브라우저 자체의 보안 공간에 속하며, MCP는 독립적인 로컬 프로세스입니다. 프로젝트는 의도적으로 Chrome/Edge의 Cookie 데이터베이스를 읽지 않으며 브라우저 확장 프로그램 설치도 요구하지 않습니다. 이로 인해 최초 인증이 한 번 더 필요하지만, MCP가 사용자의 모든 브라우저 자격 증명을 스캔하는 것을 피할 수 있습니다.

새 Agent 대화를 시작한다고 해서 로그인 상태가 지워지지는 않습니다. MCP 시작 시 저장된 세션을 읽고 검증합니다. 세션이 없거나, 상위 서비스가 무효로 판정하거나, 인증 게이트웨이의 임시 챌린지가 만료되었거나, 시스템 자격 증명 저장소를 사용할 수 없는 경우에만 다시 로그인합니다.

BIT101

커뮤니티 도구를 처음 호출할 때:

  1. MCP가 127.0.0.1의 임의 포트에서 임시 페이지를 시작합니다.

  2. 사용자가 로컬 페이지에 학번과 BIT101 비밀번호를 입력합니다.

  3. 로컬 프로세스가 기존 BIT101 로그인 프로토콜에 따라 비밀번호를 처리하고 HTTPS를 통해 BIT101 API에 요청합니다.

  4. 로그인 성공 후 반환된 BIT101 세션만 시스템 자격 증명 관리자에 저장합니다. 원본 비밀번호는 영속화하지 않습니다.

  5. 임시 페이지가 닫히고 원래 도구 호출이 계속 실행됩니다.

학교 시간표 및 성적

시간표와 성적은 학교 개인 데이터 기능에서 오며 BIT101 커뮤니티 세션과는 다른 "열쇠"입니다. 최초 호출 시 로컬 페이지가 통합 인증 계정, 비밀번호 및 필요 시 SMS 인증 코드를 수집하고 HTTPS를 통해 기존 BIT-Login REST 게이트웨이에 전달합니다. MCP는 게이트웨이가 반환한 단기 챌린지 세션을 저장하며 학교 비밀번호는 저장하지 않습니다.

러쉐 캘린더

현재 BIT-Login REST 게이트웨이는 이 프로젝트가 호출할 수 있는 러쉐 캘린더 인터페이스를 제공하지 않으며, 프로젝트도 학교 CAS/SSO를 다시 구현하지 않습니다. 따라서 MVP는 사용자가 러쉐의 캘린더 → 캘린더 내보내기 페이지에서 개인 구독 주소를 생성하고 로컬 연결 페이지에 한 번 붙여넣어야 합니다.

연결 페이지는 실제로 iCalendar 콘텐츠를 다운로드하여 검증하며, 유효한 구독만 Connected를 표시합니다. 일반 calendar/view.php 페이지는 거부됩니다. 구독 주소는 Agent 또는 MCP 도구 결과에 들어가지 않으며 시스템 자격 증명 관리자에 저장됩니다. 최근 이벤트가 없는 유효한 캘린더는 빈 목록을 반환합니다.

인증, 보안 및 개인정보 보호

먼저 결론

이 프로젝트는 비밀번호가 Agent, 채팅 기록 및 로그에 들어갈 위험을 줄이지만 "제로 리스크"를 약속할 수는 없습니다. 로컬 MCP를 설치하는 것은 네트워크에 연결할 수 있는 로컬 프로그램을 설치하는 것과 같습니다. 사용자는 프로젝트 소스 코드, 설치 패키지, 의존성 및 구성된 원격 인증 서비스를 신뢰해야 합니다.

특히 두 문장을 구분해야 합니다:

  • 비밀번호는 Agent/LLM에 전송되지 않습니다: 이 프로젝트가 명시적으로 구현한 경계입니다.

  • 비밀번호는 이 기기에서만 존재합니다: 아닙니다. 학교 통합 인증 비밀번호는 로컬 MCP가 HTTPS를 통해 구성된 원격 BIT-Login 게이트웨이에 제출하여 인증을 완료해야 합니다.

어떤 정보가 어디로 갈까요?

정보

누가 접촉하나

영속화 여부

BIT101 비밀번호

로컬 인증 코드; 상위 프로토콜에 따라 처리 후 BIT101 API에 제출

비밀번호 미저장

학교 통합 인증 비밀번호

로컬 인증 코드 및 구성된 BIT-Login 게이트웨이

미저장

SMS 인증 코드

로컬 인증 코드 및 BIT-Login 게이트웨이

미저장

BIT101/학교 세션

로컬 MCP 및 해당 상위 서비스

운영 체제 자격 증명 저장소

러쉐 개인 구독 주소

로컬 MCP 및 bit.edu.cn 캘린더 서비스

운영 체제 자격 증명 저장소

게시물, 강의, 시간표, 성적, 러쉐 이벤트

MCP 및 현재 Agent

현재 Agent 컨텍스트에 들어감

기본 상위 서비스 주소:

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

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

HTTPS는 일반적인 네트워크 도청을 방지할 수 있지만 서버 운영 주체에 대한 신뢰를 대체할 수는 없습니다. 학교 비밀번호가 원격 게이트웨이를 거치는 것이 우려되는 사용자는 시간표 및 성적 도구를 활성화하지 않아야 합니다.

구현된 보호 조치

  • 임시 HTTP 서비스는 127.0.0.1에만 바인딩되며 운영 체제가 할당한 임의 포트를 사용합니다.

  • 각 인증은 256비트 임의 state를 사용하며 위조 제출에 대비해 상수 시간 비교를 수행합니다.

  • 페이지는 캐시, 외부 콘텐츠, iframe, referrer 및 MIME 추측을 비활성화합니다.

  • 페이지는 성공, 취소 또는 타임아웃 후 수신 대기를 중지합니다.

  • 비밀번호, 인증 코드는 파일에 기록되지 않습니다. 코드는 요청 후 관련 변수 참조를 가능한 한 빨리 정리합니다.

  • 세션은 Python keyring을 통해 운영 체제 자격 증명 저장소(Windows Credential Manager 또는 Linux의 Secret Service/keyring 백엔드)에 기록됩니다. 사용할 수 없으면 현재 프로세스 메모리에만 저장하고 평문 파일로 폴백하지 않습니다.

  • 로그는 비밀번호, 인증 코드, Cookie, Bearer token 및 Authorization 헤더를 마스킹합니다.

  • 러쉐 주소는 bit.edu.cn 도메인의 HTTPS여야 하며 유효한 iCalendar를 반환해야 합니다.

  • 모든 도구는 읽기 전용으로 표시되며 학교 또는 커뮤니티 데이터를 수정하는 기능을 제공하지 않습니다.

사용자가 주의해야 할 사항

  • 신뢰할 수 있는 저장소 또는 신뢰할 수 있는 배포 페이지에서만 설치하고 가능한 한 소스 코드와 배포 해시를 확인하세요.

  • 로컬 인증 페이지 주소는 http://127.0.0.1:<임의 포트>/connect로 시작해야 합니다.

  • Agent 채팅창, MCP 매개변수, Issue 또는 로그에 비밀번호, 인증 코드, Cookie, token 또는 러쉐 URL을 절대 보내지 마세요.

  • 신뢰할 수 없는 공용 컴퓨터에서 개인 학교 계정을 사용하지 마세요.

  • 러쉐 구독 URL은 "얻으면 읽을 수 있는" 개인 링크이므로 비밀번호처럼 보호해야 합니다. 유출이 의심되면 러쉐에서 다시 생성하세요.

  • 성적, 시간표 조회 시 해당 데이터가 현재 Agent에 제공됩니다. 사용 중인 모델과 클라이언트의 데이터 정책에 따라 활성화 여부를 직접 판단하세요.

로컬 세션 삭제

Windows에서 제어판 → 자격 증명 관리자 → Windows 자격 증명을 열고, Linux에서는 현재 데스크톱 환경에서 사용하는 Secret Service 관리 도구(일반적으로 GNOME Keyring 또는 KDE Wallet)를 엽니다. 서비스 이름이 bit101-mcp인 다음 항목을 삭제하세요:

  • bit101-session

  • school-session

  • lexue-calendar-url

삭제 후 다음에 해당 도구를 호출하면 다시 인증합니다. Python 패키지를 제거해도 이러한 시스템 자격 증명은 자동으로 삭제되지 않습니다. Linux에 사용 가능한 keyring 백엔드가 없으면 세션은 현재 프로세스 메모리에만 저장되며 MCP를 재시작하면 다시 로그인해야 합니다.

구성 항목

비밀 매개변수는 환경 변수로만 구성할 수 있습니다:

변수

기본값

용도

BIT101_API_URL

https://bit101.flwfdd.xyz

BIT101 API 루트 주소

BIT101_SCHOOL_API_URL

https://login.bit101.flwfdd.xyz

BIT-Login REST 루트 주소

BIT101_REQUEST_TIMEOUT

30

단일 상위 서비스 HTTP 타임아웃(초)

BIT101_AUTH_TIMEOUT

300

로컬 인증 페이지 최대 대기 시간(초)

자격 증명과 세션은 도구 매개변수나 환경 변수로 구성할 수 없습니다. 상위 서비스 주소를 변경하는 것은 새로운 서비스 운영 주체를 신뢰한다는 의미이므로 주의해서 사용하세요.

자주 묻는 질문

프로젝트 디렉터리에서 Agent를 시작해야 하나요?

아닙니다. uv tool install .로 명령을 설치하고 MCP를 클라이언트의 사용자 수준 구성에 작성하면 모든 디렉터리에서 사용할 수 있습니다. 프로젝트 루트의 opencode.json, .cursor/mcp.json 또는 .codex/config.toml은 해당 프로젝트에만 적용됩니다.

왜 처음 사용할 때 브라우저가 열리나요?

인증은 필요 시 트리거됩니다. 첫 번째 게시물 조회에는 BIT101 세션이 필요하고, 첫 번째 시간표/성적 조회에는 학교 세션이 필요하며, 첫 번째 러쉐 조회에는 개인 캘린더 구독도 필요합니다. 비밀번호와 구독 주소는 채팅을 거칠 수 없으므로 임시 로컬 페이지로 수집합니다.

BIT101 웹페이지에 이미 로그인했는데 MCP가 여전히 로그인을 요구하는 이유는?

웹 세션은 브라우저 Cookie에 저장됩니다. MCP는 브라우저 Cookie를 읽지 않으므로 자체 최소 세션을 구축해야 합니다. 이로 인해 최초 로그인 편의성이 한 번 희생되지만 브라우저의 모든 로그인 데이터에 직접 접근하는 것을 피할 수 있습니다.

새 대화에서 가끔 다시 로그인해야 하는 이유는?

새 대화는 세션을 적극적으로 지우지 않지만 MCP는 상위 서비스 세션을 검증합니다. 세션 만료, 서버에 의한 취소, 인증 게이트웨이 챌린지 무효화 또는 시스템 자격 증명 저장소를 사용할 수 없는 경우 다시 로그인합니다. 방금 로그인에 성공하고 즉시 재시작했는데 다시 요구되면 시스템 자격 증명 저장소에 bit101-mcp 항목이 있는지 확인하세요.

러쉐가 Connected를 표시하는데 작업이 없는 이유는?

구독 주소가 iCalendar 검증을 통과했다면 빈 목록은 일반적으로 선택한 시간 범위에 실제로 이벤트가 없다는 뜻입니다. 조회 범위를 7일에서 30일로 확대하여 확인할 수 있습니다.

학교 도구가 느려 보이는 이유는?

최초 학교 인증, SMS 인증 및 성적 상세 조회는 시간이 오래 걸릴 수 있습니다. MCP 도구 타임아웃을 360초로 설정하고 현재 호출이 완료될 때까지 기다리세요. 여러 학교 도구를 동시에 재시도하지 마세요.

bit101-mcp 명령을 찾을 수 없으면 어떻게 하나요?

uv tool dir --bin을 실행하여 설치 디렉터리를 찾고 PATH에 추가하거나 MCP 구성에 bit101-mcp.exe의 절대 경로를 직접 입력하세요. 수정 후 클라이언트를 재시작하세요.

오류 코드

코드

의미

BIT101_AUTH_REQUIRED

BIT101 세션 구축 필요

SCHOOL_AUTH_REQUIRED

학교 세션 구축 필요

AUTH_EXPIRED

저장된 세션 만료

AUTH_FAILED

로그인 실패 또는 자격 증명이 상위 서비스에 수락되지 않음

AUTH_TIMEOUT

로컬 인증 페이지 대기 타임아웃

LEXUE_SETUP_REQUIRED

러쉐 구독이 없거나, 무효이거나, 유효한 캘린더가 아님

NOT_FOUND

지정 게시물 등 레코드가 없음

UPSTREAM_UNAVAILABLE

상위 서비스가 일시적으로 사용 불가, 나중에 재시도 가능

INVALID_RESPONSE

상위 서비스가 인식할 수 없는 데이터 반환

모든 오류는 정제를 거치며 비밀번호, Cookie, token, Authorization 헤더, 원본 스택 또는 전체 민감 요청을 반환하지 않습니다.

개발

프로젝트 구조:

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

개발 의존성 설치 및 검사 실행:

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

유지관리자는 배포 전에 공개 저장소에 포함되지 않는 모의 테스트로 데이터 표준화, 인증 상태, 비밀 정보 마스킹 및 재시도 프로세스를 검증합니다. 이러한 테스트는 실제 계정이 필요하지 않습니다. 실제 계정 통합 테스트는 수동, 선택 사항으로 유지하며 테스트 자격 증명을 저장소나 CI에 커밋해서는 안 됩니다.

감사의 말

BIT101 프로젝트와 모든 기여자에게 감사드립니다. 선배들이 오랫동안 유지 관리해 온 커뮤니티, 강의 평가, 캠퍼스 데이터 인터페이스 및 인증 도구는 학생들의 캠퍼스 생활에 큰 편의를 제공했으며 이 프로젝트의 중요한 기반이 되었습니다.

이 프로젝트는 특히 다음 프로젝트가 제공하는 인터페이스와 문서를 참조하거나 사용했습니다:

BIT101 MCP는 독립적으로 개발된 비공식 MCP 클라이언트로, 네트워크 인터페이스를 통해 관련 서비스와 상호작용합니다. 이 저장소의 MIT License는 이 프로젝트의 원본 코드에만 적용되며 어떤 상위 프로젝트의 라이선스도 대체하거나 변경하지 않습니다.

현재 제한 사항

  • Windows에서 주요 프로세스 실기 테스트를 완료했습니다. Fedora 43 + niri에서 실행 가능함을 확인했으며 다른 Linux 데스크톱 환경은 아직 하나씩 검증하지 않았습니다.

  • 러쉐는 여전히 내보낸 개인 캘린더 구독 주소를 한 번 수동으로 붙여넣어야 합니다.

  • 학교 세션의 유효 기간은 상위 게이트웨이가 결정하므로 장기간 무로그인을 보장할 수 없습니다.

  • 성적 평균 및 최고점은 상위 서비스가 각 과목의 상세 정보를 제공하는지에 따라 달라집니다.

  • 아직 PyPI 패키지와 Windows 독립 실행 파일을 게시하지 않았습니다.

  • 쓰기 작업을 제공하지 않습니다.

라이선스

本项目采用 MIT License。欢迎在保留版权与许可声明的前提下使用、修改、分发和提交改进。

贡献

欢迎提交 Issue 和 Pull Request。报告问题时请提供:

  • 操作系统、Python、uv 和 MCP 客户端版本

  • 使用的工具名称与经过脱敏的错误代码

  • 是否出现本地认证页面

  • 可复现步骤

请勿提交学号、密码、验证码、Cookie、token、完整请求头、乐学 URL 或其他个人信息。

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