MCP.Market

nope-mcp — Open Educational Resources search MCP server

online · 100% uptime
by edufeed.org·org.edufeed/nope-mcp·v0.4.0·1 stars

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

A88/100grade A
What users say
No reviews yet
Be the first
Safety scan
A88/100

full report

Adoption
Growing

1 stars

Reviews

Write one

Nobody has reviewed nope-mcp — Open Educational Resources search yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

nope-mcp — Open Educational Resources search tools (18)

write = sends, deletes, buys or posts
  • browse_educational_levelsFree

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

  • browse_resource_typesFree

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

  • browse_subjectsFree

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

  • get_resourceFree

    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. Lookups are not license-filtered: a learning resource carries openLicense (true for CC0, Public Domain, CC BY, CC BY-SA — the open licenses that search results are currently limited to). 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.

  • list_calendar_authorsFree

    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.

  • list_known_authorsFree

    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.

  • list_relaysFree

    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.

  • relay_list_getFree

    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.

  • relay_statsFree

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

  • resolve_authorFree

    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.

  • resolve_publisherFree

    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.

  • search_calendar_eventsFree

    Search for NIP-52 calendar events (date-based and time-based). Supports temporal filters (start/end time ranges), geohash location filtering, and hashtag filtering. Returns events from the configured calendar relay. When presenting an event to the user, render it as a markdown link: prefer the event `url` (the edufeed-app viewer at <base>/<naddr>, 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.

  • search_contentFree

    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. Educational resources are returned only when openly licensed (CC0, Public Domain, CC BY, CC BY-SA); the other content types carry no license and are all 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:<term>, or partOf:30143:<pubkey>:<d> ("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.

  • search_passagesFree

    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. Educational-resource passages come only from openly licensed resources (CC0, Public Domain, CC BY, CC BY-SA); other content types are not license-filtered. 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). 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.

  • search_resourcesFree

    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. Only openly licensed resources are returned (CC0, Public Domain, CC BY, CC BY-SA); NC/ND, all-rights-reserved and unlicensed resources are left out. 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.

  • skos_get_conceptFree

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

  • skos_get_vocabularyFree

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

  • skos_searchFree

    Search for concepts in a SKOS vocabulary. By default searches prefLabel, altLabel, hiddenLabel, and definition.

Public scan report

scanner v0.1.10 · 2026-10-03 · same rubric, same numbers if you re-run it

1 low
  • –Code scanremote-only server, no package to scann/a
  • Live reliabilityremote reachable in 1549ms20/20
  • Tool poisoning18 tool descriptions checked13/15
  • Auth qualityopen endpoint, read-only tools10/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace8/10

Findings (1)

  • lowUnusually long tool description (over 2,000 characters)poison.long-description
    tool search_passages: …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. Educational-resource passages come only from openly licensed resources (CC0, Public Domain, CC BY, CC BY-SA); other content types are not license-filtered. 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). 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.…
Overall 88/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How nope-mcp — Open Educational Resources search compares

Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
88/100
higher than 80% of 3,470 Web search servers
Tools
18
the typical Web search server has 5
Tools that change things
0%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote Web search server answers 100%
Response time
669 ms
faster than 20% of 2,238 Web search servers
GitHub stars
1
more than 55% of 1,786 Web search servers

What its tools let an agent do: 18 read

Install nope-mcp — Open Educational Resources search in Claude Code, Cursor or VS Code

claude mcp add --transport http nope-mcp https://mcp.edufeed.org/mcp
Add to Cursor

What the publisher says

From the nope-mcp — Open Educational Resources search repository's README, as published. We do not edit it. Read it on GitHub

nope-mcp (formerly amb-mcp)

An MCP (Model Context Protocol) server for querying educational resources from AMB (Allgemeines Metadatenprofil für Bildungsressourcen) Nostr relays.

Repository

The canonical repository lives on Nostr (NIP-34) — browse it on gitworkshop.dev, or clone with the ngit remote helper:

git clone nostr://laoc.xyz/relay.ngit.dev/amb-mcp

Mirrors: git.edufeed.org/edufeed/nope-mcp · github.com/edufeed-org/nope-mcp. Issues and PRs are welcome on any of the three — Nostr PRs arrive as pr/* branches.

Releases are tagged (v0.1.0, …) and listed in CHANGELOG.md.

MCP Registry

server.json is the manifest nope-mcp publishes to the official MCP Registry as org.edufeed/nope-mcp, pointing at the https://mcp.edufeed.org/mcp remote. Its version always matches package.json (enforced by test/server-json.test.ts).

Publishing is done with the registry's mcp-publisher CLI after DNS-based domain verification of edufeed.org (the registry proves ownership of the org.edufeed namespace via a TXT record, not a secret the CLI holds) — there is no key to manage and no command embeds one.

Features

Query & Browse

  • Cross-content full-text search (search_content) across educational resources, long-form articles, wikis, transferkiosk projects/measures, and NKBIP-01 scientific publications in one ranked call
  • Grounded passage retrieval (search_passages) — answers a question from the corpus's fulltext with citations, scoped by a grimoire spell (kind 777) or inline scope; requires the indexer
  • Semantic snippet passages from chunk re-ranking surfaced per result when the relay's re-ranking is active
  • Full-text search with NIP-50
  • Filter by publisher, creator, subject, resource type, educational level
  • Browse available subjects, resource types, and educational levels
  • Resolve author/organisation names to pubkeys (resolve_author) for author-scoped queries
  • NIP-52 calendar event search with temporal, geohash, and hashtag filters
  • SKOS controlled-vocabulary lookup and search (skos_*)
  • Get individual resources by identifier
  • Relay statistics and info

URL → Form-Prefill Metadata

  • extractmetadata(url, variant, skosSchemes?) — fetch a public web page and produce a complete AMB/EKW form-prefill payload. Returns OpenGraph fallback by default; with ANTHROPICAPI_KEY set, an LLM grounded in the configured SKOS vocabularies fills SKOS-typed fields with concept IDs and per-field evidence quotes.
  • Library export: import { extractMetadata } from 'nope-mcp/lib' for direct in-process use (e.g. SvelteKit server routes).

Signing & Publishing

  • NIP-46 remote signing (bunker) with QR code connection flow
  • Sign and publish arbitrary Nostr events
  • Create and publish kind 0 (profile/metadata) events
  • Create and publish kind 30142 (AMB educational resource) events
  • NIP-42 relay authentication support
  • Multi-user session isolation

Installation

bun install

Configuration

Copy .env.example to .env and configure:

cp .env.example .env

Environment variables

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

nope-mcp — Open Educational Resources search: common questions

Is nope-mcp — Open Educational Resources search MCP server safe?
Yes, by our scan: it is graded A (88/100). Read the nope-mcp — Open Educational Resources search safety report
How do I install nope-mcp — Open Educational Resources search?
It runs remotely at mcp.edufeed.org. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does nope-mcp — Open Educational Resources search need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is nope-mcp — Open Educational Resources search maintained?
The last commit was 32 days ago (2026-10-03). The latest release is v0.4.0.
Is nope-mcp — Open Educational Resources search up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
What can I use instead of nope-mcp — Open Educational Resources search?
Servers from other publishers that do the same job: GitHits MCP server, Zotero MCP server and Calibre MCP server.
How does nope-mcp — Open Educational Resources search compare with other Web search MCP servers?
safety score 88/100 (higher than 80% of 3,470 Web search servers); tools 18 (the typical Web search server has 5); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to nope-mcp — Open Educational Resources search

Same job from other publishers: the closest match first, then the best rated.

  • GitHits
    Search public open-source code, documentation, metadata, vulnerabilities, changelogs, and examples.
    A
  • Zotero MCP
    Search your Zotero library, retrieve item metadata, and read full text from AI assistants.
    B
  • Calibre
    Calibre ebook library server: search, read content, curate metadata, semantic search, gated writes.
    A