Skip to main content
Glama

ClassDojo Roster MCP

CI npm Node.js 20+ MCP stdio MIT License

Excel/XLSX 학생 명단을 검사하고, 변경 사항을 미리 확인하고, 학생을 ClassDojo에 가져오고, 저장된 명단을 사후 검증해야 하는 교사를 위한 비공식, 로컬 우선 Model Context Protocol (MCP) 서버입니다. Claude Desktop, Codex, Cursor, VS Code를 포함하여 로컬 stdio 서버를 실행할 수 있는 모든 MCP 클라이언트에서 작동합니다.

[!IMPORTANT] 이 커뮤니티 프로젝트는 ClassDojo와 제휴, 보증, 지원 관계가 없습니다. 공식 공개 ClassDojo API/MCP가 아직 없기 때문에 로컬 브라우저 어댑터를 통해 로그인된 ClassDojo 교사 웹사이트를 사용합니다. ClassDojo UI 변경 시 어댑터 업데이트가 필요할 수 있습니다.

繁體中文文件:docs/README.zh-TW.md

이 MCP 서버가 존재하는 이유

ClassDojo의 대량 붙여넣기 흐름은 앞에 오는 숫자를 학생 표시 이름의 일부가 아닌 목록 번호로 해석할 수 있습니다. 이 서버는 명단 변경 사항을 검토 가능하게 유지하며 두 가지 명시적 형식을 지원합니다:

  • seat_number_dot_name: 좌석 번호가 보존되도록 1.Student A와 같은 이름을 한 번에 하나씩 생성합니다.

  • name_only: 좌석 번호가 필요하지 않을 때 ClassDojo의 더 빠른 대량 붙여넣기 흐름을 사용합니다. 소스 클래스에 중복 이름이 포함된 경우 거부됩니다.

모든 쓰기 작업에는 새로운 15분 미리보기 ID와 confirm: true가 필요합니다. 저장 후 서버는 클래스를 다시 읽어 이름과 수를 비교합니다.

Related MCP server: excel-mcp-server

할 수 있는 작업

도구

데이터 쓰기

용도

classdojo_doctor

아니요

로컬 브라우저 연결, 로그인 상태, 표시되는 클래스를 확인합니다.

classdojo_list_classes

아니요

교사 세션에서 표시되는 세 자리 클래스를 나열합니다.

classdojo_inspect_workbook

아니요

모든 시트에서 클래스, 좌석 번호, 학생 이름 열로 보이는 항목을 검사합니다.

classdojo_get_roster

아니요

현재 ClassDojo 클래스 명단을 읽습니다.

classdojo_get_ui_state

아니요

명단 작업을 차단할 수 있는 대화상자를 감지합니다. 절대 닫지 않습니다.

classdojo_preview_roster_import

아니요

워크북 학생을 ClassDojo와 비교하고 단기 미리보기 ID를 생성합니다.

classdojo_apply_roster_import

예

confirm: true로 미리보기 하나를 적용하고, 저장하고, 검증을 위해 다시 읽습니다.

classdojo_verify_roster_against_workbook

아니요

예상 및 실제 수, 누락된 이름, 예상치 못한 이름을 비교합니다.

워크북 검사기는 고정된 시트 이름이나 열 위치를 가정하지 않습니다. 전체 워크북에서 일반적인 중국어 및 영어 클래스/좌석/이름 헤더를 검사합니다. 그런 다음 미리보기와 검증에는 명시적인 비어 있지 않은 sheetNames 선택과 클래스 매핑이 필요하므로 에이전트가 중복되거나 관련 없는 시트를 조용히 결합하는 것을 방지합니다.

안전한 워크플로우

합성 데이터를 사용한 워크북 검사

  1. classdojo_doctor를 실행합니다.

  2. classdojo_inspect_workbook을 실행하고 의도한 시트와 감지된 클래스 블록을 선택합니다.

  3. 명시적인 studentNameFormat으로 classdojo_preview_roster_import를 실행합니다.

  4. 클래스 매핑, 수, 누락된 좌석 번호, 추가 사항을 검토합니다.

  5. 사람의 승인 후에만 반환된 previewId와 confirm: true로 classdojo_apply_roster_import를 호출합니다.

  6. 독립적인 재읽기 확인을 위해 classdojo_verify_roster_against_workbook을 실행합니다.

