nope-mcp — Open Educational Resources search MCP server
online · 100% uptimeorg.edufeed/nope-mcp·v0.4.0·1 starsSearch German open educational resources (OER) via AMB/schema.org metadata, open licenses only.
1 stars
Reviews
Write oneNobody 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 postsbrowse_educational_levelsFreeList available educational levels (Primary, Secondary, Higher Education, etc.) with resource counts.
browse_resource_typesFreeList available learning resource types (Video, Course, Worksheet, etc.) with resource counts.
browse_subjectsFreeList available subjects/topics in the educational resource collection. Returns subjects with their labels and resource counts.
get_resourceFreeRetrieve 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_authorsFreeList 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_authorsFreeList 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_relaysFreeList 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_getFreeGet 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_statsFreeGet information about all selectable AMB relays (default and extra), including supported NIPs, relay name, and description.
resolve_authorFreeResolve 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_publisherFreeResolve 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_eventsFreeSearch 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_contentFreeTopic 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_passagesFreeTHE 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_resourcesFreeSearch 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_conceptFreeGet details of a single SKOS concept by its URI, including broader, narrower, and related concepts.
skos_get_vocabularyFreeFetch and parse a SKOS vocabulary from its URI. Returns the concept scheme with all concepts organized hierarchically.
skos_searchFreeSearch 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
- –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-descriptiontool 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.…
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
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-mcpMirrors: 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 installConfiguration
Copy .env.example to .env and configure:
cp .env.example .envEnvironment 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.
GitHitsSearch public open-source code, documentation, metadata, vulnerabilities, changelogs, and examples.not reviewedEstablishedA- Zotero MCPSearch your Zotero library, retrieve item metadata, and read full text from AI assistants.not reviewedEstablishedB
- CalibreCalibre ebook library server: search, read content, curate metadata, semantic search, gated writes.not reviewedGrowingA