DAMI Robot MCP Server
This server provides a read-only interface for teachers to query Moodle student data via the DAMI Robot API, secured by strict speaker authorization and context isolation. It supports no write or administrative actions.
Test Connection: Verify connectivity to the DAMI Moodle Robot API without requiring speaker authorization.
Find Student: Locate a student by name, email, user ID, and optionally filter by course/group; supports disambiguating duplicate names.
Get Student Summary: Retrieve an overview of a student's academic status, including attendance, missing homework, suspension status, latest scores, and DAMI level/EXP.
Get Student Attendance: Fetch attendance records, including absences, lateness, warnings, and recent attendance history.
Get Missing Homework: List missing or incomplete online assignments.
Get Student Suspend Status: Check whether a student is suspended, locked, on hold, or at risk of being locked.
Get Student DAMI Status: View diligence points, study hours, streak, EXP, level, energy, and ranking.
Get Student Latest Scores: Get recent section scores (e.g., Listening/Reading, Speaking, Writing), including strengths and weaknesses.
Get Student Fulltest History: View full test/LR performance history, recent tests, and score trends.
Get Student Goal Status: Show target score, exam date, progress toward the goal, and whether it has been achieved.
Get Course Risk Students: Identify at-risk students in a course/group based on missing homework, low diligence, or potential suspension.
Provides tools to query student data from Moodle, including summaries, attendance, homework, status, and risk analysis via the local_damirobot_api plugin.
Click on "Deploy 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., "@DAMI Robot MCP Server check attendance for student 42"
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.
DAMI Moodle Robot MCP Server v0.2.2
Zero-dependency MCP STDIO server for Xiaozhi/imcp. This version does not use @modelcontextprotocol/sdk, so it is lighter and easier for hosted MCP gateways to run from GitHub with npx.
imcp Manual STDIO configuration
Mode: STDIO
Command: npx
Arguments:
-y
--package
github:trantuandat0305/damirobot-mcp-server
damirobot-mcp-serverIf the gateway still cannot load schemas, try the shorter argument form:
-y
github:trantuandat0305/damirobot-mcp-serverEnvironment variables:
VOICE=1
MOODLE_BASE_URL=https://elearning.anhngumsmy.com
DEFAULT_COURSEID=4
MOODLE_API_TOKEN=PUT_YOUR_TOKEN_HERE
REQUEST_TIMEOUT_MS=15000
MOODLE_TOOL_ENDPOINT=https://elearning.anhngumsmy.com/local/damirobot_api/api/tool.php
# Optional stricter whitelist.
# Leave empty to allow any non-empty speakerId produced by Xiaozhi voiceprint recognition.
# Example: ALLOWED_SPEAKER_IDS=id_1,id_2
ALLOWED_SPEAKER_IDS=Related MCP server: moodle-mcp
Speaker authorization gate
All student-data tools are mandatory fail-closed before Moodle is called.
Missing/null/invalid
speakerId: denied.Sentinel values such as
null,undefined,unknown,anonymous,guest,none: denied.speakerIdmust come from Xiaozhi top-levelparams.speakerId;_meta.speakerIdis accepted as fallback.arguments.speakerIdis deliberately ignored, so the LLM/tool arguments cannot grant access to themselves.When
ALLOWED_SPEAKER_IDSis empty, any valid Xiaozhi-recognizedspeakerIdis accepted. This supports adding a new registered speaker without firmware changes or MCP code changes.When
ALLOWED_SPEAKER_IDSis configured, only exact IDs in that list are accepted.test_connectionremains available without speaker recognition because it exposes no student data.There is no environment-variable bypass for the student-data guard.
Context isolation
The MCP server tracks the current recognized speaker so follow-up questions can work safely.
Same authorized
speakerId: student follow-up context may be reused.Different authorized
speakerId: student/course/group follow-up context is cleared before the next data call.Missing/denied speaker: all speaker-bound context is cleared.
This prevents a later speaker from inheriting the previous speaker's selected student.
Tests
npm run check
npm testThe regression suite verifies fail-closed behavior, argument spoof rejection, malformed speaker IDs, optional explicit allowlists, speaker-switch context isolation, same-speaker follow-up context, and the non-sensitive test_connection exception.
GitHub Actions runs these checks on pushes and pull requests to main.
Tools
test_connectionfind_studentget_student_summaryget_student_attendanceget_missing_homeworkget_student_suspend_statusget_student_dami_statusget_student_latest_scoresget_student_goal_statusget_student_fulltest_historyget_course_risk_students
Safety
Student-data tools require an authorized Xiaozhi speaker identity.
Read-only: only calls the Moodle DAMI Robot API.
Does not write, update, delete, suspend, check-in, or feed DAMI.
No token is stored in code. Put token only in environment variables.
Available Tools
11 toolsfind_studentA
Tìm học viên theo tên/email/userid và lớp/course/group. Dùng khi giáo viên vừa nhắc tên học viên hoặc khi cần phân biệt trùng tên.
Inputs: email, userid, groupid, courseid, +3 more.
get_course_risk_studentsA
Dùng khi hỏi trong lớp/course có ai rủi ro, ai thiếu bài, ai chăm chỉ thấp, ai sắp bị đình chỉ hoặc cần nhắc nhở.
Inputs: limit, groupid, courseid, group_name, +1 more.
get_missing_homeworkB
Dùng khi hỏi học viên còn thiếu bài/nợ bài/chưa làm bài online nào. Không dùng cho câu hỏi thiếu bao nhiêu điểm.
Inputs: email, userid, groupid, courseid, +3 more.
get_student_attendanceA
Dùng khi hỏi điểm danh, đi học, nghỉ/vắng, trễ, cảnh báo C/D, nghỉ buổi nào hoặc lịch sử điểm danh gần đây của học viên.
Inputs: email, limit, userid, groupid, +4 more.
get_student_dami_statusB
Dùng khi hỏi điểm chăm chỉ/chuyên cần, giờ học, ngày học, streak, EXP, level DAMI, energy hoặc xếp hạng của học viên.
Inputs: email, userid, groupid, courseid, +3 more.
get_student_fulltest_historyB
Dùng khi hỏi lịch sử FULL TEST/LR, các bài FULL TEST gần nhất, 3-5 bài gần đây, điểm tăng hay giảm, xu hướng điểm hoặc tiến bộ qua các FULL TEST.
Inputs: email, limit, userid, groupid, +4 more.
get_student_goal_statusA
Dùng khi hỏi mục tiêu điểm thi, ngày thi, còn thiếu bao nhiêu điểm để đạt mục tiêu, đã đạt mục tiêu chưa hoặc tiến độ mục tiêu của học viên.
Inputs: email, userid, groupid, courseid, +3 more.
get_student_latest_scoresB
Dùng khi hỏi điểm gần nhất, điểm LR/Speaking/Writing, full test mới nhất, phần/part yếu nhất, phần/part mạnh nhất của học viên.
Inputs: email, userid, groupid, courseid, +3 more.
get_student_summaryA
Dùng khi giáo viên hỏi tổng quan/tình hình học tập của một học viên: điểm danh, bài thiếu, đình chỉ/bảo lưu, điểm gần nhất, DAMI level/EXP.
Inputs: email, userid, groupid, courseid, +3 more.
get_student_suspend_statusA
Dùng khi hỏi học viên có bị đình chỉ, khóa nick, bảo lưu, vi phạm, chờ xóa hoặc nguy cơ bị khóa chưa.
Inputs: email, userid, groupid, courseid, +3 more.
test_connectionA
Kiểm tra kết nối từ Xiaozhi/imcp MCP server tới DAMI Moodle Robot API. Chỉ dùng để test kỹ thuật.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool targets a distinct aspect of student data (e.g., attendance, scores, risk, suspensions). Descriptions are specific and clearly delineate when to use each, minimizing ambiguity.
All tools follow a consistent verb_noun pattern with snake_case (e.g., get_student_attendance, find_student). The 'find_' variant is acceptable as it differs only in retrieval style.
With 11 tools, the set covers the core student information needs without being excessive. Each tool serves a clear purpose within the educational domain.
The tools cover most common queries (attendance, scores, goals, risk, suspensions, summary). Missing a generic 'list students in course' tool, but the set is otherwise well-rounded for a read-only assistant.
Maintenance
Related MCP Connectors
Connect AI assistants to Edusign attendance, courses, learners, documents, and API docs via OAuth.
Read-only access to a student's recorded classes: transcripts, notes, slides and concept map.
Read your plat.plus courses, tasks, course pages, sessions, files and messages. Read-only.
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables read-only querying of Moodle as a student, including courses, assignments, grades, forums, and files, using a personal web services token.1137 npmMIT
- AlicenseAqualityCmaintenanceEnables AI agents to access a student's EPFL Moodle data—deadlines, course files, assignments, forums, and grades—through read-only tools.12MIT
- AlicenseAqualityBmaintenanceEnables AI apps to read a student's Moodle courses, upcoming and overdue due dates, assignment submission statuses, course grades, gradebook items and announcements. It is strictly read only, so it can never submit, edit or delete anything.17186 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to securely read course outlines, deadlines, announcements, forum discussions, and files from Moodle, track changes, and download or mirror course materials with a personal read-only token.101MIT