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の一括貼り付けフローは、先頭の数字を生徒の表示名の一部ではなくリスト番号として解釈する可能性があります。このサーバーは名簿の変更をレビュー可能に保ち、次の2つの明示的な形式をサポートしています:

  • seat_number_dot_name: 座席番号を保持するために、1.Student A のような名前を一度に1つ作成します。

  • name_only: 座席番号が不要な場合にClassDojoの高速な一括貼り付けフローを使用します。ソースクラスに重複した名前が含まれている場合は拒否されます。

すべての書き込みには、新しい15分間のプレビューIDとconfirm: trueが必要です。保存後、サーバーはクラスを読み戻して名前と数を比較します。

Related MCP server: excel-mcp-server

できること

Tool

Writes data

Purpose

classdojo_doctor

いいえ

ローカルブラウザの接続、ログイン状態、表示されているクラスを確認します。

classdojo_list_classes

いいえ

教師セッションで表示されている3桁のクラスを一覧表示します。

classdojo_inspect_workbook

いいえ

すべてのシートをスキャンして、クラス、座席番号、生徒名の列を探します。

classdojo_get_roster

いいえ

現在のClassDojoクラス名簿を読み取ります。

classdojo_get_ui_state

いいえ

名簿作業を妨げる可能性のあるダイアログを検出します。それらを閉じることはありません。

classdojo_preview_roster_import

いいえ

ワークブックの生徒とClassDojoを比較し、短命のプレビューIDを作成します。

classdojo_apply_roster_import

はい

confirm: true で1つのプレビューを適用し、保存して検証のために読み戻します。

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のパスワード、Cookie、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 and 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プロセス内でのみ有効で、最初の適用試行で消費されます。これにより、誤ったリプレイや重複インポートが減少します。1つのクラスが失敗した場合、結果は検証済みのクラスと、新しいプレビューを生成した後に再試行できるクラスを指定します。

プライバシーとセキュリティ

  • ワークブックの解析とブラウザ自動化は教師のコンピュータ上でローカルに実行されます。

  • このプロジェクトはホスト型MCPサービスを実行せず、資格情報や生徒名簿を永続化しません。

  • 生徒名は選択したMCPクライアント/AIプロバイダーを通過する可能性があります。実際の生徒データを使用する前に、そのプロバイダーの保持期間とプライバシー条件を確認してください。

  • 実際のワークブック、生徒のスクリーンショット、ブラウザプロファイル、Cookie、個人データを含む診断ログを公開イシューに添付しないでください。

  • 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 は実験的です。Web UIアダプタは意図的に分離されており、将来の公式ClassDojo APIが公開MCPツールのワークフローを変更せずに置き換えることができます。

計画中の作業:

  • 追加の合成ワークブックレイアウトとロケールカバレッジ

  • MCPクライアント互換性マトリックスとInspectorスモークテスト

  • ClassDojoが早期アクセスを許可した場合の公式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レジストリ名: io.github.Eason0in/classdojo-mcp

  • npmパッケージ: classdojo-mcp

  • トランスポート: stdio

  • ライセンス: MIT

server.json と package.json#mcpName は意図的にMCPレジストリの所有権形式に一致しています。リリースワークフローは、保護された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