edstem-mcp
Use Ed Discussion from any MCP client.
Public service URL: https://edstem.tuuhub.com/mcp
Quick Start
- Add the service URL to your MCP client.
- When the browser opens, paste your Ed API token.
- Grant
mcp:tools.read, andmcp:tools.writeonly if you want write tools.
Get your token here: https://edstem.org/settings/api-tokens
Only an Ed API token is needed. One token is treated as one user and verified with GET /api/user.
What It Can Do
- View your Ed profile and enrolled courses
- Browse lessons, slides, threads, and activity
- Open thread details by thread ID or course thread number
- Submit slide answers and submit slides if you grant write access
Self-Hosting
Ignore this if you are just using the public service.
- Bun 1.3+
MASTER_KEYas a 32-byte base64 string
Docker
cp .env.example .env
# Fill in MASTER_KEY and PUBLIC_BASE_URL first.
docker compose up -d
Local Run
bun install
cp .env.example .env
# Fill in MASTER_KEY and PUBLIC_BASE_URL first.
bun run start
Docker image: ghcr.io/bunizao/edstem-mcp
docker run -d --restart unless-stopped --env-file .env -p 8787:8787 -v edstem-mcp-data:/data ghcr.io/bunizao/edstem-mcp:latest
Notes
PUBLIC_BASE_URLmust match the real external URL clients use.- Optional: set
OAUTH_FIXED_CLIENT_ID,OAUTH_FIXED_CLIENT_SECRET, andOAUTH_FIXED_CLIENT_REDIRECT_URISto pre-seed a confidential OAuth client for Claude's Advanced settings flow. - Health endpoints:
/healthzand/readyz - The image ships with a
readyzhealth check. - Backups:
./scripts/backup-db.sh .data/edstem-mcp.db - Restores:
./scripts/restore-db.sh backups/edstem-mcp-YYYYMMDD-HHMMSS.db .data/edstem-mcp.db
For restores, stop the app first. For Docker deployments, point the scripts at the mounted volume path.