Provides educational access to academic papers with tools for searching, summarizing, retrieving recent research, filtering by academic level, and analyzing research trends in various subjects.
Used for intelligent caching with TTL support to improve performance and reduce API calls to external services.
Enables educational article search and retrieval with grade-level filtering, content analysis, article summaries, and subject-based article discovery for different educational contexts.
OpenEdu MCP Server
A comprehensive Model Context Protocol (MCP) server designed to provide educational resources and support curriculum planning for educators. This server integrates with multiple educational APIs to provide access to books, articles, definitions, and research papers with intelligent educational filtering and grade-level appropriateness.
🎓 Features
Complete API Integration Suite
📚 Open Library Integration: Educational book search, recommendations, and metadata
🌐 Wikipedia Integration: Educational article analysis with grade-level filtering
📖 Dictionary Integration: Vocabulary analysis and language learning support
🔬 arXiv Integration: Academic paper search with educational relevance scoring
Educational Intelligence
Grade Level Filtering: K-2, 3-5, 6-8, 9-12, College level content
Subject Classification: Mathematics, Science, ELA, Social Studies, Arts, PE, Technology
Curriculum Alignment: Common Core, NGSS, State Standards support
Educational Metadata: Complexity scoring, reading levels, educational value assessment
Performance & Reliability
Intelligent Caching: SQLite-based caching with TTL support
Rate Limiting: Built-in rate limiting to respect API quotas
Usage Analytics: Comprehensive usage tracking and performance metrics
Error Handling: Robust error handling with educational context preservation
🚀 Quick Start
Prerequisites
Python 3.9 or higher
pip package manager
Installation
Clone the repository:
Install dependencies:
Set up configuration:
Run the server:
Test the installation:
Development Setup
For development, install additional dependencies:
Run tests:
Format code:
🛠️ MCP Tools Reference
The Education MCP Server provides 21+ MCP tools across four API integrations:
📚 Open Library Tools (4 tools)
search_educational_books
Search for educational books with grade-level and subject filtering.
get_book_details_by_isbn
Get detailed book information by ISBN with educational metadata.
search_books_by_subject
Search books by educational subject with curriculum alignment.
get_book_recommendations
Get curated book recommendations for specific grade levels.
🌐 Wikipedia Tools (5 tools)
search_educational_articles
Search Wikipedia articles with educational filtering and analysis.
get_article_summary
Get article summaries with educational metadata and complexity analysis.
get_article_content
Get full article content with educational enrichment.
get_featured_article
Get Wikipedia's featured article with educational analysis.
get_articles_by_subject
Get articles by educational subject with grade-level filtering.
📖 Dictionary Tools (5 tools)
get_word_definition
Get educational word definitions with grade-appropriate complexity.
get_vocabulary_analysis
Analyze word complexity and educational value.
get_word_examples
Get educational examples and usage contexts for vocabulary.
get_pronunciation_guide
Get phonetic information and pronunciation guides.
get_related_vocabulary
Get synonyms, antonyms, and related educational terms.
🔬 arXiv Tools (5 tools)
search_academic_papers
Search academic papers with educational relevance filtering.
get_paper_summary
Get paper summaries with educational analysis and accessibility scoring.
get_recent_research
Get recent research papers by educational subject.
get_research_by_level
Get research papers appropriate for specific academic levels.
analyze_research_trends
Analyze research trends for educational insights.
🖥️ Server Tools (1 tool)
get_server_status
Get comprehensive server status and performance metrics.
🔌 Connectivity Endpoints
This section details how to interact with the OpenEdu MCP Server through various interfaces, including direct standard I/O, HTTP for tool execution, and Server-Sent Events for real-time updates.
Stdio Tool (handle_stdio_input
)
The server includes a tool designed for direct command-line or piped input.
Tool Name:
handle_stdio_input
Description: Processes a single line of text input and returns a transformed version. This is useful for basic interaction or scripting with the MCP server if it's configured to listen to stdin.
Signature:
async def handle_stdio_input(ctx: Context, input_string: str) -> str
Example Interaction:
Tool: handle_stdio_input Input: "your text here" Output: "Processed: YOUR TEXT HERE"
HTTP Endpoint for MCP Tools
All registered MCP tools (including handle_stdio_input
and the 20+ tools listed above) are accessible via HTTP. This allows integration with various applications and services. The server likely uses a JSON RPC style for these interactions.
Endpoint:
POST /mcp
(This is a common convention for FastMCP servers supporting JSON RPC)Request Method:
POST
Headers:
Content-Type: application/json
Request Body Structure (JSON RPC):
{ "jsonrpc": "2.0", "method": "<tool_name>", "params": {"param1": "value1", ...}, "id": "your_request_id" }Example :
curl -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "method": "handle_stdio_input", "params": {"input_string": "hello from http"}, "id": 1}' \ http://localhost:8000/mcpExpected Response:
{ "jsonrpc": "2.0", "result": "Processed: HELLO FROM HTTP", "id": 1 }If an error occurs, the
result
field will be replaced by anerror
object containingcode
andmessage
.
Server-Sent Events (SSE) Endpoint
The server provides an SSE endpoint for real-time notifications. This is useful for clients that need to stay updated with server-initiated events.
Endpoint:
GET /events
Description: Streams events from the server to the client.
Event Format: Each event is sent as a block of text:
event: <event_type> data: <json_payload_of_the_event_data> id: <optional_event_id>(Note: An empty line separates events.)
Known Events:
connected
: Sent once when the client successfully connects to the SSE stream.data
:{"message": "Successfully connected to SSE stream"}
ping
: Sent periodically as a heartbeat to keep the connection alive and indicate server health.data
:{"heartbeat": <loop_count>, "message": "ping"}
(loop_count increments)
error
: Sent if an error occurs within the SSE generation stream.data
:{"error": "<error_message>"}
Example: Connecting with JavaScript's :
const evtSource = new EventSource("http://localhost:8000/events"); evtSource.onopen = function() { console.log("Connection to SSE opened."); }; evtSource.onmessage = function(event) { // Generic message handler if no specific event type is matched console.log("Generic message:", event.data); try { const parsedData = JSON.parse(event.data); console.log("Parsed generic data:", parsedData); } catch (e) { // Data might not be JSON } }; evtSource.addEventListener("connected", function(event) { console.log("Event: connected"); console.log("Data:", JSON.parse(event.data)); }); evtSource.addEventListener("ping", function(event) { console.log("Event: ping"); console.log("Data:", JSON.parse(event.data)); }); evtSource.addEventListener("error", function(event) { if (event.target.readyState === EventSource.CLOSED) { console.error("SSE Connection was closed.", event); } else if (event.target.readyState === EventSource.CONNECTING) { console.error("SSE Connection is reconnecting...", event); } else { // An error occurred while streaming, data might be available console.error("SSE Error:", event); if (event.data) { try { console.error("Error Data:", JSON.parse(event.data)); } catch (e) { console.error("Error Data (raw):", event.data); } } } });Example: Connecting with :
curl -N -H "Accept:text/event-stream" http://localhost:8000/events(Note:
💻 Editor & AI Tool Integration
You can integrate the OpenEdu MCP Server with various AI-assisted coding tools and IDE plugins. This allows these tools to leverage the server's educational functionalities directly within your development environment. Configuration typically involves telling the editor how to start and communicate with the OpenEdu MCP server. The server is run using python -m src.main
from the root of this project.
Below are example configurations for some popular tools. You may need to adjust paths (e.g., for cwd
or if you have a specific Python environment) based on your local setup.
Cursor
To add this server to Cursor IDE:
Go to
Cursor Settings > MCP
.Click
+ Add new Global MCP Server
.Alternatively, add the following configuration to your global
.cursor/mcp.json
file (ensurecwd
points to the root directory of this project):
See the Cursor documentation for more details.
Windsurf
To set up MCP with Windsurf (formerly Cascade):
Navigate to
Windsurf - Settings > Advanced Settings
or use the Command Palette toOpen Windsurf Settings Page
.Scroll down to the Cascade section and add the OpenEdu MCP server directly in
mcp_config.json
(ensurecwd
points to the root directory of this project):
Cline
Add the following JSON manually to your cline_mcp_settings.json
via Cline's MCP Server setting (ensure cwd
points to the root directory of this project):
Roo Code
Access the MCP settings by clicking Edit MCP Settings
in Roo Code settings or using the Roo Code: Open MCP Config
command in VS Code's command palette (ensure cwd
points to the root directory of this project):
Claude
Add the following to your claude_desktop_config.json
file (ensure cwd
points to the root directory of this project):
See the Claude Desktop documentation for more details if available.
📋 Educational Use Cases
Elementary Education (K-2)
Middle School STEM (6-8)
High School Advanced (9-12)
College Research
⚙️ Configuration
Configuration Files
The server uses YAML configuration files in the config/
directory:
Environment Variables
Override configuration with environment variables:
🏗️ Architecture
📊 Performance
Caching Strategy
Cache Hit Rate: >70% for repeated queries
Response Time: <500ms for cached requests, <2000ms for uncached
Cache Size: Configurable with automatic cleanup
TTL Management: Intelligent expiration based on content type
Rate Limiting
Open Library: 100 requests/minute
Wikipedia: 200 requests/minute
Dictionary: 450 requests/hour
arXiv: 3 requests/second
Concurrent Handling
Async Operations: Non-blocking I/O for all API calls
Connection Pooling: Efficient HTTP connection management
Resource Limits: Configurable memory and disk usage limits
🧪 Testing
Run All Tests
Test Coverage
Validation Tests
🧪 Real API Validation Tests
We've implemented comprehensive real-world validation tests to ensure production readiness. These tests verify functionality against live services, not mocks.
Features
Tests all 20+ MCP tools against their respective live APIs
Validates educational workflows for different grade levels
Measures performance metrics (response times, cache rates, error rates)
Tests error handling with invalid inputs and edge cases
Verifies caching behavior with real API responses
Running Validation Tests
The script will:
Test all API integrations (Open Library, Wikipedia, Dictionary, arXiv)
Validate educational workflows:
Elementary Education (K-2)
High School STEM (9-12)
College Research
Educator Resources
Measure performance metrics:
Response times for each API
Cache hit/miss rates
Rate limiting effectiveness
Educational filtering processing time
Generate a detailed JSON report with test results and performance statistics
Test Cases
Open Library:
Search for "Harry Potter" with grade-level filtering
Get book details by ISBN (e.g., 9780439064866)
Check availability for a known book
Verify educational metadata enrichment
Wikipedia:
Search for "Quantum Mechanics" with academic level filtering
Get article summary for "Albert Einstein"
Retrieve featured article of the day
Verify content analysis and complexity scoring
Dictionary API:
Get definition for "photosynthesis" with educational context
Test pronunciation guide for "quinoa"
Verify vocabulary analysis for STEM terms
Test grade-level appropriate definitions
arXiv:
Search for "machine learning" papers with educational filtering
Get recent AI research papers
Verify academic level assessment
Test research trend analysis
📚 Documentation
Educational Features Guide: Complete educational capabilities
API Reference: Detailed MCP tool documentation
Performance Benchmarks: Real-world test results and metrics
Deployment Guide: Production deployment instructions
Performance Guide: Optimization and monitoring
🔧 Development Status
✅ COMPLETE - All Features Implemented
Core Infrastructure ✅
Project structure and configuration
Core services (caching, rate limiting, usage tracking)
Base models and validation
FastMCP server setup
Educational filtering framework
API Integrations ✅
Open Library API integration (4 tools)
Wikipedia API integration (5 tools)
Dictionary API integration (5 tools)
arXiv API integration (5 tools)
Educational content filtering
Cross-API educational workflows
Testing & Documentation ✅
Comprehensive unit tests
Integration test suite
Performance benchmarks
Demo script with all features
Complete documentation
API reference guide
🤝 Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature
)Make your changes
Add tests for new functionality
Run the test suite (
pytest
)Commit your changes (
git commit -m 'Add amazing feature'
)Push to the branch (
git push origin feature/amazing-feature
)Open a Pull Request
Development Guidelines
Follow PEP 8 style guidelines
Add type hints for all functions
Include docstrings for all public methods
Write tests for new features
Update documentation as needed
📄 License
This project is licensed under the MIT License.
🆘 Support
For questions, issues, or contributions:
Issues: Create an issue in the repository
Documentation: Check the
docs/
directoryDiscussions: Use GitHub Discussions for questions
Email: Contact the maintainers
🙏 Acknowledgments
Built with FastMCP framework
Integrates with Open Library, Wikipedia, Dictionary API, and arXiv
Designed for educational use cases and curriculum planning
Inspired by the need for accessible educational technology
OpenEdu MCP Server - Empowering educators with intelligent educational resource discovery and curriculum planning tools.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A comprehensive Model Context Protocol server providing educational resources and curriculum planning support with intelligent filtering across multiple educational APIs.
Related MCP Servers
- AsecurityFlicenseAqualityA Model Context Protocol server that enables interaction with the Canvas Learning Management System API, allowing users to manage courses, assignments, enrollments, and grades within Canvas.Last updated -542350JavaScript
- -securityAlicense-qualityAn educational implementation of a Model Context Protocol server that demonstrates how to build a functional MCP server integrating with various LLM clients.Last updated -2MIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that enables intelligent searching across documentation for 30+ programming libraries and frameworks, fetching relevant information from official sources.Last updated -226MIT License
- -securityFlicense-qualityA comprehensive educational server demonstrating Model Context Protocol capabilities for tools, resources, and prompts, allowing AI assistants to connect to external data and functionality.Last updated -0