LearnWorlds MCP Server
by ohnebenio.github.ohneben/learnworlds-mcpv1.1.2
All 94 LearnWorlds LMS API endpoints as safety-categorized MCP tools (read/write/destructive).
context tax
queued
security
queued
cold start
queued
freshness
Active25d ago
Install LearnWorlds MCP server
Install in Claude Code
claude mcp add learnworlds -e MCP_TRANSPORT=stdio -e LEARNWORLDS_BASE_URL='<learnworlds-base-url>' -e LEARNWORLDS_API_TOKEN='<learnworlds-api-token>' -e LEARNWORLDS_CLIENT_ID='<learnworlds-client-id>' -e MCP_AUTH_TOKEN='<mcp-auth-token>' -- docker run -i --rm -e MCP_TRANSPORT -e LEARNWORLDS_BASE_URL -e LEARNWORLDS_API_TOKEN -e LEARNWORLDS_CLIENT_ID -e MCP_AUTH_TOKEN ghcr.io/ohneben/learnworlds-mcp:1.1.2Install in Cursor
{
"mcpServers": {
"learnworlds": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"LEARNWORLDS_BASE_URL",
"-e",
"LEARNWORLDS_API_TOKEN",
"-e",
"LEARNWORLDS_CLIENT_ID",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ohneben/learnworlds-mcp:1.1.2"
],
"env": {
"MCP_TRANSPORT": "stdio",
"LEARNWORLDS_BASE_URL": "<learnworlds-base-url>",
"LEARNWORLDS_API_TOKEN": "<learnworlds-api-token>",
"LEARNWORLDS_CLIENT_ID": "<learnworlds-client-id>",
"MCP_AUTH_TOKEN": "<mcp-auth-token>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"learnworlds": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"LEARNWORLDS_BASE_URL",
"-e",
"LEARNWORLDS_API_TOKEN",
"-e",
"LEARNWORLDS_CLIENT_ID",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ohneben/learnworlds-mcp:1.1.2"
],
"env": {
"MCP_TRANSPORT": "stdio",
"LEARNWORLDS_BASE_URL": "<learnworlds-base-url>",
"LEARNWORLDS_API_TOKEN": "<learnworlds-api-token>",
"LEARNWORLDS_CLIENT_ID": "<learnworlds-client-id>",
"MCP_AUTH_TOKEN": "<mcp-auth-token>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"learnworlds": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"LEARNWORLDS_BASE_URL",
"-e",
"LEARNWORLDS_API_TOKEN",
"-e",
"LEARNWORLDS_CLIENT_ID",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ohneben/learnworlds-mcp:1.1.2"
],
"env": {
"MCP_TRANSPORT": "stdio",
"LEARNWORLDS_BASE_URL": "<learnworlds-base-url>",
"LEARNWORLDS_API_TOKEN": "<learnworlds-api-token>",
"LEARNWORLDS_CLIENT_ID": "<learnworlds-client-id>",
"MCP_AUTH_TOKEN": "<mcp-auth-token>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"learnworlds": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"LEARNWORLDS_BASE_URL",
"-e",
"LEARNWORLDS_API_TOKEN",
"-e",
"LEARNWORLDS_CLIENT_ID",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ohneben/learnworlds-mcp:1.1.2"
],
"env": {
"MCP_TRANSPORT": "stdio",
"LEARNWORLDS_BASE_URL": "<learnworlds-base-url>",
"LEARNWORLDS_API_TOKEN": "<learnworlds-api-token>",
"LEARNWORLDS_CLIENT_ID": "<learnworlds-client-id>",
"MCP_AUTH_TOKEN": "<mcp-auth-token>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| MCP_TRANSPORT | yes | — | Server transport. Set to 'stdio' for local MCP clients; the image otherwise starts the Streamable HTTP transport. |
| LEARNWORLDS_BASE_URL | yes | — | Base URL of your LearnWorlds school's API, e.g. https://<your-school>.learnworlds.com/admin/api |
| LEARNWORLDS_API_TOKEN | yes | yes | Bearer access token (LearnWorlds admin -> Settings -> Integrations -> Developers). |
| LEARNWORLDS_CLIENT_ID | yes | yes | Your school's Client ID, sent as the Lw-Client header. |
| MCP_AUTH_TOKEN | — | yes | Only for MCP_TRANSPORT=http: bearer token required on /mcp. Without it a non-loopback bind refuses to start. |
Freshness
Active — last maintenance signal 25d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-15 · 25d ago · GitHub
Latest release
2026-09-15 · 25d ago · GitHub · v1.1.2
Package published
no data · npm/PyPI
Registry entry updated
2026-09-15 · 25d ago · official registry · v1.1.2
FAQ
›How do I install the LearnWorlds MCP server in Claude Code?
Run: claude mcp add learnworlds -e MCP_TRANSPORT=stdio -e LEARNWORLDS_BASE_URL='<learnworlds-base-url>' -e LEARNWORLDS_API_TOKEN='<learnworlds-api-token>' -e LEARNWORLDS_CLIENT_ID='<learnworlds-client-id>' -e MCP_AUTH_TOKEN='<mcp-auth-token>' -- docker run -i --rm -e MCP_TRANSPORT -e LEARNWORLDS_BASE_URL -e LEARNWORLDS_API_TOKEN -e LEARNWORLDS_CLIENT_ID -e MCP_AUTH_TOKEN ghcr.io/ohneben/learnworlds-mcp:1.1.2. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does LearnWorlds require an API key?
Yes. It expects MCP_TRANSPORT, LEARNWORLDS_BASE_URL, LEARNWORLDS_API_TOKEN, LEARNWORLDS_CLIENT_ID, MCP_AUTH_TOKEN, of which 3 are secrets.
›Can I use LearnWorlds as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is LearnWorlds in the official MCP registry?
Yes, as io.github.ohneben/learnworlds-mcp.