EduChain MCP Server
# EduChain MCP Server
A Model Context Protocol (MCP) server that integrates [EduChain](https://github.com/satvik314/educhain)'s educational content generation capabilities with Claude Desktop and other MCP-compatible clients.
## šÆ Overview
The EduChain MCP Server provides three powerful educational tools accessible through Claude Desktop:
- **š Multiple Choice Questions (MCQs)**: Generate well-structured questions with plausible distractors
- **š Lesson Plans**: Create comprehensive, structured lesson plans with objectives, activities, and assessments
- **šļø Flashcards**: Generate educational flashcards optimized for spaced repetition learning
## š Features
- **Claude Desktop Integration**: Seamless integration with Claude Desktop via MCP protocol
- **Type-Safe Implementation**: Full type hints and comprehensive docstrings
- **Error Handling**: Robust error handling and graceful degradation
- **Logging**: Comprehensive logging for debugging and monitoring
- **Input Validation**: Thorough validation of all input parameters
- **Environment Configuration**: Support for environment variables
- **MCP Inspector Compatible**: Works with MCP Inspector for debugging
## š Requirements
- Python 3.10 or higher
- OpenAI API key (for EduChain functionality)
- Claude Desktop (for MCP integration)
## š§ Installation
1. **Clone the repository:**
```bash
git clone https://github.com/yourusername/educhain-mcp.git
cd educhain-mcp
```
2. **Install dependencies:**
```bash
pip install -e .
```
Or install manually:
```bash
pip install educhain>=0.3.10 httpx>=0.28.1 "mcp[cli]>=1.10.1" python-dotenv
```
3. **Set up environment variables:**
Create a `.env` file in the project root:
```env
OPENAI_API_KEY=your_openai_api_key_here
```
## š Usage
### Running the Server
```bash
python mcp_server.py
```
The server will start and listen for MCP connections via stdio transport, making it compatible with Claude Desktop.
### Claude Desktop Configuration
Add the following to your Claude Desktop configuration file:
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Linux:** `~/.config/claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"Educhain_mcp": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/Educhain_mcp",
"run",
"mcp_server.py"
]
}
}
}
```
### MCP Inspector
For debugging and development, you can use the MCP Inspector:
```bash
npx @modelcontextprotocol/inspector python mcp_server.py
```
## š ļø Available Tools
### 1. Generate MCQs
**Function:** `generate_mcqs(topic: str, num_questions: int = 5)`
**Description:** Generate multiple-choice questions for a given educational topic.
**Parameters:**
- `topic` (str): The educational topic (e.g., "Photosynthesis", "World War II")
- `num_questions` (int, optional): Number of questions to generate (1-20, default: 5)
**Example:**
```python
result = generate_mcqs("Photosynthesis", 3)
```
### 2. Lesson Plan
**Function:** `lesson_plan(topic: str, duration: Optional[str] = None, grade_level: Optional[str] = None)`
**Description:** Generate a comprehensive, structured lesson plan.
**Parameters:**
- `topic` (str): The lesson topic (e.g., "Introduction to Fractions")
- `duration` (str, optional): Lesson duration (e.g., "45 minutes", "1 hour")
- `grade_level` (str, optional): Target grade level (e.g., "Grade 5", "High School")
**Example:**
```python
result = lesson_plan("Photosynthesis", "50 minutes", "Grade 7")
```
### 3. Generate Flashcards
**Function:** `generate_flashcards(topic: str, num_cards: int = 10, difficulty: Optional[str] = None)`
**Description:** Generate educational flashcards for study and memorization.
**Parameters:**
- `topic` (str): The subject area (e.g., "Spanish Vocabulary - Animals")
- `num_cards` (int, optional): Number of flashcards to generate (1-50, default: 10)
- `difficulty` (str, optional): Difficulty level ("beginner", "intermediate", "advanced")
**Example:**
```python
result = generate_flashcards("Spanish Vocabulary - Animals", 5, "beginner")
```
## š Project Structure
```
educhain-mcp/
āāā mcp_server.py # Main MCP server implementation
āāā main.py # Simple entry point (not used for MCP)
āāā pyproject.toml # Project configuration and dependencies
āāā README.md # This documentation
āāā .env # Environment variables (create this)
```
## š Logging
The server includes comprehensive logging to help with debugging and monitoring:
- **INFO Level**: Server startup, tool execution, and success messages
- **WARNING Level**: Missing environment variables and non-critical issues
- **ERROR Level**: Tool execution failures and server errors
Logs are formatted with timestamps and include the module name for easy identification.
## š”ļø Error Handling
The server implements robust error handling:
- **Input Validation**: All parameters are validated before processing
- **Graceful Degradation**: Errors are returned as structured responses
- **Logging**: All errors are logged with detailed messages
- **Type Safety**: Full type hints prevent common runtime errors
## š¤ Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## š Acknowledgments
- [EduChain](https://github.com/satvik314/educhain) for the educational content generation capabilities
- [Model Context Protocol](https://modelcontextprotocol.io/) for the integration framework
- [Claude Desktop](https://claude.ai/) for the AI assistant platform
## š§ Support
For issues, questions, or contributions, please:
1. Check the [Issues](https://github.com/yourusername/educhain-mcp/issues) page
2. Create a new issue if your problem isn't already listed
3. Provide detailed information about your environment and the issue
## š Changelog
### v0.1.0
- Initial release
- Basic MCP server implementation
- Three educational tools: MCQs, lesson plans, flashcards
- Claude Desktop integration
- Comprehensive documentation and error handling
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: generate_flashcards creates study cards for memorization, generate_mcqs produces multiple-choice questions for assessment, and lesson_plan designs structured teaching guides. There is no overlap in functionality, and the descriptions clearly differentiate their educational applications.
All three tools follow a consistent verb_noun naming pattern (generate_flashcards, generate_mcqs, lesson_plan). The use of 'generate' for two tools and 'lesson' for the third is appropriate given their distinct outputs, maintaining readability and predictability throughout.
With only 3 tools, the server feels under-scoped for an educational content generation domain. While the tools cover flashcards, MCQs, and lesson plans, there are likely missing operations like quiz generation, study guides, or content summarization that would better serve the apparent purpose.
The tool set has significant gaps for an educational server. It lacks tools for updating or managing generated content, creating different assessment types (e.g., essays, true/false), or integrating with learning management systems. This incomplete coverage may lead to agent failures when broader educational workflows are needed.