PLATO MCP
by plato-mcp.onrender.com in Search & web
PLATO (Pusan National University LMS) MCP server via Moodle Web Service API + ubboard scraping
https://plato-mcp.onrender.com/mcp- Tools
- 67
- open to any client
- Uptime
- 100%
- last 30 days
- Response time
- 309 ms
- 614 ms slowest 5%
- Last check
- Passed
- 8 h ago, next any minute now
Reliability
Status and outage history · Atom feed · Watch with other listings
How to connect
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"plato-mcp": {
"type": "http",
"url": "https://plato-mcp.onrender.com/mcp"
}
}
}67 tools
- list_courses
List the courses the logged-in PLATO account is enrolled in.
- get_course_contents
Get a course's weekly sections, modules, and file links.
- list_assignments
List assignments across one or more courses, with due dates.
- get_assignment_detail
Get one assignment's details and this account's submission status.
- submit_assignment
Submit text and/or file attachments for an assignment. IRREVERSIBLE once dry_run=False. Call with dry_run=True (default) first, show the preview to the user, and only call again with dry_run=False (same parameters) after they explicitly confirm. Provide…
- remove_submission
Withdraw/clear this account's own submission for an assignment. IRREVERSIBLE and DESTRUCTIVE once dry_run=False -- this discards already-submitted work (files/text), not a draft. KNOWN ISSUE: live testing found dry_run=False currently fails with…
- get_grades
Get this account's grade items for a course, if visible.
- get_grades_access_info
Check what grade-related permissions this account has in a course -- e.g. whether it can see its own grades vs. (as a teacher/TA) everyone's grades. Most student accounts will see canviewallgrades=False.
- list_calendar_events
List upcoming calendar events within the next `days_ahead` days.
- get_calendar_access_info
Check this account's calendar-management permissions -- a student account can typically manage its own personal entries only, not course/group entries.
- create_calendar_event
Create a personal calendar entry. IRREVERSIBLE once dry_run=False. Only personal ("user") events are supported -- course/group events are not something a student account can create. Call with dry_run=True (default) first, show the preview to the user…
- delete_calendar_event
Delete a personal calendar entry this account owns. IRREVERSIBLE once dry_run=False. Call with dry_run=True (default) first, show the preview to the user, and only call again with dry_run=False after they explicitly confirm.
- get_unread_messages
Get this account's unread PLATO notifications.
- get_unread_notification_count
Get a count of this account's unread notifications (a cheaper check than get_unread_messages when you don't need the content). Note: PLATO has person-to-person messaging disabled site-wide, so this counts notifications only, not conversation messages.
- list_notices
List announcements posted to a course's Notices board.
- get_notice_detail
Get the full text of one notice/announcement.
- list_qna
List questions posted to a course's Q&A board.
- get_qna_detail
Get one Q&A question's text. Does not include replies -- see issue #23.
- post_qna_question
Post a new question to a course's Q&A board. IRREVERSIBLE and VISIBLE to the instructor once dry_run=False (posted as private/secret by default). Call with dry_run=True (default) first, show the preview to the user, and only call again with dry_run=False…
- download_course_file
Download a course file (the `fileurl` from get_course_contents). Running locally (stdio, e.g. Claude Code/Desktop): saves the file to `save_path` on this machine and returns the saved path -- `save_path` is required in this case. Running as a…
- get_course_completion_status
Get this account's overall course-completion status, if the course has course-level completion criteria configured. Most courses on this platform don't (available=False, with a message explaining why) -- try get_activity_completion_status for per-activity…
- get_activity_completion_status
Get this account's completion status for every activity/module in a course -- richer than get_course_contents's per-module `completed` flag (includes tracking rules, e.g. 'must view' vs 'must spend N minutes'). For `vod` (video lecture) modules…
- get_upcoming_action_events
Get Moodle's own "what needs action soon" feed -- assignments due, video lectures with a watch deadline, etc. -- sorted by urgency, from now onward. Unlike combining list_assignments + get_calendar_events, this is Moodle's own cross-activity prioritized…
- get_courses_by_timeline
List enrolled courses filtered by Moodle's own timeline classification (in-progress/future/past), based on course start/end dates. Unlike list_courses (which returns everything unfiltered), this answers "what am I actually taking right now" directly.
- get_grades_overview
Get this account's overall grade for every enrolled course in one call. For the individual grade *items* within one course (e.g. each assignment's score), use get_grades instead -- this tool only returns one summary grade per course.
- list_quizzes
List quizzes across one or more courses.
- get_quiz_attempts
Get this account's past attempts at one quiz.
- get_quiz_best_grade
Get this account's best grade on one quiz, if any attempt has been graded.
- get_quiz_access_information
Check whether this account can currently attempt a quiz, and why not if blocked (e.g. time window, password, previous attempts exhausted). UNVERIFIED against a real quiz -- call this before start_quiz_attempt and sanity-check the result.
- get_quiz_required_qtypes
List the question types used in a quiz (e.g. 'multichoice', 'truefalse', 'essay') -- useful to know what kind of answers to expect before starting an attempt.
- get_quiz_feedback_for_grade
Get the grade-boundary feedback text configured for a quiz at a given grade (e.g. 'You passed!' / 'Please review chapter 3').
- get_quiz_combined_review_options
Check which review details (marks, feedback, right answers) this account is allowed to see for a quiz's attempts.
- start_quiz_attempt
Start a new attempt at a quiz. IRREVERSIBLE once dry_run=False -- consumes one of the quiz's limited attempts. UNVERIFIED against a real quiz -- call get_quiz_access_information first and check canattempt/preventaccessreasons. Call with…
- get_quiz_attempt_data
Get the questions for one page of an in-progress quiz attempt. Each question's `html` is Moodle's own rendered question form -- parse it for the actual answer-field names before calling save_quiz_attempt_responses/process_quiz_attempt. UNVERIFIED…
- get_quiz_attempt_summary
Get a summary of all questions in an attempt (answered/ unanswered), across all pages. UNVERIFIED against a real quiz.
- get_quiz_attempt_review
Get the grade and per-question review for a finished quiz attempt. UNVERIFIED against a real quiz.
- save_quiz_attempt_responses
Save in-progress answers WITHOUT finishing the attempt -- can still be changed later. UNVERIFIED against a real quiz. Call with dry_run=True (default) first, show the preview to the user, and only call again with dry_run=False after they explicitly…
- process_quiz_attempt
Submit answers for a quiz attempt. IRREVERSIBLE once dry_run=False AND finish_attempt=True -- that is the final, graded submission and cannot be undone. UNVERIFIED against a real quiz. Call with dry_run=True (default) first, show the preview to…
- list_forums
List standard Moodle forums across one or more courses. NOT the same as PLATO's notice/Q&A board (use list_notices/list_qna for that) -- this covers the separate, less-commonly-used mod_forum module.
- get_forum_discussions
List discussion threads in one standard Moodle forum.
Security scan
No findings
We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 8 h ago | Passed | 200 | 358 ms |
| 23 h ago | Passed | 200 | 293 ms |
| 38 h ago | Passed | 200 | 272 ms |
| 2 days ago | Passed | 200 | 337 ms |
| 3 days ago | Passed | 200 | 453 ms |
Show 9 older checks
| 3 days ago | Passed | 200 | 281 ms |
| 4 days ago | Passed | 200 | 252 ms |
| 4 days ago | Passed | 200 | 614 ms |
| 5 days ago | Passed | 200 | 440 ms |
| 5 days ago | Passed | 200 | 514 ms |
| 6 days ago | Passed | 200 | 257 ms |
| 7 days ago | Passed | 200 | 387 ms |
| 7 days ago | Passed | 200 | 260 ms |
| 8 days ago | Passed | 200 | 309 ms |