seoultech_c4t
This server provides read-only access to a university LMS (SeoulTech e-Class) data, allowing AI agents to query courses, notices, and assignments.
Start login: Opens a Chrome window for the user to log in directly when the session is missing or expired.
List courses: Retrieves the list of courses the user is currently enrolled in.
List notices: Fetches notices (with full content) for all courses or a specific course.
Search notices: Searches through the full text of notices and returns matching results along with their posting dates.
List assignments: Retrieves assignments (with deadlines and submission status) for all courses or a specific course, with an option to include completed ones.
Get pending assignments: Lists assignments that are not yet submitted or whose submission status is unconfirmed, sorted by due date.
Get upcoming deadlines: Retrieves unsubmitted assignments that have deadlines within a specified number of days (default 7).
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., "@seoultech_c4t현재 미제출 과제를 마감순으로 정리해줘."
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.
서울과학기술대학교 또는 e-Class 운영사가 제작·승인·지원하는 공식 프로그램이 아닌 독립적인 커뮤니티 프로젝트입니다. AI 요약과 파싱 결과에는 오류가 생길 수 있으므로 시험, 과제, 출석, 제출 여부와 마감 시각은 반드시 e-Class 원문에서 최종 확인하세요. 자세한 내용은DISCLAIMER.md를 확인하세요.
무엇을 할 수 있나요?
“이번 스페인어 테스트 날짜·시간·장소 찾아줘.”
“모든 과목 공지를 확인해서 중간고사 일정만 표로 만들어줘.”
“현재 미제출 과제를 마감이 가까운 순서로 정리해줘.”
“이번 주에 새로 올라온 공지 중 중요한 내용만 요약해줘.”
“7일 안에 마감되는 과제를 과목별로 정리해줘.”공지 제목의 짧은 미리보기만 보는 것이 아니라 공지 전체 본문을 조회합니다. 시험 날짜·시간·건물·강의실·범위처럼 본문에만 적힌 정보도 찾을 수 있으며, LMS에서 확인되지 않는 값은 임의로 추측하지 않는 것을 기본 원칙으로 합니다.
지원 기능 | 내용 |
수강 과목 | 현재 정규 수강 과목 조회 |
공지 | 과목별·전체 공지, 게시일과 전체 본문 조회 |
공지 검색 | 공지 본문에서 시험·준비물·일정 변경 등 검색 |
과제 | 과목별·전체 과제, 마감일과 제출 여부 조회 |
미제출·마감 | 미제출 과제와 일정 기간 안에 마감되는 과제 조회 |
AI 연동 | Codex 플러그인, Claude Desktop, Claude Code용 로컬 MCP |
Related MCP server: CAU e-class MCP
실제 동작 미리보기
아래 썸네일을 누르면 YouTube에서 실제 시연 영상이 재생됩니다.
다른 도구와 연결하면
이 커넥터는 LMS 데이터를 읽어서 AI에 전달하는 역할만 합니다. AI의 예약 실행 기능이나 Google Calendar·Outlook 같은 별도 도구를 함께 연결하면 다음처럼 확장할 수 있습니다.
매일 아침 새 공지와 임박한 미제출 과제 브리핑 받기
마감까지 남은 날짜와 제출 상태를 기준으로 긴급도 분류하기
확인된 시험·과제 일정을 개인 캘린더에 등록하기
지난 조회 이후 새로 생기거나 변경된 공지만 요약받기
모든 과목의 시험 날짜·시간·장소·범위를 한 표로 만들기
개인 일정과 시험·과제 마감이 겹치는지 확인하기
캘린더 등록이나 예약 실행 기능이 이 저장소에 내장된 것은 아닙니다. 사용 중인 AI에 해당 도구가 별도로 연결되어 있어야 합니다.
운영체제별 설치
아래에서 사용 중인 운영체제를 선택하면 해당 설치 방법으로 바로 이동합니다.
두 운영체제 모두 Python 3.12와 Codex, Claude Desktop 또는 Claude Code 중 사용할 프로그램이 필요합니다.
Windows 설치
Windows 준비물
Windows 10 또는 Windows 11
Python 3.12 — 설치할 때
Add Python to PATH를 선택하는 것을 권장합니다.
최신 Release의 Assets에서
seoultech-lms-connector-windows-v0.3.1.zip을 다운로드합니다.Source code가 아닌 이름에windows가 들어간 설치용 ZIP을 선택하세요.ZIP 파일의 압축을 풉니다.
압축을 푼 폴더를 우클릭하고 터미널에서 열기를 누릅니다.
아래 명령어를 그대로 입력하고 Enter를 누릅니다.
powershell -ExecutionPolicy Bypass -File .\install.ps1설치 중 Chrome이 열리면 서울과기대 e-Class에 직접 로그인합니다.
설치가 끝나면 Codex 또는 Claude를 완전히 종료한 뒤 다시 실행합니다.
설치 명령은 Python 패키지와 의존성을 설치하고, 현재 PC의 Python 경로를 사용해 Codex·Claude 연동을 준비한 뒤 최초 LMS 로그인을 진행합니다. 비밀번호를 스크립트나 터미널에 입력하지 않으며, 사용자가 공식 로그인 페이지에서 직접 로그인합니다.
Claude Desktop에서 로고와 설명이 표시되는 확장을 사용하려면 설치 스크립트가 안내한.mcpb 파일을 설정 > 확장 프로그램 > 고급 설정 > 확장 프로그램 설치에서 직접 선택하고 승인하세요. 기본 MCP 연결은 확장 설치 전에도 유지됩니다.
macOS 설치
macOS 준비물
macOS가 설치된 Apple Silicon 또는 Intel Mac
Python 3.12
Python 3.12가 없다면 Python 공식 macOS 다운로드 페이지에서 설치할 수 있습니다. Homebrew를 사용 중이라면 다음 명령을 실행해도 됩니다.
brew install python@3.12macOS 설치 순서
최신 Release의 Assets에서
seoultech-lms-connector-macos-v0.3.2.zip을 다운로드합니다. GitHub가 자동으로 만드는Source code파일이 아니라 이름에macos가 들어간 설치용 ZIP을 선택하세요.ZIP 파일을 더블클릭해 압축을 풉니다.
응용 프로그램 > 유틸리티 > 터미널을 엽니다.터미널에
cd를 입력하되 Enter는 아직 누르지 않습니다.압축을 푼
seoultech-lms-connector-macos-v0.3.2폴더를 터미널 창으로 끌어다 놓고 Enter를 누릅니다.아래 명령을 실행합니다.
bash install.sh설치 중 브라우저가 열리면 서울과기대 e-Class에 직접 로그인합니다.
설치가 끝나면 Codex 또는 Claude를 완전히 종료한 뒤 다시 실행합니다.
ZIP의 실행 권한이 유지된 환경에서는install.command를 더블클릭해도 됩니다. macOS가 실행을 막거나 창이 바로 닫히면 터미널에서 bash install.sh를 실행하는 방법이 가장 확실합니다.
macOS 설치 스크립트는 전용 가상환경을 ~/Library/Application Support/seoultech-lms-connector/venv에 만들고 Codex·Claude 연동과 최초 로그인을 준비합니다. 더 자세한 macOS 설명과 원본 소스는 macos/README.md와 macos/에서 확인할 수 있습니다.
Claude Desktop용 선택적.mcpb 확장은 설치 후 ~/Library/Application Support/seoultech-lms-connector/seoultech-c4t.mcpb에 생성됩니다. 기본 MCP 연결은 확장 설치 전에도 유지됩니다.
설치 확인
화면 구성과 표시 버전은 앱 및 커넥터 버전에 따라 달라질 수 있습니다. 설치 직후 보이지 않으면 창만 닫지 말고 프로그램을 완전히 종료한 뒤 다시 실행하세요.
설치 후 요청 예시
Codex에서는 플러그인을 선택하거나 이름을 붙여 요청할 수 있습니다.
@seoultech_c4t 현재 제출해야 하는 과제 정리해줘.
@seoultech_c4t 7일 안에 마감되는 미제출 과제 알려줘.
@seoultech_c4t 과목별 최근 공지를 요약해줘.Claude Desktop 또는 Claude Code에서는 자연어로 요청하세요.
서울과기대 LMS에서 현재 미제출 과제를 정리해줘.
전체 공지를 확인해서 중간고사 일정을 찾아줘.
7일 안에 마감되는 과제를 알려줘.지원 환경
환경 | 지원 여부 | 비고 |
Windows 10/11 | ✅ | Windows 전용 설치 스크립트 제공 |
macOS Apple Silicon | ✅ | macOS 전용 설치 스크립트 제공 |
macOS Intel | ✅ | macOS 전용 설치 스크립트 제공 |
Codex | ✅ | 로컬 플러그인으로 등록 |
ChatGPT 데스크톱 Work | ✅ | 로컬 도구 실행이 가능한 환경에서 사용 |
일반 Chat 모드 | ❌ | 로컬 컴퓨터의 MCP 명령을 실행할 수 없음 |
Claude Desktop | ✅ | 로컬 MCP 연결 및 선택적 |
Claude Code | ✅ | 사용자 범위 MCP로 등록 |
웹·모바일 단독 환경 | ❌ | 로컬 프로세스에 접근할 수 없음 |
현재로컬 커넥터만 제공합니다. 원격 서버에 배포하면 웹·모바일 연동도 기술적으로 가능하지만, 로그인 세션과 학사정보를 외부 서버에서 처리해야 하는 보안·개인정보 문제가 있어 구현하지 않았습니다.
읽기 전용과 개인정보 보호
과제 제출, 파일 업로드, 게시물·댓글 작성, 수정, 삭제 기능을 제공하지 않습니다.
조사로 확인된 조회용 endpoint만 allowlist로 허용하며, 그 밖의 요청은 네트워크 전송 전에 차단합니다.
공지 상세 열람으로 LMS의 읽음 상태나 조회수가 변경될 수 있습니다.
학교 아이디와 비밀번호를 코드, 저장소 또는
.env에 저장하지 않습니다.로그인 세션은 Windows에서
%LOCALAPPDATA%\seoultech-lms-connector\auth_state.json, macOS에서~/Library/Application Support/seoultech-lms-connector/auth_state.json에만 저장됩니다.auth_state.json은 민감한 파일이므로 다른 사람에게 전달하거나 GitHub에 올리면 안 됩니다.
취약점이나 버그를 제보할 때는 SECURITY.md의 민감정보 처리 방법을 확인하세요.
로그인 세션 갱신
조회 중 세션 만료가 감지되면 AI가 start_login 도구를 호출해 로그인용 Chrome 창을 열 수 있습니다. 사용자가 직접 로그인하면 세션이 로컬에 저장되고 창이 자동으로 닫힙니다. 그 뒤 같은 대화에서 원래 요청을 다시 실행하면 됩니다.
Windows 터미널에서 직접 갱신하려면:
seoultech-lms loginmacOS 터미널에서 직접 갱신하려면:
"$HOME/Library/Application Support/seoultech-lms-connector/venv/bin/seoultech-lms" login제거
Codex 플러그인, Claude MCP 설정과 Python 패키지를 제거하려면 압축을 풀었던 배포 폴더에서 운영체제에 맞는 명령을 실행합니다.
Windows:
.\uninstall.ps1.\uninstall.ps1 -RemoveAuthmacOS:
bash uninstall.sh로그인 세션까지 함께 삭제하려면:
bash uninstall.sh --remove-authClaude Desktop의 .mcpb 확장은 Claude의 설정 > 확장 프로그램에서 seoultech_c4t를 선택해 별도로 제거합니다.
seoultech-lms doctor
seoultech-lms courses
seoultech-lms notices
seoultech-lms assignments
seoultech-lms pendingAI 에이전트나 다른 프로그램에서는 JSON 출력을 사용할 수 있습니다.
seoultech-lms courses --json
seoultech-lms notices --json
seoultech-lms assignments --json
seoultech-lms pending --json특정 연동이나 최초 로그인을 생략할 때만 사용합니다.
Windows:
.\install.ps1 -SkipCodex
.\install.ps1 -SkipClaude
.\install.ps1 -SkipLoginmacOS:
bash install.sh --skip-codex
bash install.sh --skip-claude
bash install.sh --skip-login개발용 설치:
py -3.12 -m pip install -e .PC에 Chrome이 없고 Playwright Chromium을 사용해야 할 때:
python -m playwright install chromium네트워크 조사와 테스트:
python scripts/inspect_network.py --json-only
python -m unittest discover -s tests -v
python scripts/test_connector.py라이선스 및 책임
이 프로젝트는 MIT License로 배포됩니다. 프로그램 사용에 따른 최종 책임은 사용자 본인에게 있으며, 자신에게 접근 권한이 있는 계정과 데이터에 대해서만 학교 규정과 관련 법령을 준수해 사용해야 합니다. 전체 고지는 DISCLAIMER.md를 확인하세요.
Available Tools
7 toolsget_pending_assignmentsC
현재 미제출이거나 제출 여부가 확인되지 않은 과제를 마감일 순으로 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the filter criteria (unsubmitted or unconfirmed) and ordering (by deadline), which is useful. However, it omits any mention of prerequisites (e.g., login required) or side effects, and does not clarify behavior when course_id is null.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the core filter and ordering. There is no unnecessary verbosity; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description is adequate in stating the core behavior. However, it lacks any explanation of the course_id parameter and does not address whether login is required, which are important gaps given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must explain the parameter course_id. It does not mention it at all, leaving the agent without any understanding of how this optional parameter affects the result set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves assignments that are unsubmitted or have unconfirmed submission status, ordered by deadline. It specifies a distinct filter (pending assignments) which differentiates it from a general list_assignments tool, though it does not explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like list_assignments or get_upcoming_deadlines. It does not mention exclusions or alternative selection criteria, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcoming_deadlinesB
오늘부터 지정한 일수 안에 마감되는 미제출 과제를 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| course_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core behavior—returning unsubmitted assignments with upcoming deadlines—but does not mention whether course_id filtering applies, how results are ordered, whether pagination exists, or any side-effect considerations. The read-only nature is only implicit in '조회한다'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact Korean sentence that front-loads the operation and the main filter. There is no filler, repetition, or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with only two optional parameters and an output schema, the definition is mostly adequate, but it omits course_id semantics and any usage guidance relative to sibling tools. The output schema covers return-value structure, so that absence is not a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It indirectly clarifies 'days' through '지정한 일수', but it never mentions the course_id parameter or how it filters results, leaving that entirely to inference from the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (조회한다) and a precise resource (미제출 과제, unsubmitted assignments), with a clear time-window condition: deadlines within a specified number of days from today. This is enough to distinguish it from the broader list_assignments and from get_pending_assignments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to prefer this tool over siblings such as list_assignments or get_pending_assignments. The time-window condition implies a use case, but no alternatives, exclusions, or prerequisite conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assignmentsB
전체 과목 또는 지정한 과목의 과제, 마감일, 제출 여부를 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | No | ||
| include_completed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns assignments, deadlines, and submission status, and that it can filter by course. However, it does not disclose behavior around the include_completed parameter (e.g., default false means completed assignments are excluded), nor any pagination, ordering, or side effects. For a read-only query tool, this is a moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence in Korean, front-loading the main purpose and scope. It is efficient and easy to parse. It could be slightly more structured by separating the filtering options, but it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are presumably documented there. The description covers the main query dimensions (all/specific course, deadlines, submission status). However, given the sibling tools get_pending_assignments and get_upcoming_deadlines, the description should clarify how this tool differs (e.g., it lists all assignments including completed ones if include_completed=true, while siblings focus on pending/upcoming). This missing differentiation makes it incomplete for an agent to choose correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains course_id implicitly ('지정한 과목' - specified course) and mentions submission status, which relates to include_completed. However, it does not explain the exact meaning of include_completed (whether it includes or excludes completed assignments) or the default behavior. The description adds some meaning but leaves a key parameter ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('조회한다' - retrieves) and resource (assignments), and specifies the key attributes returned (과제, 마감일, 제출 여부 - assignments, deadlines, submission status). It also distinguishes between all courses and a specified course. However, it doesn't explicitly differentiate from sibling tools like get_pending_assignments or get_upcoming_deadlines, which also deal with assignments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this to view assignments for all or a specific course, with deadlines and submission status. It does not explicitly state when to use this vs. get_pending_assignments or get_upcoming_deadlines, nor does it mention the include_completed parameter's role in filtering. The context is clear but exclusions/alternatives are not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_coursesA
현재 수강 중인 과목 목록을 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly signals a read-only operation ('조회한다') and scopes the result to currently enrolled courses)Skip... It does not mention authentication, pagination, or ordering, but those are less critical for a simple list tool and the output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the operation and the resource precisely. Every word earns its place, and there is no redundant or promotional content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with an output schema, the description is fully sufficient. It tells the agent what will be returned (currently enrolled courses) without needing additional explanation of return structure or parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parametersasterisk, so parameter documentation is unnecessary. The schema coverage is 100% by definition and the description does not need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: '조회한다' (retrieves) and '현재 수강 중인 과목 목록' (currently enrolled course list). This clearly distinguishes it from sibling tools like list_notices and list_assignments, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the current enrolled courses are needed, but it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. The context is reasonably clear but relies on inference from the tool name and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_noticesC
전체 과목 또는 지정한 과목의 공지 목록, 게시일과 전체 본문을 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | No | ||
| include_content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only reveals that the result includes publication date and full text; it does not explicitly state read-only semantics, pagination behavior, or any prerequisites. '조회' weakly implies a query but is not a clear behavioral guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded Korean sentence that states the action and scope with no filler. It conveys the essential purpose in one breath.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two optional parameters and an output schema, the description should explain how parameters alter the result. It fails to explain include_content and never mentions ordering or pagination. The main gap is the unexplained boolean parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It clarifies course_id as 'all courses or specified course' but says nothing about include_content, which remains ambiguous. The mention of 'full text' might hint at include_content, but doesn't explain the parameter's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb '조회한다' (retrieves) with a clear resource (notice list) and scope (all or a specified course), and even notes the included fields (publication date, full text). It does not explicitly contrast with sibling 'search_notices', but the listing nature is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus 'search_notices' or other siblings. It neither states when to prefer this tool nor when not to use it, leaving the selection decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_noticesA
공지 전체 본문에서 검색하고 각 결과의 게시일도 함께 반환한다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| course_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a read-style search and that results include a publication date, but it does not mention auth needs, course scoping behavior, or what happens when no results match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the core action and result detail with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so the extra note about posting dates is a bonus. However, the description remains incomplete around optional course_id semantics and when to use this tool versus list_notices, leaving the agent to infer those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds some meaning for query by clarifying that search targets the full notice body, but it does not explain the optional course_id parameter or how it filters results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action (search across full notice text) and a concrete output detail (returns each result's posting date). It clearly distinguishes from sibling list_notices by focusing on full-body search rather than listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for full-text searching of notices, which distinguishes it from listing or deadline-oriented siblings. However, it does not explicitly state when to prefer this over list_notices or mention any prerequisites such as an active login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_loginA
로그인 세션이 없거나 만료됐을 때 사용자가 직접 로그인할 Chrome 창을 연다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It does disclose the core behavior: opening a user-facing Chrome window for manual login. However, it does not mention whether the call blocks until login completes, what happens on cancellation, or how the agent knows the login succeeded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the condition ('when session is missing or expired') followed by the action. Every word adds value and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless tool with an output schema present, the description covers the essential purpose and trigger condition. The only notable gap is the lack of detail about post-call behavior (whether it waits, returns a session status, or raises an error), but the output schema may already document the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameter meaning. The baseline of 4 for parameterless tools applies, and the description correctly needs no parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: it opens a Chrome window for the user to log in manually when a login session is missing or expired. This specific verb+resource combination makes it easy to distinguish from the sibling course/notice/assignment listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear triggering condition: use this when there is no login session or when the session has expired. It does not explicitly name alternatives or when-not-to-use, but the condition alone is sufficient given that the sibling tools are all data-retrieval operations requiring authentication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.3.1- First observed
get_pending_assignments - First observed
get_upcoming_deadlines - First observed
list_assignments - First observed
list_courses - First observed
list_notices - First observed
search_notices - First observed
start_login
TDQS
Scored across 7 tools
Most tools target clearly distinct resources: courses, notices, assignments, and login. However, get_pending_assignments and get_upcoming_deadlines overlap significantly—both return pending assignments sorted by due date, with the only real difference being the time-window filter. list_notices and search_notices are also similar but the search functionality makes their purposes distinguishable.
All tools follow a consistent verb_noun snake_case pattern: list_*, search_*, get_*, and start_login. The verbs clearly indicate the action and the nouns match the resource being acted on. No mixed conventions or vague names.
Seven tools is a well-scoped size for a university course-management integration. Each tool covers a meaningful user need without redundancy, and the count falls comfortably within the ideal 3-15 range.
The tool set covers the core read-only workflows: login handling, course listing, notice browsing/searching, and assignment retrieval with deadline awareness. Minor gaps exist, such as no way to view individual course/assignment details or access attachments, but agents can complete typical student tasks without dead ends.
Maintenance
Related MCP Connectors
Search, read, cite, create, and safely update a user's private KeepFlash knowledge library.
- uNotesOAuthnet.unotes
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
- RunableOAuthcom.runable
Run agent tasks, track progress, retrieve files, and search meeting notes with Runable.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables Korea University students to query their KUPID portal and Canvas LMS using natural language for notices, library seats, timetable, grades, courses, and assignments.3113MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to access Chung-Ang University's e-class platform, including dashboard, daily briefing, course details, VOD links, and smart file download.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query METU's ODTUClass LMS for enrolled courses, announcements, syllabi, assignment deadlines, and lab/recitation schedules using credential or token authentication.1GPL 2.0
- AlicenseAqualityBmaintenanceEnables authenticated access to Yonsei LearnUs course activities, assignments, schedules, announcements, notifications, video learning status, and course materials through local stdio tools.16MIT