moodle-mcp
moodle-mcp
Moodle LMS용 Model Context Protocol 서버 — Hermes, Claude Code, OpenCode를 Moodle에 연결하세요. 과제, 성적, 마감일을 가져오고 Obsidian에 동기화하며 WhatsApp 알림을 받을 수 있습니다.
개요 • 기능 • 빠른 시작 • 설정 • 에이전트 설정 • 도구 • Obsidian 동기화
개요
moodle-mcp는 Moodle Web Services API를 Model Context Protocol과 연결하여 AI 에이전트가 학업 비서 역할을 할 수 있게 해줍니다. Polibatam(다중 클래스 필터링)용으로 제작되었지만 Web Services가 활성화된 모든 Moodle 인스턴스에서 작동합니다.
loyaniu/moodle-mcp의 포크 — 22개에서 40개 도구로 확장되었으며 Obsidian 동기화, 자료 다운로드, 제출 도구, 캘린더 통합, 동시 가져오기, 학기 자동 아카이브를 포함합니다.
[!TIP] 모든 Moodle LMS에서 작동합니다 —
MOODLE_URL을 인스턴스로 지정하기만 하면 됩니다. Polibatam 클래스 필터(MOODLE_MY_CLASS)는 선택 사항입니다.
Related MCP server: mcp-moodle
기능
과제 및 마감일 — 클래스 슬롯별 필터링, 긴급도별 정렬, 실행 가능한 작업 목록 포함
성적 및 진행 상황 — 강좌 상태 점검, 학업량, 완료 추적
강좌 콘텐츠 및 검색 — 섹션, 모듈, 자료, 공지, 최근 활동
Obsidian 동기화 — 대시보드, 마감일, 강좌 노트를 한 번의 명령으로 내보내기(학기 자동 아카이브 포함)
자료 다운로드 — 강좌 파일 및 과제 첨부 파일 목록 조회 및 다운로드
제출 — 텍스트 제출, 상태 확인, 피드백 읽기
캘린더 — 예정된 이벤트, 알림 만들기(H-2), 활동 완료 표시
에이전트 준비 완료 — Hermes, Claude Code, OpenCode용 단일
install-mcp.sh
빠른 시작
한 줄 설치
curl -fsSL https://raw.githubusercontent.com/zuckdorsey/moodle-mcp/main/scripts/install-mcp.sh | bash설치된 에이전트를 자동 감지하여 각각을 구성합니다. 테스트 실행을 하려면:
bash scripts/install-mcp.sh --dry-run확인
# Hermes (profile: akademik)
hermes --profile akademik mcp test moodle
# → ✓ Connected ✓ Tools discovered: 40
# Claude Code
claude mcp list
# Run tests
PYTHONPATH=src .venv/bin/python -m unittest discover -s tests -v[!NOTE] 개발 시 PyPI보다 로컬 소스를 선호하세요 — 런처가
PYTHONPATH를src/로 자동 설정합니다.
설정
1. Moodle 토큰 가져오기
https://<your-moodle>/user/managetoken.php를 엽니다.Service열에서 Moodle mobile web service 행을 찾습니다.토큰을 복사합니다.
2. .env 만들기
cp .env.example .envMOODLE_URL=https://your-moodle.example.com/webservice/rest/server.php
MOODLE_TOKEN=your_token_here
# Optional — Polibatam class-slot filter (e.g. Pagi C, Siang A)
MOODLE_MY_CLASS=Pagi C
# Optional — custom vault path
OBSIDIAN_VAULT_PATH=/home/you/Obsidian Vault변수 | 필수 | 설명 |
| 예 | Moodle REST 엔드포인트 ( |
| 예 | 모바일 웹 서비스 토큰 |
| 아니요 | 다중 클래스 과제 제목용 정규식 필터 |
| 아니요 | 볼트 루트 (기본값: |
3. 패키지 설치
# with uv (recommended)
uv pip install -e .
# or pip
pip install -e .[!WARNING]
.env를 커밋하지 마세요 — 전체 API 액세스 권한이 있는 토큰이 포함되어 있습니다. 이미.gitignore에 등록되어 있습니다.
에이전트 설정
에이전트를 선택하세요 — 모두 scripts/moodle_mcp_local_launch.py의 동일한 로컬 런처를 사용합니다.
Hermes 에이전트 (권장)
bash scripts/install-mcp.sh --agent hermes --profile akademik수동 설정 (~/.hermes/profiles/akademik/config.yaml):
mcp_servers:
moodle:
command: /home/you/Programming/Python/moodle-mcp/.venv/bin/python
args: [/home/you/Programming/Python/moodle-mcp/scripts/moodle_mcp_local_launch.py]
env:
MOODLE_URL: ${MOODLE_URL}
MOODLE_TOKEN: ${MOODLE_TOKEN}
MOODLE_MY_CLASS: "Pagi C"
OBSIDIAN_VAULT_PATH: "/home/you/Obsidian Vault"Claude Code
bash scripts/install-mcp.sh --agent claude-code
# or manually
claude mcp add -s user moodle-mcp -- python3 /path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py글로벌 JSON (~/.claude/settings.json):
{
"mcpServers": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}OpenCode
bash scripts/install-mcp.sh --agent opencode~/.config/opencode/config.json:
{
"mcp": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"environment": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}Claude Desktop / Cursor
claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}데스크톱 앱을 다시 시작하면 도구가 선택기에 표시됩니다.
도구
7개 그룹에 걸친 40개 도구. 연결된 모든 에이전트에서 이름으로 호출하세요 (예: "내 Moodle 강좌 나열" → get_my_courses).
도구 | 설명 |
| 등록된 강좌 |
| 강좌의 섹션 및 모듈 |
| 전체 자료에서 검색 |
| 뉴스 포럼 공지 |
| 타임스탬프 이후 최근 활동 |
| 새 자료/공지 |
도구 | 설명 |
| 과제 (클래스 슬롯 필터링됨) |
| 제출 및 채점 상태 |
| 마감일 기준으로 정렬된 마감 예정 목록 |
| 기한 초과, 미제출 |
| 우선순위 긴급도 목록 |
| 상태 + 요구사항 + 자료 |
| 산출물 및 기준 |
| 과제와 관련된 콘텐츠 |
| 중요 경로가 있는 하위 작업 |
| 일정, 리소스, 마일스톤 |
| 텍스트 답변 제출 |
| 피드백 및 루브릭 결과 |
도구 | 설명 |
| 개요 또는 강좌별 상세 |
| 완료 진행 상황 |
| 상태 점검 (진행 상황 + 성적 + 기한 초과) |
| 주별 과제 분포 |
| 상세 제출 및 피드백 |
도구 | 설명 |
| 예정된 Moodle 이벤트 |
| H-2 알림 만들기 |
| 완료 상태 |
| 활동 완료 표시 |
도구 | 설명 |
| 강좌 + 마감일 + 성적 |
| 기한 초과, 오늘, 최근 성적 |
| 제출됨, 채점됨, 기한 초과, 진행 상황 |
| 자연어 라우팅 |
| 강좌 변경 감지 |
도구 | 설명 |
| 전체 볼트 동기화 (학기 전환 시 자동 아카이브) |
| 마감일만 내보내기 |
| 강좌 개요를 노트로 내보내기 |
| 다운로드 가능한 파일 목록 |
|
|
| 과제 파일 다운로드 |
[!TIP] 시도해 보세요: "이번 주에 마감되는 것이 무엇인가요?" →
get_upcoming_deadlines, "데이터베이스 과제 분석" →analyze_assignment, "Obsidian에 동기화" →sync_moodle_to_obsidian.
Obsidian 동기화
동기화는 볼트의 Academic/Moodle 아래에 노트를 만듭니다:
Obsidian Vault/Academic/
Moodle/ ← current semester (always up-to-date)
.semester_courses.json ← hidden state (course IDs)
Dashboard.md
Deadlines.md
Grades.md
Courses/
Archive/
Semester-2026-07/ ← auto-created on rollover
Dashboard.md
Courses/
Archive-README.md학기 자동 아카이브는 강좌 ID의 50% 이상이 변경되거나(또는 모두 새 강좌인 경우) 실행됩니다. 단일 강좌 교체는 무시됩니다.
PYTHONPATH=src python - <<'PY'
from moodle_mcp import api
print(api.sync_moodle_to_obsidian())
PY보안 참고 사항
[!CAUTION] Moodle 토큰은 사용자로서의 전체 API 액세스 권한을 부여합니다. 비밀번호처럼 취급하세요.
토큰은 서버 측에서 로드되며 모델에 절대 전송되지 않습니다.
CI에서
MOODLE_URL/MOODLE_TOKEN을 환경 시크릿으로 주입하세요.moodle.py는 Cloudflare 호환성을 위해 브라우저 스타일User-Agent+ POST를 사용합니다.
감사의 말
loyaniu/moodle-mcp의 포크 — 모든 원본 기여자에게 감사를 표합니다:
기여자 | 역할 |
원 |
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
- Alicense-qualityCmaintenanceProvides Claude with full access to Moodle learning management systems, enabling interaction with courses, files, assignments, grades, and calendar events. It also supports building Obsidian study vaults from course materials through automated knowledge graph creation.1416MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- Alicense-qualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- Flicense-qualityCmaintenanceEnables AI assistants to automatically pull Canvas LMS course materials into Obsidian, syncing files, assignments, grades, and announcements organized by course and module.
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
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/zuckdorsey/moodle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server