Lumen
Self-hostable agentic-AI LMS: catalog, RAG tutor, FSRS reviews, AI authoring, ingest.
What it says
The record the registry holds
the record
Copied from the official MCP registry, exactly as it holds it.
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.ahmedEid1/lumen",
"description": "Self-hostable agentic-AI LMS: catalog, RAG tutor, FSRS reviews, AI authoring, ingest.",
"title": "Lumen",
"repository": {
"url": "https://github.com/ahmedEid1/lumen",
"source": "github",
"subfolder": "apps/backend/app/mcp"
},
"version": "2.0.0",
"websiteUrl": "https://github.com/ahmedEid1/lumen/blob/main/docs/mcp.md",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"authentication": {
"http": {
"grant_types": [
"client_credentials"
],
"metadata_endpoint": "/.well-known/oauth-authorization-server",
"token_endpoint": "/oauth/token",
"type": "oauth2"
},
"stdio": {
"description": "Mint with `make mcp-token` on the Lumen instance; paste the printed client_secret into the env block.",
"env_var": "LUMEN_MCP_AUTH_TOKEN",
"type": "bearer"
}
},
"categories": [
"learning",
"education",
"agents",
"rag",
"spaced-repetition"
],
"install": {
"claude_code": "LUMEN_MCP_AUTH_TOKEN=<client_secret> claude mcp add lumen -- python -m app.mcp --transport stdio",
"claude_desktop": {
"mcpServers": {
"lumen": {
"args": [
"-m",
"app.mcp",
"--transport",
"stdio"
],
"command": "python",
"env": {
"DATABASE_URL": "postgresql+asyncpg://lumen:lumen@localhost:5432/lumen",
"LUMEN_MCP_AUTH_TOKEN": "<your-client-secret>"
}
}
}
},
"notes": "Lumen is self-hosted: bring up your own backend, mint a token with `make mcp-token`, then register the server. No public artifact (PyPI / OCI) is shipped yet."
},
"license": "MIT",
"maintainer": {
"name": "Ahmed Hobeishy",
"url": "https://www.linkedin.com/in/ahmedhobeishy/"
},
"supported_transports": [
"stdio",
"streamable-http"
],
"tools": [
{
"auth": "public",
"description": "List Lumen courses in the public catalog. Optional `filter` does free-text search over title + overview.",
"name": "list_courses"
},
{
"auth": "public",
"description": "Fetch one course by slug. Returns the full syllabus tree (modules + lessons) plus the course overview.",
"name": "get_course"
},
{
"auth": "user",
"description": "Semantic search across a course's lesson chunks. Returns top-K passages with lesson titles and pgvector cosine-distance scores (lower = better).",
"name": "search_lesson_content"
},
{
"auth": "user",
"description": "Ask the Lumen course tutor a question. Returns a cited answer or refusal if the course content doesn't cover the topic. Requires enrollment.",
"name": "ask_tutor"
},
{
"auth": "user",
"description": "Spaced-repetition queue for the calling user: cards whose FSRS-6 due-at has passed. Oldest-due first.",
"name": "list_my_due_reviews"
},
{
"auth": "user",
"description": "Submit one FSRS-6 rating against a review card. `rating` is 1=again, 2=hard, 3=good, 4=easy.",
"name": "grade_review_card"
},
{
"auth": "user",
"description": "Generate a course outline from a brief and persist it as a draft course owned by the calling user. Requires the `can_author` capability (any active user).",
"name": "create_course_draft"
},
{
"auth": "admin",
"description": "Import a YouTube / Notion / Google Docs URL into a draft course. Creates a fresh course when `course_id` is omitted, otherwise appends. Admin-only and gated by the `ingest_url_enabled` flag (off by default).",
"name": "ingest_url_to_draft"
},
{
"auth": "user",
"description": "Per-enrolled-course completion + mastery rollup for the calling user. Newest enrollment first.",
"name": "list_my_progress"
}
]
}
}
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-06-07T11:29:33.35494Z",
"publishedAt": "2026-06-07T11:29:33.35494Z",
"updatedAt": "2026-06-07T11:29:33.35494Z",
"isLatest": true
}
}
}
Make it installable
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
What this is
MCP server
application/mcp-server-record+jsonversion 2.0.0last seen 2026-08-23
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.
Where it lives
The publisher's own address
https://github.com/ahmedEid1/lumen/blob/main/docs/mcp.md
The address the publisher put in their registry record, printed as they wrote it. Nobody here has opened it.