LABSCO SUMMARY
Two halves, and you run both.
The MCP server is the small part; the work is the course agent that turns a docs repository into structured lessons, and you run it yourself against the repository you care about. The project describes itself as an experimental MVP, so expect to edit the generation script to point at your own repository and folders.
What it is
An experimental two-part system: a course content agent that reads a documentation repository and generates structured courses from it, and an MCP server that exposes those generated courses to an AI assistant so it can tutor from them.
What you get
- Courses generated from a documentation repository rather than written by hand — the pipeline runs docs through the course agent into structured course content
- Multi-complexity output: beginner, intermediate and advanced versions of the same material
- An MCP server that serves the generated course directory to a client, so the tutor answers from the course rather than from memory
- A documented Cursor setup where
@educational-tutorbrings the course tools into chat
Requirements
Python with uv: create the environment (python -m uv venv), install in editable mode, generate courses, then start the server with .venv/bin/uv run python -m mcp_server.main. The course directory is chosen with the COURSE_DIR environment variable, and the documented client entry passes it explicitly. Course generation itself calls an LLM — the stack section names DSPy for orchestration and Gemini 2.5 Flash for generation — so that half needs a Gemini API key, which it reads from GEMINI_API_KEY in a .env file in the clone. The package is mcp-educational-tutor 0.1.0.
Setup effort
Build from source — git clone https://github.com/moarshy/mcp-tutor.git
USE CASES
Learning an unfamiliar library from its own docs
Generate a course from the library's documentation repository, then ask the tutor questions against it.
Onboarding someone onto an internal codebase
Point the course agent at the internal docs and serve the result as lessons rather than a wiki dump.
Teaching the same material at different depths
Generate beginner, intermediate and advanced versions and hand each person the one that fits.
Keeping the tutor grounded
Serve a fixed course directory so answers come from the generated material rather than the model's recall.
BEFORE YOU INSTALL
What to know first
Requires
- Python 3.11 or newer, with the uv package (the steps run python -m uv)
- GEMINI_API_KEY in a .env file in the clone, for course generation (Gemini 2.5 Flash)
Optional
COURSE_DIR in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/moarshy/mcp-tutor.git
cd mcp-tutor
python -m uv venv
.venv/bin/uv pip install -e .Create a .env file in the clone containing GEMINI_API_KEY=your Gemini API key; course generation calls Gemini 2.5 Flash
.venv/bin/uv run python course_content_agent/test.pyMCP Clients
Cursor
{
"mcpServers": {
"educational-tutor": {
"command": "<YOUR_PATH_TO_TUTOR_PROJECT>/.venv/bin/uv",
"args": [
"--directory",
"<YOUR_PATH_TO_TUTOR_PROJECT>",
"run",
"mcp_server/main.py"
],
"env": {
"COURSE_DIR": "<YOUR_PATH_TO_TUTOR_PROJECT>/course_output"
}
}
}
}Put this in .cursor/mcp.json in your project root. All three paths start with the full path of your mcp-tutor clone. Generate the courses first: the server serves what is in COURSE_DIR.