WLO MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (HTTP mode only) | 3000 |
| WLO_POOL_SIZE | No | Candidate pool per search variant (enhancedSearch) for reranking | 25 |
| WLO_REPOSITORY_URL | No | URL of the Edu-Sharing frontend host (e.g. https://redaktion.openeduhub.net/edu-sharing or https://repository.staging.openeduhub.net/edu-sharing) | https://redaktion.openeduhub.net/edu-sharing |
| WLO_ROOT_COLLECTION_ID | No | Root node UUID of the collection hierarchy | 5e40e372-735c-4b17-bbf7-e827a5702b57 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_wlo_collectionsA | Search WirLernenOnline (WLO) for Sammlungen (= Themenseiten). In WLO, a "Sammlung" is the same as a "Themenseite": a curated thematic page that bundles educational content items in swimlanes (Schwimmlinien/Karussells) grouped by topic, subject or level. Users may ask for "Themenseite Algebra", "Sammlung Klimawandel" or "Portal Mathematik" – these all refer to collections. Use the returned nodeId with get_collection_contents to retrieve the actual content items. Filters accept both German labels (e.g. "Mathematik", "Grundschule", "Lehrer/in") and full URIs. |
| search_wlo_contentA | Search WirLernenOnline (WLO) for individual educational content items (Inhalte/Materialien). Content items are files such as worksheets, videos, interactive media, lesson plans, etc. Supports full-text search with multi-query expansion and quality-based reranking. Filters accept both German labels and full URIs. |
| get_collection_contentsA | Retrieve content items and/or sub-collections from a WLO Sammlung (Themenseite) by its nodeId. In WLO, Sammlungen are displayed as Themenseiten: thematic pages that bundle content in swimlanes. This tool fetches what is inside those swimlanes. The nodeId is returned by search_wlo_collections. Use contentFilter="files" (default) for learning materials, "folders" for sub-collections (Unter-Themenseiten), or "both" for everything. Set includeSubcollections=true to traverse the full sub-tree recursively. |
| get_node_detailsA | Retrieve detailed metadata, stored full-text content, and/or parent collections for a specific WLO node. Returns the SAME field structure as search tools (formatNode): title, description, keywords, disciplines (labels), educationalContexts (labels), userRoles (labels), learningResourceTypes (labels), license (label), publisher, url, previewUrl, topicPageUrl, nodeType. Plus optional:
|
| search_wlo_allA | Kombinierte WLO-Suche: Einzel-Inhalte (Materialien), Sammlungen UND Themenseiten in EINEM parallelen Aufruf. Nutze dies statt mehrere Suchtools nacheinander zu rufen. Liefert ein strukturiertes Objekt mit getrennten Töpfen { content, collections, topicPages }. Filter akzeptieren deutsche Labels (z.B. "Mathematik", "Sekundarstufe I", "Video") oder URIs. |
| lookup_wlo_vocabularyA | Look up available values for WLO filter parameters. Use this to discover valid labels and URIs for Bildungsstufe (educational context), Schulfach/Disziplin, Zielgruppe (user role), or Lernressourcentyp (learning resource type). Useful before calling search tools to find the correct filter values. |
| search_wlo_topic_pagesA | Search for Themenseiten (topic pages) on WirLernenOnline. Themenseiten are curated page layouts with swimlanes, tailored to different target groups (Lehrkräfte, Lernende, Allgemein). They are linked to Sammlungen (collections). Three search modes:
Output:
Order: deterministic. By default sorted alphabetically by collection name with nodeId as tie-breaker. |
| get_subject_portalsA | Lists the WLO Fachportale — the first-level Sammlungen directly under the WLO root collection. Fachportale are the top-level subject hubs (Mathematik, Informatik, Deutsch, …) that anchor the content tree. Each portal has an associated Themenseite when ccm:page_config_ref is set. Use this when the user wants an overview of what subjects/topics are covered, or as the natural entry point for guided drill-downs ("Zeig mir Mathe" → portal → sub-Sammlungen → Inhalte). Returns deterministic alphabetical ordering, with portal nodeId, name, description, optional Themenseiten-URL, and the disciplines/educational contexts associated with the portal. |
| browse_collection_treeA | Drill into the sub-collection tree below a given collection.
Returns the direct sub-Sammlungen at Use this for guided exploration: pick a Fachportal or Themenseite, then let the user choose a sub-area before fetching individual content items. Output is deterministic (alphabetical by name, nodeId tie-breaker). |
| wlo_health_checkA | Probe whether the WLO repository API is reachable and responding. Returns latency in ms, the resolved root collection nodeId, and a status flag. Useful for callers (e.g. chatbots) to quickly tell "WLO is down" from "your query produced no hits". |
| get_nodes_detailsA | Bulk-fetch metadata for multiple node IDs in parallel. Saves N round-trips when callers need details for many nodes (e.g. resolve cards from a search). Returns the same FormattedNode shape as get_node_details (json mode), keyed by nodeId. Failed lookups (deleted node, network error) are returned in the |
| get_topic_page_contentA | Get the CONTENT STRUCTURE of a Themenseite (topic page): its sections (swimlanes) — each with a heading and the nodeIds of the materials/collections embedded in it. Use this AFTER search_wlo_topic_pages to see what is actually ON a topic page (search_wlo_topic_pages only returns its URL). Resolve the returned nodeIds to human titles with get_nodes_details. Provide EITHER variantId (a "Variante-ID" from search_wlo_topic_pages — fastest) OR collectionId (a "Sammlung-nodeId"). At least one is required. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/janschachtschabel/wlo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server