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 | |
TDQS
Scored across 12 tools
search_wlo_topic_pages and search_wlo_collections both target the same entity (Sammlung/Themenseite) but remain separate tools, and get_collection_contents vs get_topic_page_content have closely related purposes that could confuse selection. The overlapping conceptual model forces agents to read descriptions carefully to distinguish.
All tools follow a consistent verb_noun snake_case pattern (e.g., search_wlo_content, get_node_details, lookup_wlo_vocabulary, browse_collection_tree). Minor variation in the placement of 'wlo' (search_wlo_* vs wlo_health_check) is predictable and does not hinder readability.
12 tools is within the ideal scope for a comprehensive read-only API covering search, retrieval, navigation, and health. Each tool serves a definable purpose, though redundancy between topic page and collection search could be consolidated.
The set covers the full lifecycle of read-only exploration: searching content, collections, and topic pages; retrieving collection contents; fetching node details (single and batch); examining topic page structure; discovering filter vocabulary; and browsing the collection tree. No obvious dead ends or missing operations for the stated domain.