EssenceStudy Teacher MCP
Run an EssenceStudy course from your terminal — create assignments, attach documents, write rubrics, enrol students, read and grade submissions, publish grades, and watch token spend — through any MCP client (Claude Code, Claude Desktop, or your own agent).
Install
uv pip install -e . # from this directory
Configure
No credentials in config files:
{
"mcpServers": {
"essencestudy-teacher": {
"command": "essencestudy-teacher-mcp"
}
}
}
The first time you use it, run authorize_terminal. It returns a link and a
short code straight away:
Open this link: https://study.essencescholar.com/?device=XXXX-XXXX Code:
XXXX-XXXX
Open the link in the browser where you are already signed in to EssenceStudy,
check the code matches, and press Approve. Then call finish_authorization
to collect the key — it is written to ~/.essencestudy/credentials (mode 600)
and reused from then on.
Two steps rather than one on purpose: a single blocking call cannot show you the code, because an MCP server's stdout is the protocol channel to the client, not your screen.
Revoke it whenever you like — from your profile in the web app, or with
revoke_terminal_access. A revoked key stops working immediately.
Optional environment
ESSENCESTUDY_API_URL— defaults to production. Point athttp://127.0.0.1:8004for nightly; keys are stored per backend URL, so both can be authorised at once. Note nightly shares the production database, so writes there are real.ESSENCESTUDY_API_KEY— supply a key directly and skip the browser step. For CI, where nobody can click Approve.
What you can say
- "List my courses, then show me the assignments in Entrepreneurial Finance."
- "Create a draft assignment in course 6 called 'Variance analysis', restrict the canvas to retriever and agent, and attach ~/cases/board-pack.pdf."
- "Write a four-criterion rubric for assignment 34 weighted 30/30/25/15."
- "Enrol these twelve students and tell me which ones were newly created."
- "Who hasn't started assignment 34? Who is graded but not published?"
- "Publish all graded submissions for assignment 34."
- "What did assignment 34 cost, and which student used the most tokens?"
Two things worth knowing
Draft vs published. create_assignment makes a draft. publish_assignment
is the noisy step: it makes the assignment visible, warms its documents, and
emails every enrolled student. Keep them separate deliberately.
Saved vs published grades. grade_submission saves a grade; the student
sees nothing until publish_grades runs. That gap is the most common reason a
student reports their work was never marked — list_submissions shows
"graded, NOT published" precisely so you can spot it.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file essencestudy_teacher_mcp-0.3.1.tar.gz.
File metadata
- Download URL: essencestudy_teacher_mcp-0.3.1.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6c3e73cbb4d84e6ddccd292ff37ccb374f2c098eb031fd268fec9611a948949
|
|
| MD5 |
b409283c01ace025d2dd0dd2d98aac89
|
|
| BLAKE2b-256 |
80467561e25a98e46d89d03667b464e8e6246a68d9886c1bd452f8eac57a3236
|
File details
Details for the file essencestudy_teacher_mcp-0.3.1-py3-none-any.whl.
File metadata
- Download URL: essencestudy_teacher_mcp-0.3.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dd97b24d6bdb924e596ff8611411714f670a1f6d8e880b04cf24d887ced9ff1
|
|
| MD5 |
62da2a13f3844dfce5d673d7f0fbdfe6
|
|
| BLAKE2b-256 |
255fab3bac159f60423030531cd73b1291876de0452a89b29313fd4786c98bfb
|