OpenEdu MCP Server
Provides academic paper search with educational relevance filtering, paper summaries, recent research, and research trend analysis.
Provides educational article search and analysis with grade-level filtering and subject classification, including summaries and content retrieval.
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., "@OpenEdu MCP ServerFind educational books about fractions for 3rd grade"
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.
OpenEdu MCP
An MCP server for educational resource search covering K-12 through college level. It combines four public APIs—Open Library, Wikipedia, Dictionary API, and arXiv—to provide 22 tools for book recommendations, wiki article summaries, vocabulary analysis, and academic paper search.
This repository is a fork and modification of Cicatriiz/openedu-mcp for Goover MCP Hub distribution. The original was stdio transport-only; this repository adds streamable HTTP transport support and fixes a critical bug that made startup impossible.
Basic Information
Item | Details |
MCP name | OpenEdu MCP |
Original repository | |
Language/Runtime | Python 3.9+, |
Transport | stdio (original) + streamable HTTP (new bridge) |
Authentication | None — all 4 data sources are public APIs, no keys required |
Local state | SQLite ( |
Number of tools | 22 |
Related MCP server: MCP Learning Server
Introduction
English
OpenEdu MCP provides curated educational resources for K-12 through college-level learning by combining four public APIs: Open Library, Wikipedia, Dictionary API, and arXiv. It offers 22 tools covering educational book search and recommendations by grade level, Wikipedia article search with grade-appropriate summaries and featured articles, dictionary lookups with vocabulary complexity analysis and pronunciation guides, and academic paper search with research trend analysis by subject and academic level. Every tool tags results with grade-level appropriateness (K-2 through College) and curriculum alignment (e.g., Common Core). Responses are cached locally to reduce redundant API calls. No API keys or authentication are required for any of the underlying data sources.
Korean
OpenEdu MCP is an MCP that provides educational resources from K-12 through college level by combining four public APIs: Open Library, Wikipedia, Dictionary API, and arXiv. With 22 tools in total, it supports grade-level educational book search and recommendations, Wikipedia article search, summaries, and featured articles tailored to grade level, dictionary lookups including vocabulary difficulty analysis and pronunciation guides, and academic paper search and research trend analysis by subject and academic level. Every result is tagged with grade-level appropriateness (K-2~College) and curriculum alignment information (Common Core, etc.). Responses are stored in a local cache to reduce redundant calls, and no API keys or authentication are required.
Provided Tools (22)
Category | Count | Tool names |
Open Library (Books) | 4 |
|
Wikipedia (Articles) | 5 |
|
Dictionary (Dictionary/Vocabulary) | 6 |
|
arXiv (Academic papers) | 6 |
|
Other | 2 |
|
It is a pure tool-based MCP that does not provide prompts/resources.
Changes from the Original
Bug Fixes
1. Crash at import time — a critical defect that made the server itself impossible to start
The original src/main.py had unfinished SSE experiment code left at the bottom.
@mcp.tool(route="/events", methods=["GET"]) # Assuming a route decorator might exist or be added to FastMCP
async def stream_events(request: Request) -> StreamingResponse:@mcp.tool() does not support route/methods arguments, so it crashed immediately with a TypeError, making it impossible to run the server even in stdio mode. The entire sse_event_generator and stream_events functions (about 34 lines) were removed.
2. The mcp package was not in the direct dependency list
requirements.txt/pyproject.toml only specified fastmcp>=0.1.0, but the actual code imported mcp.server.fastmcp, which is separate. It happened to work as a transitive dependency of the fastmcp package, a fragile structure that could break if the fastmcp dependency changes in the future. Added mcp>=1.9.0,<2.0.0 as a direct dependency.
3. Missing HTTP transport configuration
# 변경 전
mcp = FastMCP("openedu-mcp-server")
# 변경 후
mcp = FastMCP(
"openedu-mcp-server",
host=os.getenv("OPENEDU_MCP_HOST", "0.0.0.0"),
port=int(os.getenv("OPENEDU_MCP_PORT", "8000")),
stateless_http=True,
)Also added the missing import os.
Note — Items Resolved Through Deployment Without Code Changes
Since load_config() in src/config.py looks up config/default.yaml using a relative path based on the process cwd, this was resolved by setting the Dockerfile's WORKDIR to the repository root (no code change needed).
HTTP Bridge Addition
Without touching the existing main() (stdio path) at all, a new main_http() function was added to src/main.py.
def main_http():
"""HTTP entry point for the OpenEdu MCP Server (streamable-http transport).
Added for Goover MCP Hub deployment; the original stdio path via main()
is untouched.
"""
try:
asyncio.run(initialize_services())
import atexit
atexit.register(lambda: asyncio.run(cleanup_services()))
logger.info("Starting OpenEdu MCP Server (HTTP)...")
mcp.run(transport="streamable-http")
except KeyboardInterrupt:
logger.info("Server shutdown requested")
except Exception as e:
logger.error(f"Server startup failed:{e}")
sys.exit(1)
finally:
logger.info("OpenEdu MCP Server stopped")New file src/http_entrypoint.py:
"""
HTTP entrypoint for OpenEdu MCP Server (Goover MCP Hub deployment).
Runs the server over streamable-http transport by invoking main_http()
from main.py. The original stdio entrypoint (main.py's main(), run via
`python src/main.py`) is left completely untouched.
Must be run with the repository root as the working directory, since
config.py resolves "config/default.yaml" relative to the process cwd.
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
import main
if __name__ == "__main__":
main.main_http()Items added to pyproject.toml:
dependencies = [..., "mcp>=1.9.0,<2.0.0", ...]
[project.scripts]
openedu-mcp-server = "src.main:main"
openedu-mcp-server-http = "src.main:main_http"Trailing-slash test results: bare /mcp returns 200 and /mcp/ returns 307, confirming normal operation without a separate ASGI wrapper.
How to Run
stdio (Original Method, Kept As-Is)
python src/main.pystreamable HTTP (New, for Goover MCP Hub Distribution)
python src/http_entrypoint.pyDocker
Dockerfile
FROM python:3.11-slim-bookworm
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV OPENEDU_MCP_HOST=0.0.0.0
ENV OPENEDU_MCP_PORT=8000
ENV OPENEDU_MCP_CACHE_PATH=/data/cache.db
EXPOSE 8000
CMD ["python", "src/http_entrypoint.py"]Local Build and Smoke Test
docker build --no-cache --platform linux/amd64 -t openedu-mcp:latest .
docker run -d --name openedu-mcp-test -p 8069:8000 openedu-mcp:latestVerified items:
initialize— no session ID, stateless operation confirmedtools/list— all 22 tools returned correctlytools/call(get_word_definition,"photosynthesis") — actual call to dictionaryapi.dev succeeded, definition, pronunciation, and educational metadata all returned correctly
Notable Features of This Fork
The original repository was only verified for stdio, and unfinished HTTP/SSE code was left in a state that crashed the entire server at import time. This was not a simple configuration omission but a defect at the level of making execution itself impossible.
The
mcppackage existed only as a transitive dependency of thefastmcppackage rather than a direct dependency, making packaging fragile. It was declared as a direct dependency to prepare for future breaking changes.Since the config loader depends on relative paths, this was worked around with the Dockerfile
WORKDIRinstead of code changes.The cache service and usage statistics service share the same SQLite file.
All four external APIs (Open Library, Wikipedia, Dictionary API, arXiv) require no authentication/API keys, so there are no credential management issues.
License
Follows the license of the original repository (Cicatriiz/openedu-mcp). Be sure to check the original LICENSE file before redistribution or commercial use.
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.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol server providing educational resources and curriculum planning support with intelligent filtering across multiple educational APIs.10MIT
- FlicenseNot gradedqualityNot gradedmaintenanceA comprehensive educational server demonstrating Model Context Protocol capabilities for tools, resources, and prompts, allowing AI assistants to connect to external data and functionality.9
- FlicenseBqualityDmaintenanceAn MCP server that utilizes Google Gemini and the educhain library to generate educational content such as MCQs, flashcards, and lesson plans. It provides specialized tools and resources for building structured learning materials directly within MCP-compatible clients like Claude Desktop.2
- AlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with the Dnevnik.ru API to provide AI assistants with access to school schedules, grades, and homework. It enables users to query educational data and manage school-related information through natural language.2MIT
Related MCP Connectors
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
MCP server for generating rough-draft project plans from natural-language prompts.
An MCP server for deep research or task groups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/joohyukjung/openedu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server