Damirobot Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Damirobot Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
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=All student-data tools are mandatory fail-closed before Moodle is called.
speakerId: denied.null, undefined, unknown, anonymous, guest, none: denied.speakerId must come from Xiaozhi top-level params.speakerId; _meta.speakerId is accepted as fallback.arguments.speakerId is deliberately ignored, so the LLM/tool arguments cannot grant access to themselves.ALLOWED_SPEAKER_IDS is empty, any valid Xiaozhi-recognized speakerId is accepted. This supports adding a new registered speaker without firmware changes or MCP code changes.ALLOWED_SPEAKER_IDS is configured, only exact IDs in that list are accepted.test_connection remains available without speaker recognition because it exposes no student data.The MCP server tracks the current recognized speaker so follow-up questions can work safely.
speakerId: student follow-up context may be reused.speakerId: student/course/group follow-up context is cleared before the next data call.This prevents a later speaker from inheriting the previous speaker's selected student.
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.
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~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.