미리보기

재읽기 검증

합성 명단 가져오기 미리보기

합성 명단 검증 결과

모든 스크린샷에는 합성 데이터만 포함되어 있습니다.

요구 사항

  • Node.js 20 이상

  • Chrome DevTools Protocol (CDP)을 지원하는 Chrome 또는 다른 Chromium 브라우저

  • 직접 로그인하는 ClassDojo 교사 계정

  • 로컬 stdio 서버를 지원하는 MCP 클라이언트

MCP 서버는 ClassDojo 비밀번호, 쿠키, API 토큰을 요청하지 않습니다.

로컬 브라우저 어댑터 시작

전용 브라우저 프로필을 사용하고 해당 창에서 ClassDojo에 로그인합니다.

macOS

open -na "Google Chrome" --args \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.classdojo-mcp-chrome"

Linux

google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.classdojo-mcp-chrome"

Windows PowerShell

& "$env:ProgramFiles\\Google\\Chrome\\Application\\chrome.exe" \`
  --remote-debugging-port=9222 \`
  --user-data-dir="$env:LOCALAPPDATA\\classdojo-mcp-chrome"

디버깅 포트를 루프백에 유지하세요. CDP 엔드포인트에 접근할 수 있는 사람은 해당 브라우저 세션을 제어할 수 있습니다.

MCP 클라이언트에 설치

모든 클라이언트에서 동일한 명령으로 공개 npm 패키지에서 설치합니다:

npx -y classdojo-mcp

기여자는 대신 이 저장소를 클론하고 npm ci && npm run build를 실행한 후 명령을 node와 dist/cli.js의 절대 경로로 바꿀 수 있습니다.

Claude Desktop 및 Cursor

{
  "mcpServers": {
    "classdojo": {
      "command": "npx",
      "args": ["-y", "classdojo-mcp"],
      "env": {
        "CLASSDOJO_CDP_URL": "http://127.0.0.1:9222"
      }
    }
  }
}

VS Code

{
  "servers": {
    "classdojo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "classdojo-mcp"],
      "env": {
        "CLASSDOJO_CDP_URL": "http://127.0.0.1:9222"
      }
    }
  }
}

Codex

~/.codex/config.toml에 다음을 추가합니다:

[mcp_servers.classdojo]
command = "npx"
args = ["-y", "classdojo-mcp"]

[mcp_servers.classdojo.env]
CLASSDOJO_CDP_URL = "http://127.0.0.1:9222"

클라이언트 UI와 구성 위치는 시간이 지남에 따라 변경됩니다. 클라이언트의 현재 문서를 참조하세요. 전송 방식 자체는 표준 MCP stdio이며 Codex 전용이 아닙니다.

도구 입력 예시

먼저 워크북을 검사합니다:

{
  "workbookPath": "/absolute/path/to/students.xlsx"
}

합성 클래스 매핑으로 미리보기를 생성합니다:

{
  "workbookPath": "/absolute/path/to/students.xlsx",
  "sheetNames": ["Grade 5"],
  "studentNameFormat": "seat_number_dot_name",
  "includeStudentDetails": false,
  "mappings": [
    {
      "classdojoClassName": "503",
      "sourceClassName": "Grade 5 Class 3"
    }
  ]
}

미리보기를 검토한 후에만 적용합니다:

{
  "previewId": "00000000-0000-4000-8000-000000000000",
  "confirm": true
}

미리보기 ID는 15분 후 만료되며 실행 중인 MCP 프로세스에서만 유효하고 첫 번째 적용 시도에서 소비됩니다. 이는 우발적인 재생 및 중복 가져오기를 줄입니다. 한 클래스가 실패하면 결과는 검증된 클래스와 새 미리보기를 생성한 후 재시도할 수 있는 클래스를 명명합니다.

개인정보 및 보안

  • 워크북 파싱과 브라우저 자동화는 교사의 컴퓨터에서 로컬로 실행됩니다.

  • 이 프로젝트는 호스팅된 MCP 서비스를 실행하지 않으며 자격 증명이나 학생 명단을 저장하지 않습니다.

  • 학생 이름은 선택한 MCP 클라이언트/AI 제공업체를 통해 전달될 수 있습니다. 실제 학생 데이터를 사용하기 전에 해당 제공업체의 보존 및 개인정보 처리 방침을 검토하세요.

  • 실제 워크북, 학생 스크린샷, 브라우저 프로필, 쿠키, 개인 데이터가 포함된 진단 로그를 공개 이슈에 첨부하지 마세요.

  • v0.1.0에서는 명단 가져오기만 쓰기가 가능합니다. 포인트, 출석, 메시징, 가족 초대 및 기타 ClassDojo 기능은 의도적으로 사용할 수 없습니다.

docs/PRIVACY.md, SECURITY.md 및 위협 모델을 참조하세요.

문제 해결

증상

확인 사항

브라우저 연결 실패

전용 Chrome 창이 --remote-debugging-port=9222로 계속 실행 중인지 확인합니다.

로그인 안 됨

전용 창에서 수동으로 로그인한 후 classdojo_doctor를 다시 실행합니다.

표시되는 클래스 없음

교사 클래스 페이지를 열고 계정에 접근 권한이 있는지 확인합니다.

가져오기 차단

classdojo_get_ui_state를 실행하고 가족 초대 또는 환영 대화상자를 직접 닫습니다.

좌석 번호 사라짐

studentNameFormat: "seat_number_dot_name"을 사용합니다. 대량 붙여넣기는 name_only에만 사용됩니다.

워크북 열이 감지되지 않음

헤더 레이아웃을 재현하는 합성 워크북으로 이슈를 엽니다.

검증 결과 다름

쓰기를 중지하고 missingStudents와 unexpectedStudents를 비교한 후 새 미리보기를 생성합니다.

프로젝트 상태 및 로드맵

버전 0.1.x는 실험적입니다. 웹 UI 어댑터는 의도적으로 격리되어 있어 향후 공식 ClassDojo API가 공개 MCP 도구 워크플로우를 변경하지 않고 대체할 수 있습니다.

계획된 작업:

  • 추가 합성 워크북 레이아웃 및 로케일 지원

  • MCP 클라이언트 호환성 매트릭스 및 Inspector 스모크 테스트

  • ClassDojo가 Early Access를 승인하는 경우 공식 API 어댑터

  • 개인정보 및 권한 검토 후에만 선택적 읽기 전용 도구

이 프로젝트는 문서화되지 않은 ClassDojo REST 엔드포인트를 안정적인 공개 API로 리버스 엔지니어링하거나 약속하지 않습니다.

개발

npm ci
npm test
npm run build
npm audit --omit=dev
npm pack --dry-run

stdio 프로토콜은 stdout을 사용합니다. 서버에 console.log 호출을 추가하지 마세요. 진단에는 stderr를 사용하세요. 풀 리퀘스트를 열기 전에 CONTRIBUTING.md를 참조하세요.

커뮤니티 메타데이터 및 릴리스

  • MCP Registry 이름: io.github.Eason0in/classdojo-mcp

  • npm 패키지: classdojo-mcp

  • 전송 방식: stdio

  • 라이선스: MIT

server.json과 package.json#mcpName은 의도적으로 MCP Registry 소유권 형식과 일치합니다. 릴리스 워크플로우는 보호된 GitHub Actions 환경, npm Trusted Publishing, provenance, MCP Registry OIDC를 위해 준비되어 있습니다. 유지관리자가 release 환경과 npm 게시자를 명시적으로 구성할 때까지 사용할 수 없습니다. 이 저장소에는 장기 npm 토큰이 없습니다.

라이선스

MIT © Eason0in

Available Tools

12 tools
classdojo_apply_roster_importApply a previously previewed roster importA

Sends student names to ClassDojo only after explicit confirmation, then verifies each class by reading it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes
previewIdYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-idempotent, non-destructive operation. The description adds valuable behavioral context by stating the confirmation requirement (aligning with the `confirm` parameter's const true) and the verification step after sending. It does not contradict annotations and supplements them with the two-step behavior, though it omits details about failure handling or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense sentence that front-loads the core action, embeds the precondition, and ends with the verification step. There is no wasted text; every clause adds necessary information. The structure is efficient and proportionate to the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and only two parameters, the description covers the primary behavior and precondition. However, it lacks details on what happens if verification fails, whether the operation is repeatable (idempotency is already annotated but not explained), and any side effects or error conditions. Given the stakes of sending data to an external service, additional context on failure handling would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain parameter purpose. It does clarify `confirm` as 'explicit confirmation' and `previewId` as referring to a 'previously previewed' import, but it does not explicitly state that `previewId` comes from the preview tool or describe its format beyond the schema. The description adds meaning but could be more explicit about the source of the previewId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Sends student names to ClassDojo' (applies an import) and includes a distinguishing behavior: 'only after explicit confirmation, then verifies each class by reading it back.' This differentiates it from preview_roster_import (which only previews) and verify_roster_against_workbook (which compares to workbook, not ClassDojo). The verb-resource pairing is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly conditions usage on 'explicit confirmation' and a 'previously previewed' import, making it clear this is the apply step after a preview. However, it does not explicitly name alternatives or state when not to use it, though the sibling set and title imply the workflow. This is clear context but lacks direct exclusions or comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_apply_skill_syncApply a previously previewed ClassDojo skill synchronizationA
Destructive

Exactly replaces target skills only after explicit confirmation, then reads every class back.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes
previewIdYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag destructiveHint, but the description adds precise behavioral context: the operation is an exact replacement, it is gated on explicit confirmation, and it performs a read-back of every class afterward. This goes well beyond the structured hints and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence delivers action, precondition, and postcondition with no filler. The destructive nature is front-loaded before the read-back detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive two-parameter tool, the definition captures what is replaced, when it is allowed, and the follow-up read. It does not explicitly describe the return value or specify that previewId comes from classdojo_preview_skill_sync, though sibling names and the title make this discoverable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the two parameters. It reinforces confirm's semantics with 'explicit confirmation', but it never names previewId or states that it must come from a prior preview — that is only in the title and tool name. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action — exactly replacing target skills — plus a postcondition ('reads every class back'). This clearly identifies it as the commit/apply step and distinguishes it from classdojo_preview_skill_sync and classdojo_verify_skill_sync.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It conveys the necessary use conditions: a previously previewed sync and explicit confirmation before any replacement. It does not name alternative tools or say when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_doctorCheck the local ClassDojo browser adapterA
Read-only

Checks the local browser connection, login visibility, and available classes without writing data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true and openWorldHint: true, and the description adds 'without writing data' which aligns with readOnlyHint. The description goes beyond the annotations by specifying exactly what is checked (browser connection, login visibility, available classes). This adds useful behavioral context without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the main verb 'Checks' and specifies exactly what is checked. There is no fluff, redundancy, or unnecessary detail. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, read-only annotations), the description is sufficient. It clearly states the tool's scope and intent. An agent can confidently invoke this tool to diagnose the local environment without ambiguity. There is no missing information that would prevent correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100% (no properties to describe). Per the baseline for tools with no parameters, a score of 4 is appropriate. The description does not need to explain parameters, and it does not introduce any misleading information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Checks the local browser connection, login visibility, and available classes without writing data.' This uses specific verbs and resources, and implicitly distinguishes it from sibling tools like classdojo_list_classes or classdojo_get_ui_state by focusing on a diagnostic health check. The purpose is unambiguous and immediately actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for verifying the local environment (browser connection, login state, class availability) before using other tools, but it does not explicitly say when to use it versus siblings like classdojo_get_ui_state or classdojo_list_classes. There is no mention of alternatives or exclusions, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_get_rosterGet a ClassDojo rosterC
Read-only

Reads a class roster without changing ClassDojo data.

ParametersJSON Schema
NameRequiredDescriptionDefault
classIdYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true and openWorldHint=true. The description's statement 'without changing ClassDojo data' reinforces the read-only nature but adds no new behavioral detail, such as potential side effects, data freshness, or handling of open-world results. It is consistent with annotations but does not enrich them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded and free of fluff. It is appropriately brief for a simple read operation, though the extreme brevity contributes to the lack of parameter and usage information. The structure itself is good, but it could be slightly longer to include essential context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and lack of output schema, the description should at least mention how to obtain classId or what the return format is. It does neither, leaving the tool under-specified. While the operation is simple, the missing parameter semantics and absence of any output hints make it incomplete for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 by explaining classId. It does not mention classId at all, leaving its purpose, format, or source entirely unspecified. The agent cannot know that classId identifies the class without external context, which is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('reads') and resource ('class roster') and explicitly notes it does not change data, which conveys a read-only intent. However, it does not differentiate from sibling tools like classdojo_list_classes or classdojo_inspect_workbook, which also involve reading class-related data, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided for when to use this tool versus alternatives. It does not mention prerequisites (e.g., that classId comes from list_classes) or situations where siblings would be more appropriate. The agent is left to infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_get_skillsGet ClassDojo skillsA
Read-only

Reads positive and needs-work skills, including points and icons, without changing ClassDojo data.

ParametersJSON Schema
NameRequiredDescriptionDefault
classIdYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the 'without changing ClassDojo data' phrase is redundant but consistent. The description adds meaningful behavioral detail beyond annotations by specifying exactly what is read: positive and needs-work skills, including points and icons. This is useful given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It states the operation, the object, the included fields, and the side-effect profile efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter, the description covers the key behavioral and return-content expectations. It lacks explicit output shape or parameter clarification, but the absence of nested objects and the simple classId parameter make it adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain that classId identifies the class whose skills are read. The parameter name is fairly self-explanatory, but with zero schema coverage the description needed to compensate and did not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Reads') and names the resource: positive and needs-work skills, including points and icons. It clearly distinguishes itself from mutation-oriented siblings like classdojo_apply_skill_sync by explicitly stating it does not change data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for read-only retrieval of skills and says it does not change data, but it does not explicitly state when to prefer this tool over related siblings such as classdojo_preview_skill_sync or classdojo_apply_skill_sync. Usage context is clear but exclusion criteria are only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_get_ui_stateGet current ClassDojo UI stateA
Read-only

Reports whether the selected class is ready, adding students, or blocked by a family-invitation, welcome-message, or student-account dialog. It does not dismiss anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
classIdYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation covers the non-mutating nature, and the description reinforces this by saying it 'does not dismiss anything'. It adds specific behavioral details about the kinds of dialogs that might block the UI state, which is useful beyond the annotation. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with high information density. The primary action is front-loaded, and the second sentence adds a clarifying negative. No redundant phrasing or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should specify what the return value looks like (e.g., a status string or enumeration). It only says 'reports whether...' without detailing the output format. It also does not cover error scenarios or the meaning of the classId. This leaves the agent uncertain about the operation's result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only the name, type, and minLength for classId, with no description. The description does not mention classId at all, so the agent receives no guidance on what the parameter means or how to obtain a valid value. With 0% schema description coverage, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Reports' to indicate a read-only status operation on the selected class. It clearly enumerates the possible states (ready, adding students, or blocked) and explicitly states what it does not do (dismiss anything), which differentiates it from other ClassDojo tools that perform mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use it: to check if a class is ready or blocked by a dialog. It also states an exclusion: it does not dismiss anything, implying a separate tool for dismissals. However, it does not explicitly name alternative tools or state when not to use it, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_inspect_workbookInspect workbook roster candidatesA
Read-only

Scans every worksheet and reports candidate class, seat-number, and student-name column groups without importing or transmitting student data.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbookPathYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds the extra guarantee about not transmitting student data, which provides reassurance beyond the annotation. It does not detail the exact report format, but the core behavior is transparent enough for an agent to understand the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that front-loads the action and the key safety property with no fluff or repetition. Every word earns its place, and the structure is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter inspection tool, the description covers the action and safety guarantee, but it omits how the reported column groups are returned (list, structured object, etc.) and how they should be used with downstream tools like preview_roster_import. Given no output schema exists, this lack of return-format information is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, workbookPath, is not described beyond its name, and schema description coverage is 0%. The description does not clarify the expected path format, file type, or how the workbook is accessed, forcing the agent to infer from the parameter name alone. This is a significant gap for a tool with a single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (scan workbook) and outcome (report candidate class, seat-number, and student-name column groups), clearly distinguishing it from import/apply operations. However, it does not explicitly contrast it with verify_roster_against_workbook, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without importing or transmitting student data' implies this is a safe pre-import inspection step, giving context on when it is appropriate. But it does not name sibling tools like verify or preview, nor does it specify when to choose this over them, so usage guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_list_classesList ClassDojo classesA
Read-only

Lists the three-digit classes visible in the locally connected ClassDojo teacher session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Lists' is fully consistent with a read-only operation — no contradiction. The description adds one useful behavioral detail beyond the annotations: the result scope is tied to a locally connected teacher session. However, it adds nothing about output shape or formatting, so it does only modest work beyond the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words. It is front-loaded with the verb and noun ('Lists the classes') and defers modifiers until after the main idea. Every element — the three-digit detail, the session scope — earns its place. This is exemplary economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 readOnlyHint and openWorldHint annotations, the description covers purpose, scope, and safety. The only missing piece is the exact return format (what a 'three-digit class' looks like in the response), but with no output schema and such low complexity, that omission is minor and an agent can reasonably infer the result shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, there is nothing for the schema to document and nothing the description must clarify about inputs. The rubric baseline for 0 params is 4, and the description still adds value by specifying the scope of the returned data (classes in the local session). This is appropriate; the dimension is effectively satisfied by the absence of parameters combined with the scope qualifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Lists' plus the resource 'classes' makes the core purpose unmistakable, and the 'three-digit' qualifier plus the scope phrase 'visible in the locally connected ClassDojo teacher session' sharpen exactly what is returned. It is clearly distinguishable from siblings like classdojo_get_roster (students in a class) and classdojo_get_ui_state (interface state), though the description never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use vs. alternative guidance and no exclusions. The phrase 'locally connected ClassDojo teacher session' implies a scope condition (use only when a local teacher session is active), but the agent is left to infer when to pick this over the sibling roster/import/verification tools. No alternative is named anywhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_preview_roster_importPreview a roster importB
Read-only

Reads a local XLSX workbook and reports the student-name changes before anything is sent to ClassDojo.

ParametersJSON Schema
NameRequiredDescriptionDefault
mappingsYes
sheetNamesYes
workbookPathYes
studentNameFormatYes
includeStudentDetailsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds that nothing is sent, which aligns with read-only behavior and adds a useful safety context. However, it doesn't describe the output format or error behavior, so value beyond annotations is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 19-word sentence that front-loads the core action (reads a local XLSX workbook) and states the result (reports student-name changes before sending). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters including complex mappings and no output schema, the description is insufficient. It doesn't describe what the report contains, how mappings are used, or what the output looks like. An agent would need to inspect the schema and potentially sibling tools to understand how to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the 5 parameters (workbookPath, sheetNames, studentNameFormat, mappings, includeStudentDetails). The only hint is 'local XLSX workbook' relating to workbookPath. Since the schema itself provides only structural info (types, enums, required), the description fails to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a local XLSX workbook and reports student-name changes before sending anything to ClassDojo. This implies a preview action distinct from the sibling apply_roster_import, though it doesn't explicitly name alternatives. The verb+resource is specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before anything is sent to ClassDojo' conveys when to use this tool (as a preview preceding apply), but it doesn't explicitly name sibling alternatives or exclusions. Usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_preview_skill_syncPreview exact ClassDojo skill synchronizationA
Read-only

Compares a preset, source class, or inline rule list with target classes before any skill is changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesSourceYes
targetClassNamesYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is structured. The description reinforces the non-mutating behavior ('before any skill is changed') but doesn't add further behavioral detail such as output format or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence with no filler. Every clause earns its place, and the core action and resource are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only preview tool, the description states the input categories, the action, and the timing relative to mutation. It could mention what the preview returns, but with readOnlyHint and a simple compare action, the core invocation context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by mapping rulesSource to 'preset, source class, or inline rule list' and targetClassNames to 'target classes.' It doesn't detail the discriminator or ID format, but those are visible in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compares') and names the exact subject matter: a preset, source class, or inline rule list versus target classes. The phrase 'before any skill is changed' and the tool's name clearly separate it from apply/verify siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'before any skill is changed' clause signals this is a pre-check or dry-run, positioning it before classdojo_apply_skill_sync. It doesn't explicitly name alternatives or exclusions, but the intended usage window is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_verify_roster_against_workbookVerify a ClassDojo roster against an XLSX workbookA
Read-only

Reads the current ClassDojo roster and a local XLSX workbook, then reports exact count, missing, and unexpected student-name differences without changing ClassDojo data.

ParametersJSON Schema
NameRequiredDescriptionDefault
mappingsYes
sheetNamesYes
workbookPathYes
studentNameFormatYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this by stating 'without changing ClassDojo data.' It also adds behavioral detail beyond the annotations by specifying the exact outputs (count, missing, unexpected differences). This provides useful context about what the tool returns without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that front-loads the action and resource, includes the output, and states the non-destructive nature. Every word adds value, and there is no fluff or repetition. It is exemplary in conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with four required parameters, including a mappings array, yet the description provides no guidance on constructing them. There is no output schema, so the agent has no information about the report structure beyond a high-level mention of count and differences. Without parameter semantics or output details, the description is incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for its four required parameters, so the description must compensate. It does not mention any of the parameters (workbookPath, sheetNames, studentNameFormat, mappings) except a generic reference to 'a local XLSX workbook.' There is no explanation of how to specify sheets, name format, or class mappings. This leaves the agent guessing about parameter values, which is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('reads') and resource ('ClassDojo roster' and 'XLSX workbook'), and clearly specifies the output ('exact count, missing, and unexpected student-name differences'). It distinguishes itself from sibling tools like preview_roster_import by emphasizing that it does not change data and is a verification, not an import preview. This is a clear, specific purpose that differentiates it from related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for comparing a roster against a workbook but does not explicitly state when to use it versus alternatives such as preview_roster_import or apply_roster_import. There is no mention of conditions, prerequisites, or exclusions. The context is clear from the title and description, but explicit routing to alternative tools is absent, leaving usage guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classdojo_verify_skill_syncVerify ClassDojo skillsA
Read-only

Compares current target skills with a preset, source class, or inline rule list without changing data.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesSourceYes
targetClassNamesYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so 'without changing data' adds no new safety information. The description clarifies that verification means comparing current skills against one of three sources, but this largely restates the rulesSource oneOf in the schema; no side effects, return behavior, or error conditions are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 16-word sentence contains the core verb, scope, sources, and a safety guarantee. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should describe the comparison result format, but it doesn't. It also leaves targetClassNames semantics and the distinctions among verify/preview/apply implicit, making the definition incomplete for a moderately complex nested-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 names the three rulesSource variants but doesn't explain targetClassNames (the classes whose skills are checked) or the inner structure of inline skills (category/name/points/iconId). The oneOf details and targetClassNames pattern are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('compares') and resource ('current target skills') and explicitly names the three comparison sources (preset, source class, inline rule list). This distinguishes it from mutation-oriented siblings like classdojo_apply_skill_sync and roster-focused tools like classdojo_verify_roster_against_workbook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The read-only note ('without changing data') implicitly separates it from apply_skill_sync, but the description never names alternatives or states when to prefer verify over preview_skill_sync. Usage context is implied rather than explicit, so an agent must infer the choice from sibling names.

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.

  1. 4 tool updatesv0.2.0
    • Addedclassdojo_apply_skill_sync
    • Addedclassdojo_get_skills
    • Addedclassdojo_preview_skill_sync
    • Addedclassdojo_verify_skill_sync
  2. 8 tool updatesv0.1.2
    • First observedclassdojo_apply_roster_import
    • First observedclassdojo_doctor
    • First observedclassdojo_get_roster
    • First observedclassdojo_get_ui_state
    • First observedclassdojo_inspect_workbook
    • First observedclassdojo_list_classes
    • First observedclassdojo_preview_roster_import
    • First observedclassdojo_verify_roster_against_workbook

TDQS

A3.5/5.0

Scored across 12 tools

Disambiguation3/5

Most tools have clear purposes, but several pairs overlap heavily: preview_skill_sync and verify_skill_sync both compare skills against a source without changing data, and verify_roster_against_workbook and preview_roster_import both report workbook-vs-roster differences. The descriptions help, but an agent could easily select the wrong verification/preview tool.

Naming Consistency4/5

The classdojo_ prefix and snake_case naming are consistent, and most tools follow a clear verb_object pattern (get_roster, list_classes, apply_skill_sync, preview_roster_import). The main deviation is classdojo_doctor, which is vague and does not follow the verb_noun convention used by the rest of the set.

Tool Count5/5

With 12 tools, the server stays within a well-scoped range for its domain. Each tool supports a distinct step in the roster or skill-sync workflow, including inspect, preview, apply, and verify phases, so none feel redundant.

Completeness4/5

The tool set covers the full roster-import and skill-sync lifecycle: inspect/preview/apply/verify for both workflows, plus connection diagnostics and UI-state checks. Minor gaps exist, such as no way to dismiss or resolve UI blockers and no explicit rollback tool, but these are workable limitations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers