Skip to main content
Glama

nope-mcp — Open Educational Resources search

Server Details

Search German open educational resources (OER) via AMB/schema.org metadata, open licenses only.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
edufeed-org/nope-mcp
GitHub Stars
1
Server Listing
nope-mcp
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 19 tools

Disambiguation3/5

The three search tools (search_content, search_resources, search_passages) heavily overlap — search_content explicitly subsumes resource search — and only lengthy prose disambiguates discovery vs question intent. Similarly, list_relays vs relay_stats vs relay_list_get, and list_known_authors vs resolve_author vs resolve_publisher, are near-neighbors that an agent must read carefully to pick correctly.

Naming Consistency3/5

Most tools follow a readable verb_noun snake_case pattern (search_content, get_resource, resolve_author, browse_subjects), but 'relay_list_get' and 'relay_stats' invert the pattern and 'relay_list_get' collides conceptually with 'list_relays'. The skos_ prefix group is internally consistent but uses noun-first ordering, so conventions are mixed overall.

Tool Count3/5

19 tools is at the upper edge for a search-oriented server and includes visible redundancy (three relay tools, three author/publisher resolvers, three overlapping search entry points). The breadth is partly justified by covering multiple domains (resources, calendar events, Nostr relays, SKOS vocabularies), but consolidation could cut several tools.

Completeness4/5

The surface covers discovery (search_content/search_resources), Q&A with citations (search_passages), faceted browsing (subjects, types, levels), retrieval (get_resource handles all content kinds), author/publisher resolution, calendar events, and SKOS vocabulary access. Minor gaps remain: no get_calendar_event detail tool, no community browse/list beyond find_community, and no write/publish or grimoire-spell management tools despite spells being referenced.

Available Tools

19 tools
browse_educational_levelsBrowse Educational LevelsB
Read-onlyIdempotent
Inspect

List available educational levels (Primary, Secondary, Higher Education, etc.) with resource counts.

Inputs: limit, language.

browse_resource_typesBrowse Resource TypesA
Read-onlyIdempotent
Inspect

List available learning resource types (Video, Course, Worksheet, etc.) with resource counts.

Inputs: limit, language.

browse_subjectsBrowse SubjectsA
Read-onlyIdempotent
Inspect

List available subjects/topics in the educational resource collection. Returns subjects with their labels and resource counts.

Inputs: limit, prefix, language.

find_communityFind CommunityA
Read-onlyIdempotent
Inspect

Find Nostr communities (Communikey, kind 10222) matching a free-text topic — use for "welche Community/Gruppe beschäftigt sich mit …" questions. Each result's pubkey can be passed as the community parameter of search_content or search_calendar_events to scope a search to that community.

Inputs: query (required), limit.

get_resourceGet Educational ResourceA
Read-onlyIdempotent
Inspect

Retrieve a single piece of content by naddr (preferred — pass a search_content result's naddr), d-tag identifier, or event ID. naddrs of ANY content type from search_content work (resources, articles, wikis, projects, measures, publications); non-resource kinds return the same shape as their search results. Bare identifier/eventId lookups (no naddr) always resolve the full educational-resource metadata (kind 30142), including creator/publisher and educational properties. get_resource is never license-filtered: a learning resource carries license ({id, label}, or null when unlicensed) and accessLevel ("full" for Creative Commons, Public Domain and free software/documentation licenses, and DINI-AG-KIM license types that resolve to one of these; "metadata-only" otherwise). Only accessLevel:"full" resources have indexed fulltext, snippets and passages — present a "metadata-only" resource by its title, description, license and link, never quoted beyond its metadata, and always name the license and the creator/publisher. openLicense is kept for compatibility (deprecated; use accessLevel). When presenting the resource, render a markdown link the user can open: prefer its sourcePage (the original source page); fall back to url (the edufeed viewer) only when sourcePage is absent.

Inputs: naddr, author, relays, eventId, +2 more.

list_calendar_authorsList Calendar AuthorsA
Read-onlyIdempotent
Inspect

List known calendar event authors loaded from configured follow sets (NIP-51 kind 30000). Returns author names, pubkeys, and NIP-05 identifiers. Use the returned pubkeys with search_calendar_events(authors: [...]) to filter events by author.

Inputs: no named parameters.

list_known_authorsList Known AuthorsA
Read-onlyIdempotent
Inspect

List known educational resource authors loaded from configured follow sets (NIP-51 kind 30000). Returns author names, pubkeys, and NIP-05 identifiers. Use the returned pubkeys with search_resources(authors: [...]) to filter resources by author.

Inputs: no named parameters.

list_relaysList RelaysA
Read-onlyIdempotent
Inspect

List the configured AMB relays. defaultRelays are searched on every query; extraRelays hold different corpora (e.g. the OERSI aggregation) and are only searched when a search/get tool call passes them in its relays parameter.

Inputs: no named parameters.

relay_list_getGet Relay ListA
Read-onlyIdempotent
Inspect

Get a user's NIP-65 relay list (kind 10002). Returns read and write relays for the specified pubkey. If no pubkey provided, uses the connected signer's pubkey.

Inputs: pubkey.

relay_statsRelay StatisticsB
Read-onlyIdempotent
Inspect

Get information about all selectable AMB relays (default and extra), including supported NIPs, relay name, and description.

Inputs: no named parameters.

resolve_authorResolve Author Name to PubkeyA
Read-onlyIdempotent
Inspect

Resolve an org or person NAME to candidate pubkeys using the relay's kind-0 author-profile index (NIP-50 search). Use this to answer name-driven content questions like "recent articles and resources of Jörg Lohrer": call resolve_author(name), pick the best candidate, then pass its pubkey to search_content({ authors: [pubkey], ... }) (and/or search_calendar_events) to fetch that author's content. Returns several candidates ranked by relevance so you can disambiguate. This indexes authors who have published content here — distinct from list_known_authors, which lists hand-curated follow sets. NOTE: this resolves only kind-0 author profiles. It does NOT resolve a community's identifying pubkey — a community is defined by a kind-10222 event and frequently has no kind-0 at all. To list content shared into a community you need that community pubkey (a Nostr identifier, e.g. from the community's spec/naddr), which you pass to the community param of search_content / search_calendar_events. resolve_author CAN, however, find a community's posting account (e.g. a "…-Termine-Bot") when that account has a kind-0; querying that pubkey via authors:[...] returns the content it published. A wrong pick simply yields empty results.

Inputs: name (required), limit.

resolve_publisherResolve Publisher/Creator Name to Canonical Metadata SpellingA
Read-onlyIdempotent
Inspect

Resolve an actor name (organization or person) to the EXACT spelling used in the AMB metadata, so it can be passed to the publisherName/creatorName filters of search_resources. Those filters are exact full-string matches (case-insensitive), so a guessed spelling like "Lehreladen" silently misses the stored "LEHRE LADEN". This tool free-text searches the name and returns the similar publisher/creator names found in the corpus, with the field they appear in and a resource count. Distinct from resolve_author, which resolves Nostr signing accounts (kind-0 profiles) to pubkeys — metadata publishers usually have no Nostr account at all.

Inputs: name (required), relays.

search_calendar_eventsSearch Calendar EventsA
Read-onlyIdempotent
Inspect

Search for NIP-52 calendar events (date-based and time-based). Supports temporal filters (start/end time ranges), geohash location filtering, hashtag filtering, and the edufeed educational attributes (free, registrationRequired, attendanceMode, educationalLevel). Returns events from the configured calendar relay. TIME SEMANTICS (NIP-52): start/end are the raw tags — end is EXCLUSIVE and is omitted for one-day and instantaneous events, so never read a missing end as "unknown". Use effectiveEnd (Unix seconds when the event is over), allDay (31922: whole days, no clock time) and lastDay (all-day events: the inclusive last calendar day). Times of 31923 events are in startTzid/endTzid. ATTRIBUTES: attributes carries registration, price (free = amount 0), attendance mode (online/offline/mixed) and Bildungsstufe; a missing field means "no statement", never "no" or "not free". AUTHOR: every event has author {name, bot}; bot: true marks an automated account such as an event mirror or crawler — group or de-emphasise those unless the user asks for imports. Operators may hide bulk sources by default (see hiddenSources in the result); pass includeHiddenSources: true to see them. When presenting an event to the user, render it as a markdown link: prefer the event url (the edufeed-app viewer at /, which shows fuller details) over sourcePage (the original external event page). Never construct an naddr or viewer URL yourself — use the naddr/url fields as returned.

Inputs: free, kinds, limit, query, +16 more.

search_contentSearch Educational Content (resources, articles, wikis, projects, measures, publications)A
Read-onlyIdempotent
Inspect

Topic search across ALL content types on the relay in one ranked call: educational resources (kind 30142), long-form articles/blogs (30023), wikis (30818), projects (30143), measures (30144), and NKBIP-01 publications (30040 indices + 30041 sections — scientific articles, books). Results are interleaved and ranked by semantic passage match, and each carries the matched passage ("snippet") when available — use it to answer the user, not just list links. Every learning resource is returned by default, whatever its license; each resource result carries license ({id, label}, or null when unlicensed) and accessLevel ("full" for Creative Commons, Public Domain and free software/documentation licenses, and DINI-AG-KIM license types that resolve to one of these; "metadata-only" otherwise). Snippets and passages exist only for accessLevel:"full" resources — present a "metadata-only" resource by its title, description, license and link, never quoted beyond its metadata, and always name the license and the creator/publisher. licenseFilter narrows the results: "open" = CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD); "cc-any" = all of "open" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives; "any" = also unlicensed and all-rights-reserved resources. The other content types carry no license and are always included. This is the tool for DISCOVERY intent — the user wants materials to browse ("finde/suche/empfiehl Materialien zu X"): present the items. For QUESTION intent — the user wants an answer built from the content ("wie/warum/was hilft bei X?") — prefer search_passages, which returns quotable fulltext passages with citations; this tool then supplements the answer with browsable links. Each result carries eventAuthor (the Nostr signer who uploaded the event — often an aggregator) plus, for resources, creator/publisher (who actually made and published the resource); these can differ, so do not treat eventAuthor as the publisher. For full metadata (license, dates, complete entity lists) pass a result's naddr to get_resource. Publication facets ride inside the query string as NIP-50 field filters: append type:academic, doi:10.1234/abcd.5678, keywords:, or partOf:30143:: ("publications of a project") to the query — the relay resolves them server-side. When presenting results to the user, render each as a markdown link so they can open it directly — prefer sourcePage (the original external source page, present on most resources and on projects/measures/publications), then url, then naddr. For upcoming events on the same topic, follow up with search_calendar_events.

Inputs: limit, query, since, types, +6 more.

search_passagesGrounded passage search (RAG) scoped by a spellA
Read-onlyIdempotent
Inspect

THE DEFAULT TOOL FOR QUESTION-SHAPED QUERIES ("wie/warum/was hilft bei X?", "how do I…?"): retrieves the best-matching fulltext passages from the corpus and returns them with citations (source resource, page, heading, source URL) — answer the user FROM the passages and cite each source. (For discovery intent — "finde/empfiehl Materialien" — use search_content instead, or afterwards to offer browsable links.) Keep question topic-only. Ranking is hybrid keyword+vector, so phrase the question as a topical statement that names the subject and the target group ("Friedenserziehung in der Grundschule: Einstieg in das Thema Frieden mit Kindern"), not as the user's literal sentence ("Wie kann ich …?"). Results are capped at two passages per document; a passage with only a snippet and no text has no fulltext yet — say so instead of guessing. Passages come from learning resources under Creative Commons, Public Domain and free software/documentation licenses, and DINI-AG-KIM license types that resolve to one of these and from articles, wikis, publications and the other content kinds. Other matching learning resources appear in metadataOnlyMatches (naddr, title, license, creator/publisher, sourcePage) without text, because their license does not permit quoting — point the user to them by title, license and link, never quote or paraphrase them as content. Cite the license and the creator/publisher with every learning-resource passage. licenseFilter narrows learning resources: "open" = CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD); "cc-any" = all of "open" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives (normally no metadataOnlyMatches); "any" = also unlicensed and all-rights-reserved resources, as metadataOnlyMatches. Scope is required but simple: with no source restriction from the user, pass the content kinds (e.g. kinds:[30142] for educational resources, [30040,30041] for publications, [30023] for articles). Route source restrictions ("nur Content von X") into the scope parameters: a metadata publisher (most organisations — resolve_publisher finds the exact spelling) goes into search as a QUOTED field filter, e.g. search:'publisher.name:"LEHRE LADEN"' (unquoted multi-word names match nothing); a Nostr signing account (resolve_author → pubkey) goes into authors. A published grimoire spell (kind 777, nevent or event id) can replace inline scope entirely; the response carries the canonical spell for whatever scope was used — publish it (e.g. via grimoire) to make the scope reusable. Spells may use $me/$contacts; they resolve to the calling user (pass me if the transport is anonymous). Scope materialization (tag/search/community spells) runs against the primary relay only; the passage search itself fans out to every selected indexed relay. Fails rather than widening scope: an empty scope, unreachable relay (relay_unreachable — tell the user to retry), or unreachable index is a typed error, never a silently unscoped search.

Inputs: question (required), me, tag, kinds, +8 more.

search_resourcesSearch Educational ResourcesA
Read-onlyIdempotent
Inspect

Search for educational resources (learning materials, courses, videos, etc.) using full-text search and metadata filters. Returns resources matching the query from the AMB relay. Every learning resource is returned by default, whatever its license; each result carries license ({id, label}, or null when unlicensed) and accessLevel ("full" for Creative Commons, Public Domain and free software/documentation licenses, and DINI-AG-KIM license types that resolve to one of these; "metadata-only" otherwise). licenseFilter narrows the results: "open" = CC0, Public Domain, CC BY, CC BY-SA, their DINI-AG-KIM license-type equivalents, and free software/documentation licenses (GPL, LGPL, AGPL, GFDL, MIT, Apache 2.0, BSD); "cc-any" = all of "open" plus every other Creative Commons license, incl. KIM non-commercial/no-derivatives; "any" = also unlicensed and all-rights-reserved resources. When citing a resource, always name its creator and publisher. NOTE: the metadata filters (publisherName, creatorName, subjectLabel, resourceTypeLabel, educationalLevelLabel) are EXACT full-string matches against the stored metadata (case-insensitive) — not fuzzy or substring searches. A guessed spelling silently returns 0 results; use resolve_publisher to find the canonical actor spelling first. On a zero-match actor filter the response includes actorCandidates with similar spellings to retry with.

Inputs: limit, query, since, until, +9 more.

skos_get_conceptGet SKOS ConceptB
Read-onlyIdempotent
Inspect

Get details of a single SKOS concept by its URI, including broader, narrower, and related concepts.

Inputs: uri (required), language.

skos_get_vocabularyGet SKOS VocabularyB
Read-onlyIdempotent
Inspect

Fetch and parse a SKOS vocabulary from its URI. Returns the concept scheme with all concepts organized hierarchically.

Inputs: uri (required), flat, language.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for WirLernenOnline.de that enables searching and retrieving educational materials, collections, topic pages, and metadata through natural language, compatible with OpenAI and Claude.
      12
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to search and retrieve German open data through a remote, stateless Streamable HTTP endpoint — public procurement notices, Marktstammdatenregister energy units, and Bundesnetzagentur EV charging stations — with keyword, location, technology, and capacity filters plus aggregate statistics and data-freshness checks.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables searching Germany's national geodata catalogue through CSW 2.0.2 keyword queries and retrieving individual Dublin Core metadata records, including themes, rights information, bounding boxes, and resource links. It is a read-only, lightweight stdio connector that never downloads or opens the linked data itself.
      2
      2
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI models to search and retrieve bibliographic and digitized records from Swiss academic libraries (swisscovery, e-rara, e-periodica, e-manuscripta) via open protocols without requiring API keys.
      16
      1
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.