Halo LMS MCP Server
Click on "Install 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., "@Halo LMS MCP Serverlist my current classes"
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.
Halo LMS MCP Server
MCP server that exposes Grand Canyon University's Halo LMS APIs as tools for AI agents. Provides access to classes, grades, discussions, announcements, inbox messages, notifications, assignment submissions, and user profiles.
Setup
1. Install dependencies
cd HaloMCP
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt2. Configure tokens
Copy the example config and fill in your tokens:
cp config.example.json config.jsonEdit config.json with your Halo auth and context tokens (without the Bearer prefix — it's added automatically):
{
"authToken": "eyJ...",
"contextToken": "eyJ...",
"transactionId": "tenant-uuid-user-uuid"
}Alternatively, set environment variables (these override config.json):
export HALO_AUTH_TOKEN="eyJ..."
export HALO_CONTEXT_TOKEN="eyJ..."
export HALO_TRANSACTION_ID="..."Related MCP server: Moodle MCP Server
Running
Claude Code (stdio)
Add to your Claude Code MCP config (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"halo-lms": {
"command": "python",
"args": ["server.py"],
"cwd": "/path/to/HaloMCP"
}
}
}Direct (stdio)
python server.pyDocker (Streamable HTTP on port 8000)
docker compose up -dThen add it to Claude Code CLI:
claude mcp add --transport http halo-lms http://localhost:8000/mcpThe Docker container bind-mounts config.json (writable, so token refresh can persist new tokens) and your home directory (read-only) from the host, so file uploads via file_path work the same as stdio mode.
Note: Previous versions used SSE transport (
/sseendpoint). Streamable HTTP (/mcpendpoint) is the current MCP standard and is recommended for all new deployments.
Token Refresh
Halo tokens expire periodically, but the server handles this automatically:
One-time setup
After configuring config.json with your tokens, call the setup_session tool. This creates a long-lived session (~30 days) that enables automatic token refresh.
setup_session → "Session created, expires 2026-03-24T..."How it works
setup_sessioncalls Halo's next-auth API to create a session from your tokensThe session cookie is stored in
config.jsonWhen tokens expire during any API call, the server automatically:
Uses the session cookie to fetch fresh tokens
Saves the new tokens to
config.jsonRetries the failed request
This is completely transparent — no user intervention needed
When the session expires (~30 days)
Get fresh tokens from your browser (DevTools → Network/Cookies)
Update
config.jsonwith the newauthTokenandcontextTokenCall
setup_sessionagain
Manual token management
check_tokens— verify current tokens are validreload_tokens— hot-reload tokens from config.jsonrefresh— manually trigger a session-based token refreshsetup_session— create/renew the long-lived session
Available Tools
Tool | Description |
| List all enrolled course classes (call first to populate cache) |
| View assignments organized by unit for a class |
| Get grade overview for a class |
| List discussion forums for a class |
| Get posts from a discussion forum |
| Get announcements for a class |
| List all inbox threads |
| Get messages from an inbox thread |
| Send a message in an inbox thread |
| Get unread notification counts |
| Get user profile by ID |
| Upload a file to an assignment (absolute file path) |
| Submit an assignment for grading |
| Validate current auth tokens are working |
| Hot-reload tokens from config.json without restarting |
| Create a ~30-day session for automatic token refresh |
| Manually refresh tokens using the session cookie |
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.
Latest Blog Posts
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/ObadiahF/halo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server