A Model Context Protocol (MCP) server that acts as an AI tutor based on your local educational materials including lecture notes, handouts, and textbooks.
- Document Access: Automatically indexes and reads educational materials (PDF, TXT, MD)
- Concept Explanation: Get explanations of concepts based on your materials
- Practice Quizzes: Generate quiz questions on specific topics
- Topic Summaries: Create brief or detailed summaries of topics
- Material Search: Search across all materials for specific keywords
- Resource Listing: Browse all available educational documents
- Install dependencies:
npm install- Build the server:
npm run buildCreate a directory for your educational materials and add your files:
mkdir materialsAdd your files to this directory:
- Lecture notes (.txt, .md)
- Handouts (.pdf, .txt, .md)
- Textbook chapters (.pdf)
- Study guides (.md, .txt)
Example structure:
materials/
├── lectures/
│ ├── week1-introduction.md
│ └── week2-advanced-topics.pdf
├── textbooks/
│ ├── chapter1.pdf
│ └── chapter2.pdf
└── handouts/
└── study-guide.txt
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tutor": {
"command": "node",
"args": ["/absolute/path/to/tutor/dist/index.js"],
"env": {
"TUTOR_MATERIALS_PATH": "/absolute/path/to/your/materials"
}
}
}
}Replace the paths with your actual paths.
After updating the configuration, restart Claude Desktop for the changes to take effect.
Once configured, you can use the tutor tools in Claude Desktop:
-
explain_concept
- Explains concepts based on your materials
- Example: "Use explain_concept to explain quantum entanglement"
-
search_materials
- Search for keywords across all materials
- Example: "Use search_materials to find references to 'neural networks'"
-
summarize_topic
- Summarize a topic from your materials
- Example: "Use summarize_topic to summarize machine learning basics"
-
generate_quiz
- Create practice questions on a topic
- Example: "Use generate_quiz to create 5 questions on algorithms"
-
list_topics
- View all available educational documents
- Example: "Use list_topics to see what materials are available"
The server also exposes all your documents as resources that Claude can read directly:
- Each document appears as
tutor:///path/to/document - Claude can read these to provide detailed answers
TUTOR_MATERIALS_PATH: Path to your materials directory (default:./materials)
Watch mode for development:
npm run devBuild for production:
npm run build- Text files: .txt, .md, .markdown
- PDF files: .pdf (text extraction)
- Organize Your Materials: Use subdirectories to organize materials by course, topic, or week
- Clear Filenames: Use descriptive filenames that reflect the content
- Regular Updates: Add new materials as you receive them
- Text Format: For best results, use markdown or text files when possible (faster processing)
If the server reports no materials:
- Check that
TUTOR_MATERIALS_PATHis set correctly - Verify the directory exists
- Ensure files are in supported formats
- Check file permissions
If PDFs aren't being read correctly:
- Ensure PDFs contain text (not just images)
- For scanned documents, use OCR software first
- Check that pdf-parse is installed correctly
- Check the Claude Desktop logs
- Verify all dependencies are installed
- Ensure the path to index.js is correct
- Try running the server manually:
node dist/index.js
User: "I need help understanding the concepts from my lecture notes"
Claude: "I'll help you with that. Let me first see what materials are available." [Uses list_topics tool]
Claude: "I can see your lecture notes on quantum mechanics. What specific concept would you like me to explain?"
User: "Can you explain wave-particle duality?"
Claude: [Uses explain_concept tool with "wave-particle duality"] [Returns relevant excerpts from your materials and explanation]
User: "Can you quiz me on this topic?"
Claude: [Uses generate_quiz tool] [Creates practice questions based on your materials]
MIT