Server data from the Official MCP Registry
PLATO (Pusan National University LMS) MCP server via Moodle Web Service API + ubboard scraping
About
PLATO (Pusan National University LMS) MCP server via Moodle Web Service API + ubboard scraping
Remote endpoints: streamable-http: https://plato-mcp.onrender.com/mcp
Security Report
67 tools verified ยท Open access ยท No issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Remote servers are capped at 8.0 because source code is not available for review. The score reflects endpoint verification only.
How to Connect
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"io-github-jin-1119-plato-mcp": {
"url": "https://plato-mcp.onrender.com/mcp"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
plato-mcp
๐ ์ค์น ๊ฐ์ด๋ ํ์ด์ง โ ํ๋ฒ/๋น๋ฐ๋ฒํธ๋ง ์ ๋ ฅํ๋ฉด Claude.ai, Claude Code, Codex CLI์ฉ ์ฐ๊ฒฐ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ๋๋ฆฝ๋๋ค.
๋ถ์ฐ๋ํ๊ต(PNU)์ ๋ฌด๋ค(Moodle) ๊ธฐ๋ฐ LMS์ธ PLATO(https://plato.pusan.ac.kr/)๋ฅผ ์ํ ๋น๊ณต์ MCP(Model Context Protocol) ์๋ฒ์ ๋๋ค. Claude ๊ฐ์ AI ์ด์์คํดํธ๊ฐ ์ฌ๋ฌ๋ถ์ ๋์ ํด PLATO์ ๋ก๊ทธ์ธํ์ง ์๊ณ ๋, ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ๊ฐ์ข ์๋ฃยท๊ณต์งยท๊ณผ์ ยท์ฑ์ ยทQ&A๋ฅผ ์กฐํยท์์ฑยท๋ค์ด๋ก๋ํ ์ ์๊ฒ ํด ์ค๋๋ค.
์์ง ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ ์ฒด ๊ตฌํ ๊ณํ์
PLAN.md๋ฅผ, ํ์ฌ ์งํ ์ํฉ์ GitHub Issues / Project ๋ณด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ด ์๋ฒ๋ ์๋ก์ด ๊ถํ์ ๋ถ์ฌํ์ง ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ PLATO ํ๋ฒยท๋น๋ฐ๋ฒํธ๋ก ์ธ์ฆํ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ก ์ง์ ์ด๋ํ ๋ ๋ณผ ์ ์๋ ๊ฒ๋ง ๋ณผ ์ ์์ต๋๋ค โ ๋ค๋ง ๊ทธ ๋ด์ฉ์ด AI์์ ๋ํ๋ก ํ๋ฌ ๋ค์ด๊ฐ๋ค๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์์ํ๊ธฐ ์ ์ ์๋ ๋ฉด์ฑ ์กฐํญ๊ณผ ๊ฐ์ธ์ ๋ณด ์๋ด๋ฅผ ๋ฐ๋์ ์ฝ์ด ์ฃผ์ธ์.
์์ํ๊ธฐ
์ด ํ๋ก์ ํธ๋ ๋ ๋ถ๋ฅ์ ๋ ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค โ ๊ทธ๋ฅ ์จ๋ณด๊ณ ์ถ์ ์ผ๋ฐ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ๊ณ ์น๊ฑฐ๋ ๊ธฐ์ฌํ๊ณ ์ถ์ ๊ฐ๋ฐ์. ์๋์์ ๋ณธ์ธ์๊ฒ ๋ง๋ ์ชฝ์ ๊ณ ๋ฅด์ธ์.
์ผ๋ฐ ์ฌ์ฉ์ โ ๊ทธ๋ฅ ์จ๋ณด๊ณ ์ถ๋ค๋ฉด
์ฝ๋๋ฅผ ๋ด๋ ค๋ฐ๊ฑฐ๋ ์๋ฒ๋ฅผ ์ง์ ์คํํ ํ์๊ฐ ์์ต๋๋ค. ์ด ์๋ฒ๋ ๊ณต์
MCP Registry์
io.github.jin-1119/plato-mcp๋ก ๋ฑ๋ก๋์ด ์๊ณ , ์ค์ ์ฃผ์๋
https://plato-mcp.onrender.com/mcp(Streamable HTTP)์
๋๋ค.
Smithery ๋ง์ผํ๋ ์ด์ค๋ ๋ ์ด์ ์ฐ์ง ์์ต๋๋ค โ Smithery๊ฐ ์ ๊ท ์ธ๋ถ ์๋ฒ ๋ฑ๋ก์ ๋ง๊ณ 2026-10-31์ ์ ์ฒด ์๋น์ค๋ฅผ ์ข ๋ฃํ๋ฉด์, ๊ณต์ ๋ ์ง์คํธ๋ฆฌ๋ก ์ฎ๊ฒผ์ต๋๋ค. ์์ธํ ๋ฐฐ๊ฒฝ์
docs/smithery_deployment_model.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์ฌ์ฉ ์ค์ธ MCP ํด๋ผ์ด์ธํธ์์ ์๋ ์ฃผ์๋ฅผ ์๊ฒฉ(remote) MCP ์๋ฒ๋ก
์ถ๊ฐํฉ๋๋ค:
- Claude.ai / Claude Desktop: ์ค์ โ Connectors โ Add custom
connector โ URL์
https://plato-mcp.onrender.com/mcp์ ๋ ฅ. - Claude Code:
claude mcp add --transport http plato-mcp https://plato-mcp.onrender.com/mcp - MCP Registry๋ฅผ ์ง์ ๊ฒ์ํ ์ ์๋ ํด๋ผ์ด์ธํธ๋ผ๋ฉด
io.github.jin-1119/plato-mcp๋ก ์ฐพ์๋ ๋ฉ๋๋ค.
- Claude.ai / Claude Desktop: ์ค์ โ Connectors โ Add custom
connector โ URL์
- ์ฐ๊ฒฐ ์ PLATO ํ๋ฒ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ (ํด๋ผ์ด์ธํธ๊ฐ ์ง์ํ๋ ๊ฒฝ์ฐ) ์ปค๋ฅํฐ ์ค์
๊ฐ์ผ๋ก, ์๋๋ฉด ํค๋/์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(
pnu_id,pnu_password)๋ก ์ ๋ ฅํฉ๋๋ค. ์ด ๊ฐ์ ์๋ฒ ๋์คํฌ์ ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์๋ง ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํฉ๋๋ค โ ์์ธํ ๋ด์ฉ์SECURITY.md๋ฅผ ํ์ธํ์ธ์. - ์ฐ๊ฒฐ๋๋ฉด AI ์ด์์คํดํธ์๊ฒ ์์ฐ์ด๋ก ์์ฒญํ๋ฉด ๋ฉ๋๋ค. ์:
- "์ด๋ฒ ์ฃผ์ ์ ์ถํด์ผ ํ ๊ณผ์ ๊ฐ ๋ญ๊ฐ ์์ด?"
- "์ด๋ฒ ํ๊ธฐ ์ฑ์ ์๋ ค์ค"
- "OO ๊ณผ๋ชฉ 3์ฃผ์ฐจ ๊ฐ์์๋ฃ ๋ค์ด๋ก๋ํด์ค"
- "OO ๊ณผ๋ชฉ ๊ณต์ง์ฌํญ ์ต๊ทผ ๊ฒ๋ถํฐ ๋ณด์ฌ์ค"
์์ํ๊ธฐ ์ ์ ๋ฐ๋์ ์๋ ๋ฉด์ฑ ์กฐํญ๊ณผ ๊ฐ์ธ์ ๋ณด ์๋ด๋ฅผ ์ฝ์ด ์ฃผ์ธ์. ํนํ ๊ณผ์ ์ ์ถยทQ&A ๋ฑ๋ก์ฒ๋ผ ๋๋๋ฆด ์ ์๋ ๋์(โ๏ธ ํ์)์ ์คํ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ธ์ ๊ฑฐ์น๋๋ก ๋์ด ์์ต๋๋ค.
์ง์ ๋ฐฐํฌํด ๋ณด๊ณ ์ถ๋ค๋ฉด
docs/smithery_publish_guide.md์ ๋น์ ๊ณต์์ฉ ๋จ๊ณ๋ณ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ฐ๋ฐ์ โ ์ฝ๋๋ฅผ ๊ณ ์น๊ฑฐ๋ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด
๋ฒ๊ทธ ์์ , ์ ๋๊ตฌ ์ถ๊ฐ, ๋ฌธ์ ๊ฐ์ ๋ฑ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ์ด์/๋ธ๋์น/PR์ ์ด
์ ์ฅ์๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ด์ํ๋์ง๋ CONTRIBUTING.md์
์ ๋ฆฌ๋์ด ์์ต๋๋ค โ PR์ ๋ณด๋ด๊ธฐ ์ ์ ๋จผ์ ์ฝ์ด ์ฃผ์ธ์. ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์
๋ฐ๋ก ์๋ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์น์
์ ์ฐธ๊ณ ํ์ธ์.
์ ๊ณตํ๋ ๋๊ตฌ (MCP Tools)
๊ณต์ Moodle webservice API๋ก ๋์ํ๋ ๋๊ตฌ์, ubboard(๊ณต์ง/Q&A) HTML์ ๋ณธ์ธ ์ธ์
์ผ๋ก
์คํฌ๋ ์ดํํ๋ ๋๊ตฌ๋ก ๋๋ฉ๋๋ค. ์ฐ๊ธฐ ๋๊ตฌ(โ๏ธ)๋ ์คํ ์ ํ์ธ ์ ์ฐจ๋ฅผ ๊ฑฐ์นฉ๋๋ค
(์์ธํ ๋ด์ฉ์ docs/write_confirmation_pattern.md).
PLATO๊ฐ ์ค์ ๋ก ์ ๊ณตํ๋ 439๊ฐ Moodle API ํจ์ ์ ์ฒด๋ฅผ ์ด MCP๊ฐ ์ด๋ป๊ฒ ๋ค๋ค๋์ง(๊ตฌํ/์ค๋ณต/
๋นํ์ฑํ/๊ถํ์์/๋ฏธ๊ตฌํ ์ฌ์ )๋ docs/moodle_api_coverage.md
์ฐธ๊ณ .
๊ฐ์ข / ๊ณผ์ / ์ฑ์ / ์ผ์ / ์ชฝ์ง โ ๊ณต์ API
list_coursesโ ์๊ฐ ์ค์ธ ๊ฐ์ข ๋ชฉ๋กget_course_contentsโ ๊ฐ์ข ์ฝํ ์ธ (์ฃผ์ฐจ๋ณ ์๋ฃ ๋ฑ)get_course_updates_sinceโ ๊ฐ์ข ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ง (ํ์ค Moodle ๋ชจ๋๋ง โ ubfile/ubboard/vod๋ ๋ณ๊ฒฝ๊ฐ์ง ์ฝ๋ฐฑ ๋ฏธ๊ตฌํ, ํฌํจ ์ ๋จ)get_course_moduleโ cmid๋ก ๋ชจ๋ ์ง์ ์กฐํsearch_coursesโ PLATO ์ ์ฒด ๊ฐ์ข ์นดํ๋ก๊ทธ ๊ฒ์ (์๊ฐ ์ค์ธ ๊ฐ์ข๋ง์ด ์๋)get_recent_coursesโ ์ต๊ทผ ์ ์ํ ๊ฐ์ข ๋ชฉ๋กget_recent_itemsโ ์ต๊ทผ ์ด์ด๋ณธ ๊ฐ์์๋ฃ/ํ๋ ๋ชฉ๋ก (๊ฐ์ข ๋จ์๊ฐ ์๋ ๋ชจ๋ ๋จ์)get_starred_coursesโ ์ฆ๊ฒจ์ฐพ๊ธฐํ ๊ฐ์ข ๋ชฉ๋กlist_video_conferencesโ ํ์๊ฐ์(BigBlueButton) ์กฐํ (์ฐธ์ฌ ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์๋ forward-looking ๊ธฐ๋ฅ)list_lessonsโ Lesson ํ๋ ์กฐํ (์์ ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_workshopsโ Workshop(์ํธํ๊ฐ) ํ๋ ์กฐํ (์ ์ถ/ํ๊ฐ ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_feedbacksโ Feedback(์ค๋ฌธ) ํ๋ ์กฐํ (์๋ต ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_choices/list_surveysโ Choice(ํฌํ)/Survey ํ๋ ์กฐํ (์๋ต ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_scorms/list_h5p_activitiesโ SCORM/H5P ํจํค์ง ์ฝํ ์ธ ์กฐํ (์คํ/์ถ์ ๊ธฐ๋ฅ์ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_glossariesโ Glossary(์ฉ์ด์ง) ์กฐํ (ํญ๋ชฉ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_database_activitiesโ Database ํ๋ ์กฐํ (ํญ๋ชฉ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)list_wikis/list_chatsโ Wiki/์ค์๊ฐ ์ฑํ ํ๋ ์กฐํ (์ฝ๊ธฐ/์ฐ๊ธฐ๋ ๋ฏธ์ง์, ์ค์ฌ์ฉ ์ฌ๋ก ์์)get_user_profileโ ์ฌ์ฉ์ ํ๋กํ ์กฐํ (๊ฐ์ ๊ฐ์ข ์๊ฐ์๋ง, ์ ์ฒด ๊ฒ์ ์๋)get_private_files_info/add_private_fileโ๏ธ โ ๊ฐ์ธํ์ผ ์์ญ ์กฐํ/์ ๋ก๋ (โ ๏ธ ์ญ์ ๋๊ตฌ ์์, ์ค์ ์ญ์ ๋ PLATO ์น์์)get_user_preferencesโ ์ฌ์ฉ์ ํ๊ฒฝ์ค์ ์กฐํ (๋๋ถ๋ถ ๋ด๋ถ UI ์ํ๊ฐ)get_my_course_groupsโ ๊ฐ์ข ๋ด ์์ ๊ทธ๋ฃน ์กฐํget_enrolled_usersโ ๊ฐ์ข ์๊ฐ์ ๋ช ๋จ ์กฐํ (PLATO ์ฐธ๊ฐ์ ๋ชฉ๋ก๊ณผ ๋์ผ ์ ๋ณด)list_assignmentsโ ๊ณผ์ ๋ชฉ๋กget_assignment_detailโ ๊ณผ์ ์์ธsubmit_assignmentโ๏ธ โ ๊ณผ์ ์ ์ถremove_submissionโ๏ธ โ ๊ณผ์ ์ ์ถ ์ฒ ํ (โ ๏ธ ์ค์ ์คํ ๊ฒฝ๋ก๋ ์์ง PLATO์์invalidparameter์ค๋ฅ ๋ฐ์, ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ง ๋์ ํ์ธ๋จ)get_gradesโ ์ฑ์ ์กฐํget_grades_access_infoโ ์ด ๊ณ์ ์ ์ฑ์ ์กฐํ ๊ถํ ํ์ธ (์ ์ฒด ์ด๋ ๊ถํ ๋ฑ)list_calendar_eventsโ ์บ๋ฆฐ๋ ์ผ์ get_calendar_access_infoโ ์บ๋ฆฐ๋ ๊ด๋ฆฌ ๊ถํ ํ์ธcreate_calendar_event/delete_calendar_eventโ๏ธ โ ๊ฐ์ธ ์บ๋ฆฐ๋ ์ผ์ ์์ฑ/์ญ์ (๋ณธ์ธ ์์ ๊ฐ์ธ ์ผ์ ๋ง ๊ฐ๋ฅ, ๊ฐ์ข/๊ทธ๋ฃน ์ผ์ ์ ๋ถ๊ฐ)get_unread_messages/get_unread_notification_countโ ์ ์ฝ์ ์ชฝ์ง (โ ๏ธ PLATO๋ 1:1 ๋ฉ์์ง/๋ํ ๊ธฐ๋ฅ์ด ์ฌ์ดํธ ์ ์ฒด์์ ๋นํ์ฑํ๋์ด ์์ โ ์๋ฆผ๋ง ๋์)get_course_completion_statusโ ๊ฐ์ข ๋จ์ ์ด์ ํํฉ (์ด์ ๊ธฐ์ค์ด ์ค์ ๋ ๊ฐ์ข๋ง)get_activity_completion_statusโ ๊ฐ์ข ๋ด ํ๋/์๋ฃ๋ณ ์ด์ ํํฉ (๋์์ ๊ฐ์ ์์ฒญ๋ฅ ํฌํจ)get_upcoming_action_eventsโ ๋ง๊ฐ ์๋ฐํ ํ ์ผ(๊ณผ์ /์์ฒญ ๊ธฐํ ๋ฑ) ํตํฉ ์กฐํget_courses_by_timelineโ ์งํ ์ค/์์ /์ข ๋ฃ ๊ฐ์ข ํํฐ๋งget_grades_overviewโ ์ ์ฒด ๊ฐ์ข ์ข ํฉ ์ฑ์ ํ ๋ฒ์ ์กฐํlist_quizzes/get_quiz_attempts/get_quiz_best_gradeโ ํด์ฆ ์กฐํget_quiz_access_information/get_quiz_required_qtypes/get_quiz_feedback_for_grade/get_quiz_combined_review_optionsโ ํด์ฆ ์์ ์ ํ์ธ์ฉ ์กฐํ (โ ๏ธ ์๋ต ํํ ๋ฏธ๊ฒ์ฆ โ ์ค์ ํด์ฆ๊ฐ ์๋ ๊ฐ์ข๊ฐ ์์ด์ ํ๋ผ๋ฏธํฐ๋ง ๋ผ์ด๋ธ๋ก ํ์ธ๋จ)start_quiz_attempt/get_quiz_attempt_data/save_quiz_attempt_responses/process_quiz_attempt/get_quiz_attempt_summary/get_quiz_attempt_reviewโ๏ธ โ ํด์ฆ ์์ ํ๋ฆ (โ ๏ธ ์ ์ฒด ๋ฏธ๊ฒ์ฆ, ์ค์ ํด์ฆ๋ก ๋๊น์ง ํ ์คํธ๋ ์ ์์ โ ์ฌ์ฉ ์ ๋ฐ๋์ ์ฌ๊ฒ์ฆ ๊ถ์ฅ)list_forums/get_forum_discussions/get_discussion_postsโ ํ์ค Moodle ํฌ๋ผ ์กฐํ (PLATO ์์ฒด ๊ณต์ง/Q&A์ธubboard์๋ ๋ค๋ฅธ ๋ชจ๋)add_discussion/add_discussion_postโ๏ธ โ ํฌ๋ผ ๊ธ์ฐ๊ธฐ/๋ต๊ธ
๊ณต์ง์ฌํญ / Q&A(ubboard) โ ๋ก๊ทธ์ธ ์ธ์
์คํฌ๋ ์ดํ
list_noticesโ ๊ณต์ง์ฌํญ ๋ชฉ๋กget_notice_detailโ ๊ณต์ง์ฌํญ ์์ธlist_qnaโ Q&A ๊ฒ์๊ธ ๋ชฉ๋กget_qna_detailโ Q&A ๊ฒ์๊ธ ์์ธpost_qna_questionโ๏ธ โ Q&A ์ง๋ฌธ ๋ฑ๋ก
ํ์ผ
download_course_fileโ ๊ฐ์ข ์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ (์๊ฒฉ ์คํ ์ ๋งํฌ ๋ฐํ, ์ ๊ฐ์ธ์ ๋ณด ์๋ด ์ฐธ๊ณ )
์ํคํ ์ฒ
src/plato_mcp/
โโโ server.py # FastMCP ์ฑ, tool ๋ฑ๋ก ์ง์
์
โโโ config.py # Smithery config ์คํค๋ง (pnu_id, pnu_password, ...)
โโโ auth.py # ์ธ์
๋ณ wstoken + requests.Session ์ฟ ํค in-memory ์บ์
โโโ moodle_client.py # webservice/rest/server.php ๋ฒ์ฉ REST ํธ์ถ ๋ํผ
โโโ ubboard/
โ โโโ scraper.py # list_notices/get_notice_detail/list_qna/get_qna_detail
โ โโโ writer.py # post_qna_question (sesskey ์ฒ๋ฆฌ)
โ โโโ parser.py # BeautifulSoup ํ์ฑ
โโโ files.py # download_course_file
โโโ tools/ # MCP tool ๋ฑ๋ก (courses/assignments/grades/calendar/messages/notices_qna/downloads)
โโโ models.py # pydantic ์๋ต ์คํค๋ง
โโโ errors.py # ํ์
์์ธ (AuthError, MoodleAPIError, ScrapeError, RateLimitError)
โโโ security.py # ๋ก๊ทธ/์๊ฒฉ์ฆ๋ช
๋ง์คํน, rate limiting
์ธ์ฆ ํ๋ฆ: ์ธ์
์์ ์ login/token.php๋ก wstoken์ ๋ฐ๊ธ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํฉ๋๋ค.
ubboard(๊ณต์ง/Q&A) ์ ๊ทผ ์์๋ง ์ถ๊ฐ๋ก ์ฟ ํค ๋ก๊ทธ์ธ์ ์ํํด sesskey๋ฅผ ์คํฌ๋ ์ดํํฉ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ๋ ๋์คํฌ์ ์ ์ฅํ์ง ์์ต๋๋ค. ๋ฐฐ๊ฒฝ์ด ๋ ์ฌ์ ์กฐ์ฌ๋
PLATO_MCP_์ฌ์ ์กฐ์ฌ.md, ์ ์ฒด ๋ก๋๋งต์
PLAN.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ฐ๋ฐ ํ๊ฒฝ ์ค์ (๊ธฐ์ฌ์์ฉ)
์๋๋ ์ด ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ์์ /๊ธฐ์ฌํ๋ ค๋ ๊ฐ๋ฐ์์ฉ ๋ช ๋ น์ด์ ๋๋ค. PLATO๋ฅผ ๊ทธ๋ฅ ์จ๋ณด๊ณ ์ถ์ ์ผ๋ฐ ์ฌ์ฉ์๋ ๋ชฐ๋ผ๋ ๋๋ ๋ด์ฉ์ด๋ฉฐ, ์คํํด๋ PLATO ๊ณ์ ์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค โ ์ฝ๋์ ํ ์คํธ ๋๊ตฌ(
pytest,ruff๋ฑ)๋ฅผ ๋ด ์ปดํจํฐ์ ์ค์นํ ๋ฟ์ ๋๋ค.
์ฌ์ ์๊ฑด
- Python 3.11+
- ๋ก์ปฌ ๊ฐ๋ฐ/ํ ์คํธ์๋ ์ค์ PLATO ๊ณ์ ์ด ํ์ ์์ต๋๋ค (ํ ์คํธ๋ mock ๊ธฐ๋ฐ)
pip install -e ".[dev]"
pytest
๋ฉด์ฑ ์กฐํญ
- ๋ถ์ฐ๋ํ๊ต(PNU) ๋๋ PLATO/๋ฌด๋ค ํ๋ซํผ๊ณผ ์๋ฌด๋ฐ ์ ํด ๊ด๊ณ๊ฐ ์์ผ๋ฉฐ, ์ด๋ค์ ์น์ธ์ ๋ฐ์ง ์์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ ๋ธ๋ผ์ฐ์ ๋ก ํ๊ณ ์๋ ๊ฒ๊ณผ ๋์ผํ PLATO ๊ณ์ ์ ๊ทผ์ ์๋ํํ๋ ๋ ๋ฆฝ์ ์ธ ์ปค๋ฎค๋ํฐ ํ๋ก์ ํธ์ ๋๋ค โ ์๋ก์ด ๊ถํ์ ๋ถ์ฌํ์ง ์์ผ๋ฉฐ PNU๋ฅผ ๋์ ํด ์ด๋ ํ ํ์๋ ํ์ง ์์ต๋๋ค.
- ๋ชจ๋ ์ฌ์ฉ์ ๋ณธ์ธ ์ฑ
์์ด๋ฉฐ, PNU์ ์ด์ฉ์ฝ๊ด์ ์ค์ํด์ผ ํฉ๋๋ค. ํนํ ๊ณต์ง์ฌํญ/Q&A
๊ฒ์ํ(
ubboard)์ ๊ณต์ API๊ฐ ์์ด ๋ก๊ทธ์ธ๋ ๋ณธ์ธ ์ธ์ ์ผ๋ก ๋ ๋๋ง๋ HTML์ ์ง์ ์คํฌ๋ ์ดํํ๋๋ฐ, ์ด ์ฌ์ดํธ์robots.txt๋Disallow: /๋ฅผ ๋ช ์ํ๊ณ ์์ต๋๋ค. ์ด ์ง์นจ์ ์ต๋ช ํฌ๋กค๋ฌ๋ฅผ ๊ฒจ๋ฅํ ๊ฒ์ด๋ฉฐ ์ธ์ฆ๋ ์ฌ์ฉ์ ๋ณธ์ธ์ ์ด๋ ํ์๋ฅผ ๊ฒจ๋ฅํ ๊ฒ์ ์๋์ง๋ง, ๊ทธ๋๋ ์คํฌ๋ ์ดํ์ธ ๊ฒ์ ์ฌ์ค์ ๋๋ค. ์ด ์๋ฒ๋ฅผ ๊ณ์ ์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ๋ณธ์ธ ๊ณ์ ์ ๋ํ PNU์ acceptable-use ์ ์ฑ ์ ๋ถํฉํ๋์ง ํ์ธํ ์ฑ ์์ ์ฌ์ฉ์์๊ฒ ์์ต๋๋ค. ๊ถ์ฅ ์ฌ์ฉ ๋ฐฉ์์ ๊ฐ์ธ์ ยท์ ๋น๋ ์ฌ์ฉ์ด๋ฉฐ, ์ฌ์ดํธ ์ ์ฒด๋ฅผ ๋์์ผ๋ก ํ ์๋ ๋๋ ์คํฌ๋ ์ดํ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. - PLATO ๋ก๊ทธ์ธ ์ ๋ณด๋ ์ด ์๋ฒ์ ์ํด ๋์คํฌ์ ์๊ตฌ ์ ์ฅ๋์ง ์์ต๋๋ค. ๋ฌด์์ด,
์ผ๋ง๋ ์ค๋ ์ ์ฅ/๋ณด๊ด๋๋์ง ์ ํํ ๋ด์ฉ์
SECURITY.md๋ฅผ ์ฐธ๊ณ ํ์ธ์. - ์ด ํ๋ก์ ํธ๋ ์ 3์์ ์ํ ๋
๋ฆฝ์ ์ธ ๋ณด์ ๊ฐ์ฌ๋ฅผ ๋ฐ์ง ์์์ต๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์
์์ฒด์ ์ผ๋ก ์ฌ๋ฌ ์๊ฒฉ์ฆ๋ช
์ฒ๋ฆฌยท์ค๋จ์ฉ ๋ฐฉ์ง ์ด์๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์์ ํ์ต๋๋ค
(
docs/security_audit.md,docs/abuse_prevention_review.md์ฐธ๊ณ ) โ ํ์ง๋ง ์ค์ค๋ก ์ฐพ์ ๊ณ ์น ๊ฒ์ ์ธ๋ถ ๊ฐ์ฌ์ ๊ฐ์ ์์ค์ ๋ณด์ฆ์ด ์๋๋๋ค.
๊ฐ์ธ์ ๋ณด ์๋ด
์ด ์๋ฒ๋ ๊ฐ์ข ์ฝํ ์ธ ๋ฅผ ๊ทธ๋๋ก ์ ๋ฌํฉ๋๋ค โ Q&A ๊ฒ์ํ์ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ์๋ค์ ์ด๋ฆ๊ณผ ๊ฒ์๊ธ๋ ํฌํจ๋ฉ๋๋ค. ์ด๋ ๋ณธ์ธ ๊ณ์ ์ด PLATO๋ฅผ ํตํด ์ด๋ฏธ ์ ๋นํ๊ฒ ์ ๊ทผํ ์ ์๋ ๋ด์ฉ์ด๋ฉฐ, ์ด ๋๊ตฌ๊ฐ ์๋ก์ด ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒ์ ์๋๋๋ค. ๋ธ๋ผ์ฐ์ ๋ก PLATO๋ฅผ ์ง์ ์ด๋ํ ๋์ ๋ค๋ฅธ ์ ์, ์ด ๋ด์ฉ์ด AI ์ด์์คํดํธ์ ๋๋๋ ๋ํ์ ์ผ๋ถ๊ฐ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ ๋๊ตฌ ์ถ๋ ฅ์ผ๋ก์ ํด๋น AI/LLM ์ ๊ณต์ ์ฒด(์: Anthropic)์ ์ ์ก๋ฉ๋๋ค. ๊ฐ์ข Q&A ๊ฒ์ํ์ ๋์์ผ๋ก ํญ๋์ ์ง๋ฌธ์ ํ๊ธฐ ์ ์ ์ด ์ ์ ์ ๋ ํ์ธ์.
์ ์ฒด ๊ฒํ ๋ด์ฉ๊ณผ ์๋ ค์ง ๋ฏธํด๊ฒฐ ์ฌํญ(PLATO๊ฐ Q&A ๊ฒ์๊ธ์ "๋น๊ณต๊ฐ/๊ฐ์ฌ ์ ์ฉ" ํ๋๊ทธ๋ฅผ
์๋ฒ ์ธก์์ ์ค์ ๋ก ๊ฐ์ ํ๋์ง โ ์ฆ ์ด ๋๊ตฌ๊ฐ ๊ทธ๋ฐ ๊ฒ์๊ธ์ ์ ์ด์ ๋ณผ ์ ์๋์ง โ
์ฌ๋ถ๋ ์์ง ์ค์ฆ์ ์ผ๋ก ๊ฒ์ฆ๋์ง ์์์ต๋๋ค)์
docs/pii_review.md์์ ํ์ธํ ์ ์์ต๋๋ค.
์๊ฒฉ์ผ๋ก ์คํํ ๊ฒฝ์ฐ (๋ก์ปฌ Claude Code/Desktop์ด ์๋๋ผ Claude.ai ์ปค๋ฅํฐ ๋ฑ์
ํตํด ์คํํ๋ ๊ฒฝ์ฐ), ์ธ๋ผ์ธ ์ ์ก ํฌ๊ธฐ ์ ํ์ ์ด๊ณผํ๋ ํฐ ํ์ผ์ ๋ํด
download_course_file์ ํ์ผ ์์ฒด๊ฐ ์๋๋ผ ๋ค์ด๋ก๋ ๋งํฌ๋ฅผ ๋ฐํํ๋ฉฐ, ์ด ๋งํฌ์๋
์ด์์๋ PLATO ์ก์ธ์ค ํ ํฐ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ํ ํฐ์ ํด๋น ํ์ผ ํ๋์๋ง
ํ์ ๋์ง ์์ต๋๋ค โ ์ค์ ๋ก ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ ๋ณธ์ธ ๊ณ์ ์ ๋ํ ์์์ PLATO API ํธ์ถ์
์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ์ด ๋งํฌ๋ ์ด ๋งํฌ๊ฐ ํฌํจ๋ ๋ํ ๊ธฐ๋ก์ ๊ณต์ ํ๋
๊ฒ์ ํ์ผ ํ๋๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ ์ ๋ํ ํ์ฑ ์๊ฒฉ์ฆ๋ช
์ ๊ณต์ ํ๋ ๊ฒ๊ณผ
๊ฐ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ SECURITY.md์
docs/smithery_deployment_model.md๋ฅผ
์ฐธ๊ณ ํ์ธ์.
- Lint:
ruff check . - ์ด์/๋ณด๋ ์ด์ ๋ฐฉ์์
PLAN.md๋ฅผ ์ฐธ๊ณ ํ์ธ์. - ๊ธฐ์ฌ ๋ฐฉ๋ฒ์
CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ผ์ด์ ์ค
AGPL-3.0์ ๋๋ค. ์ด ์๋ฒ(๋๋ ์์ ๋ณธ)๋ฅผ ๋คํธ์ํฌ ์๋น์ค๋ก ๋๋ ค ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ ๊ณตํ๋ ๊ฒฝ์ฐ, AGPL์ ๋ฐ๋ผ ํด๋น ์์ค์ฝ๋๋ ํจ๊ป ๊ณต๊ฐํด์ผ ํฉ๋๋ค.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto ยท Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai ยท Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Git
Freeby Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace ยท Developer Tools
Search and install MCP servers from inside your AI client.
mcp-creator-python
Freeby mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
