Skip to main content

EssenceTeacher MCP

An MCP server that puts a teacher's own courses, assignments, submissions and student-support queue in front of an AI assistant — so "where is my class stuck?" is answered from the real data instead of from a description of it.

Companion to essencescholar-mcp, which does the same for the research platform.

Install

Nothing to install — run it with uvx:

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

That's the whole config. There is deliberately no API key in it: the first time a tool needs one, ask your assistant to sign in.

Signing in

Say "sign in to EssenceTeacher". The sign_in tool prints a short code and a URL; open it in a browser where you are already signed in, approve the code, and the key is collected once and stored at ~/.config/essenceteacher/api_key (owner-read only). Later sessions just work.

No key is ever pasted into a chat. Only teaching staff can approve — a student account is refused by the server.

If you would rather manage the credential yourself, set ESSENCETEACHER_API_KEY and sign_in is never needed. ESSENCETEACHER_API_URL points at a different deployment; it defaults to https://api.essencescholar.com (the API host — study.essencescholar.com is the web app and will not answer).

Tools

Getting in — sign_in, whoami

Courses — list_courses, course_details, list_materials, gradebook

Assignments — list_assignments, get_assignment, assignment_usage, list_submissions

Student support — flagged_questions, announcements

Long jobs — list_jobs, get_job

Start at list_courses; its ids feed everything else.

It reads; it does not act

Every tool here is read-only. There is nothing that publishes grades, edits a rubric, posts an announcement or reruns a student's submission — and that is a design decision, not an omission.

Those acts change what a student sees and what a teacher is accountable for. They belong in the app, where the teacher sees the consequence before agreeing to it. An assistant that can publish grades by misreading a sentence is worse than one that cannot publish them at all. When the right next step is one of those, the server's instructions tell the assistant to say so and name the screen.

sign_in is the single exception, and it writes only a credential, with the teacher's own browser consent.

Student data

Rosters, submissions and gradebooks identify real students. Under GDPR the university is the controller, not this tool.

course_details, gradebook and list_submissions say so in their own descriptions, so the assistant knows before it calls them. The server's instructions ask it to answer from aggregates where aggregates will do — a grade distribution rarely needs names attached, and a chat transcript keeps whatever is put into it. Asking for a named list is a teacher's call to make; the point is that names are not reached for by default.

Questions it is good at

  • "Which assignment are students struggling with most?" — flagged_questions across courses, grouped by category.
  • "Has everyone submitted assignment 34?" — list_submissions, counted.
  • "What does this assignment actually require?" — get_assignment for the rubric, in the words the students were given.
  • "Is this assignment expensive to run for 80 students?" — assignment_usage.
  • "The chatbot keeps saying it does not know about X" — list_materials, to check whether X is in the material set at all.

Licence

MIT.

Metadata

Release files for essenceteacher-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for essenceteacher-mcp 0.1.1
File Size Uploaded
essenceteacher_mcp-0.1.1.tar.gz 8.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for essenceteacher-mcp 0.1.1
File Interpreter ABI Platform
essenceteacher_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 17.7 kB

Release files / essenceteacher_mcp-0.1.1.tar.gz

Download URL essenceteacher_mcp-0.1.1.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
bbbd96e7657714c44a1ecf77a52cc28592dcb264ff6f168955020a29dadc1562
BLAKE2b-256 checksum
How to use checksums
d6c035531500b35c0ecfe34004705d0f8da2b003078f555b1857320160fdb965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.15

Release files / essenceteacher_mcp-0.1.1-py3-none-any.whl

Download URL essenceteacher_mcp-0.1.1-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
15fd9cbd14c931f744592b610edd578d436631af6b7e4b1615176a3978fed739
BLAKE2b-256 checksum
How to use checksums
2660f3320274cf390826cd2e015ee624d3e509b5251276a5c955144f9cd25024
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.15

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page