Student Progress Tracker MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Student Progress Tracker MCP ServerShow Alice's learning gaps in Algebra I"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Student Progress Tracker MCP Server
MCP server for AI-powered student progress tracking and learning analytics. Connects to Claude Desktop or Claude Code to give AI assistants the ability to manage students, track assessments, calculate mastery levels, identify learning gaps, and recommend focus areas.
What is MCP?
Model Context Protocol (MCP) is an open standard that lets AI assistants like Claude connect to external tools and data sources. This server exposes student progress tracking as MCP tools that Claude can call directly during conversations.
Related MCP server: EduChain MCP Server
Features
Student profiles - Create and manage student records with grade levels
Course enrollment - Organize students into courses with topics
Assessment tracking - Record tests, quizzes, homework, and practice results
Mastery levels - Automatic topic mastery calculation from question-level data
Learning gap analysis - Identify topics below threshold with severity ratings
Focus recommendations - Prioritized study suggestions based on trends
Class analytics - Grade distribution and topic performance across a class
Question-level telemetry - Track correctness, time, difficulty, and Bloom's level per question
Quick Start
Install
git clone https://github.com/woodstocksoftware/student-progress-tracker.git
cd student-progress-tracker
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txtConfigure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"student-progress": {
"command": "/absolute/path/to/student-progress-tracker/venv/bin/python",
"args": ["/absolute/path/to/student-progress-tracker/run_server.py"]
}
}
}Restart Claude Desktop. The tools will appear automatically.
Configure Claude Code
Add to your project's .mcp.json or global settings:
{
"mcpServers": {
"student-progress": {
"command": "/absolute/path/to/student-progress-tracker/venv/bin/python",
"args": ["/absolute/path/to/student-progress-tracker/run_server.py"]
}
}
}Try It
You: Create a student named Alice in 9th grade
You: Create a course called Algebra I in Mathematics
You: Enroll Alice in Algebra I
You: Create a topic "Linear Equations" in the Algebra course
You: Record Alice's quiz: 85 out of 100
You: What are Alice's learning gaps?
You: What should Alice focus on next?Tool Reference
Student Management
create_student
Create a new student record.
Parameter | Type | Required | Description |
| string | Yes | Student's full name |
| string | No | Email address |
| string | No | e.g., "9th Grade", "College Freshman" |
Create a student named Alice Johnson, email alice@school.edu, in 9th gradelist_students
List all students, optionally filtered by course.
Parameter | Type | Required | Description |
| string | No | Filter by course enrollment |
get_student_profile
Comprehensive profile with courses, statistics, and recent assessments.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
Course Management
create_course
Create a new course.
Parameter | Type | Required | Description |
| string | Yes | e.g., "Algebra I", "Biology 101" |
| string | Yes | e.g., "Mathematics", "Science" |
| string | No | Target grade level |
| string | No | Link to Question Bank MCP |
list_courses
List all courses with enrolled student counts.
enroll_student
Enroll a student in a course.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
| string | Yes | The course ID |
create_topic
Add a topic within a course for mastery tracking.
Parameter | Type | Required | Description |
| string | Yes | The course ID |
| string | Yes | e.g., "Linear Equations" |
| float | No | Importance weight (default 1.0) |
list_topics
List all topics in a course.
Parameter | Type | Required | Description |
| string | Yes | The course ID |
Assessment & Results
create_assessment
Create a test, quiz, homework, or practice assessment.
Parameter | Type | Required | Description |
| string | Yes | The course ID |
| string | Yes | e.g., "Chapter 3 Quiz" |
| string | Yes |
|
| float | Yes | Total points possible |
| int | Yes | Number of questions |
| int | No | Time limit in minutes |
record_assessment_result
Record a student's assessment result with optional question-level data.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
| string | Yes | The assessment ID |
| float | Yes | Points earned |
| float | Yes | Total points possible |
| int | No | Time spent in minutes |
| list | No | Per-question data (see below) |
Each item in question_results:
{
"question_id": "q1",
"topic_id": "topic-abc123",
"is_correct": true,
"time_spent_seconds": 45,
"difficulty": 0.5,
"bloom_level": "application"
}Analytics & Recommendations
get_topic_mastery
View mastery levels by topic with trend indicators.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
| string | No | Filter by course |
get_learning_gaps
Identify topics below a mastery threshold.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
| float | No | Mastery threshold % (default 70) |
get_student_history
Question-level performance history.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
| string | No | Filter by topic |
| int | No | Max records (default 20) |
get_class_analytics
Class-wide performance overview with grade distribution and topic analysis.
Parameter | Type | Required | Description |
| string | Yes | The course ID |
recommend_focus_areas
Personalized study recommendations prioritized by trend and mastery level.
Parameter | Type | Required | Description |
| string | Yes | The student ID |
Data Model
Students ──── Enrollments ──── Courses ──── Topics
│ │ │
│ │ │
└──── Assessment Results ──── Assessments │
│ │
│ │
Question History ──── Topic Mastery ─┘Tables
Table | Purpose |
| Student records (id, name, email, grade_level) |
| Courses with subject and optional question bank link |
| Student-course relationships with status |
| Hierarchical topics within courses with weights |
| Tests, quizzes, homework, practice |
| Which topics an assessment covers |
| Student scores with JSON question-level data |
| Cached mastery level (0-1), trend, question stats |
| Per-question correctness, timing, difficulty, Bloom's level |
Mastery Calculation
Mastery is calculated as questions_correct / questions_attempted per topic. Trends are detected by comparing recent accuracy to overall mastery:
Improving - Recent accuracy > mastery + 10%
Stable - Within 10% of mastery
Declining - Recent accuracy < mastery - 10%
Usage Examples
Track a Student's Math Mastery Over Time
1. Create a student and course
2. Add topics: Linear Equations, Quadratic Equations, Polynomials
3. Record quiz results with question_results linking to topics
4. View mastery: "Show me Alice's topic mastery for Algebra I"
5. Check gaps: "What are Alice's learning gaps?"
6. Get recommendations: "What should Alice focus on next?"Monitor a Class
1. Create a course with multiple enrolled students
2. Record assessment results for each student
3. View analytics: "Show class analytics for Algebra I"
4. See grade distribution and struggling topic areasArchitecture
Claude (Desktop/Code)
│
│ MCP Protocol (stdio)
│
▼
┌─────────────────────────────┐
│ server.py (FastMCP) │
│ 15 tools with @mcp.tool() │
│ Markdown response format │
└─────────────┬───────────────┘
│
▼
┌─────────────────────────────┐
│ database.py (SQLite) │
│ 10 tables, auto-init │
│ Foreign keys + indexes │
└─────────────┬───────────────┘
│
▼
┌─────────────────────────────┐
│ data/student_progress.db │
│ Local file (gitignored) │
└─────────────────────────────┘Key design decisions:
FastMCP decorators for tool registration with auto-generated JSON schemas
stdio transport for communication with Claude
SQLite for zero-config local persistence
Markdown responses with emoji indicators for readability in chat
UUID-prefixed IDs (
stu-,course-,topic-,assess-,result-) for clarityJSON question_results for flexible per-question data storage
Integration with Question Bank MCP
Designed to compose with Question Bank MCP:
Question Bank MCP Student Progress Tracker
┌───────────────────┐ ┌───────────────────────┐
│ Questions │ │ Students │
│ Topics │◄────────►│ Enrollments │
│ Difficulty levels │ │ Assessment Results │
│ Bloom's taxonomy │ │ Topic Mastery │
└───────────────────┘ └───────────────────────┘Link them via question_bank_id when creating a course.
Testing
source venv/bin/activate
pip install pytest
pytest tests/ -vContributing
Fork the repository
Create a feature branch (
git checkout -b feature/your-feature)Make your changes with type hints and docstrings
Run linting:
ruff check src/Run tests:
pytest tests/ -vCommit and open a pull request
License
MIT
Part of the Ed-Tech MCP Suite by Jim Williams | GitHub
MCP Server | Purpose |
Create and manage questions | |
Student Progress | Track performance and mastery |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/woodstocksoftware/student-progress-tracker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server