qldt-hanu-mcp
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., "@qldt-hanu-mcpCheck my tuition fee status"
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.
qldt-hanu-mcp
Model Context Protocol (MCP) server for QLDT HANU — the student management system of Hanoi University (qldt.hanu.edu.vn). Enables your AI assistants to authenticate and directly interact with the university portal.
🚀 Quick Start
1. Build the Server
git clone https://github.com/qxbao/qldt-hanu-mcp.git
cd qldt-hanu-mcp
pnpm install
pnpm run compile2. Configure Your IDE
Add the following to your MCP configuration file:
Edit ~/.gemini/settings.json or your project's .gemini/settings.json:
{
"mcpServers": {
"qldt-hanu-mcp": {
"command": "node",
"args": ["/absolute/path/to/qldt-hanu-mcp/build/src/index.js"],
"env": {
"QLDT_USERNAME": "your_student_id",
"QLDT_PASSWORD": "your_password"
}
}
}
}Edit claude_desktop_config.json:
{
"mcpServers": {
"qldt-hanu-mcp": {
"command": "node",
"args": ["/absolute/path/to/qldt-hanu-mcp/build/src/index.js"],
"env": {
"QLDT_USERNAME": "your_student_id",
"QLDT_PASSWORD": "your_password"
}
}
}
}Edit .vscode/mcp.json in your workspace:
{
"servers": {
"qldt-hanu-mcp": {
"command": "node",
"args": ["/absolute/path/to/qldt-hanu-mcp/build/src/index.js"],
"env": {
"QLDT_USERNAME": "your_student_id",
"QLDT_PASSWORD": "your_password"
}
}
}
}Edit .cursor/mcp.json:
{
"mcpServers": {
"qldt-hanu-mcp": {
"command": "node",
"args": ["/absolute/path/to/qldt-hanu-mcp/build/src/index.js"],
"env": {
"QLDT_USERNAME": "your_student_id",
"QLDT_PASSWORD": "your_password"
}
}
}
}Note: Replace
/absolute/path/to/qldt-hanu-mcpwith the actual path where you cloned the repository. Theenvblock is optional — see Authentication for details.
3. Start Using
Ask your AI assistant to:
"Login to QLDT for me with: xxxxxxx - [PASSWORD]" (not needed if env vars are set)
"Check my info on QLDT"
"Check token readiness"
"What is my schedule for semester 1 of 2023?"
"Check my tuition fee status"
"Check my academic grades"
Related MCP server: mcp-guap
🛠️ Available Tools
Tool | Description | Auth Required |
| Authenticate with QLDT using student ID & password | ❌ |
| Check if the current session is authenticated | ❌ |
| Retrieve full student profile information | ✅ |
| Retrieve student schedule for a given semester and year | ✅ |
| Retrieve all semester tuition fee statuses | ✅ |
| Retrieve all semester grades and transcript | ✅ |
Tool Details
login
Authenticate with the QLDT system. Both parameters are optional if QLDT_USERNAME and QLDT_PASSWORD environment variables are configured — the server will fall back to them automatically.
Parameter | Type | Required | Description |
|
| ⚠️ | Student ID. Falls back to |
|
| ⚠️ | Account password. Falls back to |
get_session_status
Check whether the server currently holds a valid authentication token. No parameters required.
get_student_info
Fetch the authenticated student's profile. Returns data in Vietnamese, including:
Personal info (name, date of birth, gender, ethnicity, etc.)
Academic info (class, major, faculty, academic year)
Contact info (phone, email, address)
Advisor info (name, phone, email)
Enrollment status
get_student_schedule
Fetch the student's schedule for a specific academic year and semester. Returns data in Vietnamese.
Parameter | Type | Required | Description |
|
| ✅ | Start year of the academic year (e.g., "2023" for 2023-2024) |
|
| ✅ | Semester of the schedule (e.g., "1", "2") |
get_all_semester_tuition_fee
Fetch the student's tuition fee statuses across all semesters. Returns data in Vietnamese. No parameters required.
get_all_semester_grades
Fetch the student's academic grades and GPA across all semesters. Returns data in Vietnamese. No parameters required.
🧑💻 Development
Prerequisites
Node.js ≥ 18
pnpm (recommended) or npm
Setup
# Install dependencies
pnpm install
# Compile TypeScript
pnpm run compile
# Run tests
pnpm test
# Lint
pnpm run lint
# Auto-fix lint issues
pnpm run fixTech Stack
Component | Technology |
Runtime | Node.js |
Language | TypeScript 6.0 |
MCP SDK |
|
HTTP Client | Axios |
Validation | Zod |
Testing | Vitest |
Linting | GTS (Google TypeScript Style) |
🔐 Authentication
The server supports two authentication modes:
Mode 1 — Manual (via AI prompt): Ask your AI assistant to log in. Credentials are only used for the login request and are never stored.
Mode 2 — Auto-login (via Environment Variables): Set QLDT_USERNAME and QLDT_PASSWORD in the MCP server's env config block. The server will automatically authenticate on startup without any user prompt.
Session Persistence
After a successful login, the access token is saved to a local .session.json file in the server's working directory. On the next startup, the server loads from this file automatically — avoiding the need to log in again after an IDE restart, as long as the token has not expired.
Session TTL: 1 hour from last successful login.
Storage: Local
.session.jsonfile (add to.gitignoreif needed).
🔒 Security
Credentials are transmitted directly to QLDT's official authentication endpoint over HTTPS.
Access tokens are cached to
.session.jsonfor up to 1 hour, then invalidated automatically.The server uses a randomized User-Agent for each session.
Plaintext credentials are never stored — only the resulting access token is persisted.
📋 Roadmap
Course schedule retrieval
Grade / transcript lookup
Tuition fee status
Course registration
🤝 Contributing
Contributions are welcome! Feel free to open an issue or submit a pull request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
📄 License
This project is licensed under the GNU General Public License v2.0 — see the LICENSE file for details.
Disclaimer: This is an unofficial, community-driven project. It is not affiliated with or endorsed by Hanoi University. Use at your own discretion.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server that enables AI agents to authenticate with and interact with Open eClass platform instances, supporting UoA's SSO authentication system for retrieving course information and performing basic platform operations.48-
- FlicenseAqualityDmaintenanceMCP server for ГУАП's student portal enabling AI agents to manage tasks, materials, and reports.112-
- AlicenseNot gradedqualityBmaintenanceAn MCP server that connects AI assistants to university D2L Brightspace and Piazza, enabling query of courses, grades, assignments, deadlines, files, and Piazza posts.7MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that provides intelligent student assistance tools for academic calculations, attendance tracking, marks analysis, and syllabus reading via Groq LLM.16 npm1MIT