Skip to main content
Glama
README.md
# edookit-mcp

MCP server for the [Edookit](https://www.edookit.com/) school management system API. Exposes all 13 Edookit API modules as 49 MCP tools.

## Installation

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "edookit": {
      "command": "npx",
      "args": ["github:thewulf7/edookit-mcp"],
      "env": {
        "EDOOKIT_SCHOOL": "your-school-subdomain",
        "EDOOKIT_USERNAME": "api-username",
        "EDOOKIT_PASSWORD": "api-password"
      }
    }
  }
}
```

`EDOOKIT_SCHOOL` is the subdomain of your school's Edookit portal — if the portal is at `https://zs-example.edookit.net`, the subdomain is `zs-example`.

### Docházka (RFID Attendance) module

The attendance module uses HMAC authentication and requires prior vendor registration with Edookit (email `support@edookit.com`). Once registered, add three extra env vars:

```json
"EDOOKIT_HMAC_CLIENT_ID": "your-client-id",
"EDOOKIT_HMAC_CLIENT_KEY": "your-client-key",
"EDOOKIT_HMAC_MARK": "your-mark"
```

## Tools

### Attendance / Docházka (HMAC auth)

| Tool | Description |
|---|---|
| `attendance_version` | Service version (public, no auth) |
| `attendance_settings` | Current school year and semester |
| `attendance_classes` | List classes; optional `pk` to get one |
| `attendance_schedule_groups` | Schedule groups and courses |
| `attendance_job_classifications` | Staff job classification codebook |
| `attendance_bell_schedule` | Teaching period time ranges |
| `attendance_staff` | All staff including RFID card numbers |
| `attendance_students` | All students including guardian contacts and RFID cards |
| `attendance_daily_schedule` | Daily schedule for a person on a date |
| `attendance_passages_by_date` | All RFID passages on a date |
| `attendance_passage_by_id` | Single passage by ID |
| `attendance_insert_passage` | Record a new RFID entry/exit event |

### Lessons / Hodiny

| Tool | Description |
|---|---|
| `lessons_version` | API version |
| `lessons_list` | Timetable for a day; filters by course, room, teacher, student, class |
| `lessons_rooms` | All rooms |
| `lessons_course_types` | All course types |
| `lessons_work_types` | All work/activity types |

### People

| Tool | Description |
|---|---|
| `person_search` | Search by Edookit ID or Plus4U ID; returns roles, children, representatives |
| `student_personal_data` | Student personal data as of a reference date |
| `employee_personal_data` | Employee personal data as of a reference date |
| `student_statistics` | Pseudonymized student statistics (no names, anonymous UUID) |

### Grades / Hodnocení

| Tool | Description |
|---|---|
| `evaluations_list` | List evaluations filtered by student, course, or evaluation term |

### Payments / Platby

| Tool | Description |
|---|---|
| `payments_version` | API version |
| `payments_categories` | Payment categories |
| `payments_currencies` | Available currencies |
| `payments_bank_accounts` | Configured bank accounts |
| `payments_types` | Payment types |
| `payments_organizations` | Organizations |
| `payments_list_prescriptions` | List prescriptions with filters |
| `payments_create_prescription` | Create a prescription with optional per-person overrides |
| `payments_create_payment` | Record a payment transaction |
| `payments_update_prescription` | Update a prescription |
| `payments_delete_prescription` | Delete a prescription or remove persons from it |
| `payments_update_payment` | Update a payment record |
| `payments_delete_payment` | Delete a payment record |

### Courses / Kurzy

| Tool | Description |
|---|---|
| `courses_version` | API version |
| `courses_student_courses` | Students with courses, lessons, final evaluations, and attendance % |

### Timetable

| Tool | Description |
|---|---|
| `public_events` | Public school events in a date range (no auth required) |
| `changed_timetable` | Substitution schedule — only lessons that changed vs original |

### Direct Attendance / Přímý zápis docházky

| Tool | Description |
|---|---|
| `direct_attendance_lessons` | Lesson overview for a student on a day |
| `direct_attendance_future_excuse` | Submit a future absence notice (avízo) |
| `direct_attendance_current_excuse` | Submit a current excuse (omluvenka) |
| `direct_attendance_record` | Insert an attendance record with optional status/minutes |
| `direct_attendance_student_overview` | Full attendance history for a student |

### Individual Goals / Individuální cíle

| Tool | Description |
|---|---|
| `individual_goals_lesson_content` | Individual lesson content per student |
| `individual_goals_learning_agreements` | Learning agreements with coach feedback and subcompetences |

## Notes

- All dates use `YYYY-MM-DD` format unless noted otherwise.
- Person IDs are unique **within one Edookit instance** but not across different schools.
- `public_events` and `changed_timetable` use the legacy `-login.edookit.net` base URL automatically.
- The Timetable creation module (Tvorba rozvrhů) is not yet publicly available in the Edookit API.

## Development

```bash
git clone https://github.com/thewulf7/edookit-mcp
cd edookit-mcp
npm install
npm run build
```

TDQS

C2.8/5.0

Scored across 46 tools

Disambiguation2/5

Many tools are module-prefixed, but several clusters are hard to distinguish: lessons_list, attendance_daily_schedule, direct_attendance_lessons, and changed_timetable all serve timetable-ish purposes. payments_types and payments_categories are nearly indistinguishable from their descriptions, and person_search, student_personal_data, and attendance_students overlap around person data.

Naming Consistency3/5

Snake_case and module prefixes are reasonably consistent, but verb usage is not: read endpoints appear as bare nouns (attendance_students), list_* (lessons_list), and *_by_date (attendance_passages_by_date). Create operations mix insert_ and create_, and a few tools like person_search and changed_timetable break the module_prefix pattern.

Tool Count2/5

At 46 tools, this is far above the 25-tool threshold and will be difficult for agents to navigate efficiently. The breadth is partly justified by multiple modules, but many tools are trivial version or reference-data endpoints that could be consolidated or removed.

Completeness3/5

Payments has solid CRUD coverage, and attendance includes reading, inserting, and excuse workflows. However, attendance passages and attendance records are insert/read-only with no update/delete, and lessons, courses, evaluations, and individual goals are mostly read-only or single-purpose, leaving notable lifecycle gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues