A side-by-side look at the Nope Mcp — Open Educational Resources search and Openemis Pro MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Nope Mcp — Open Educational Resources search for education work; choose Openemis Pro for education over a hosted endpoint. You can also run both side by side in one mcpServers block.
SERVER_PRIVATE_KEY.search_resources, search_content, get_resource.openemis_health, openemis_list_domains, openemis_discover.Rows where the two servers differ are marked.
| Spec | N Nope Mcp — Open Educational Resources search | |
|---|---|---|
| Category | Education | Education |
| Quality signal | 52/100 · Good | 48/100 · Fair |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | SERVER_PRIVATE_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 2 |
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 18 | 9 |
| Full listing | View Nope Mcp — Open Educational Resources search | View Openemis Pro |
search_resourcesSearch 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.search_contentTopic 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.get_resourceRetrieve 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.browse_subjectsList available subjects/topics in the educational resource collection. Returns subjects with their labels and resource counts.browse_resource_typesList available learning resource types (Video, Course, Worksheet, etc.) with resource counts.browse_educational_levelsList available educational levels (Primary, Secondary, Higher Education, etc.) with resource counts.relay_statsGet information about all selectable AMB relays (default and extra), including supported NIPs, relay name, and description.list_relaysList 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_getGet 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.skos_get_vocabularyFetch and parse a SKOS vocabulary from its URI. Returns the concept scheme with all concepts organized hierarchically.skos_get_conceptGet details of a single SKOS concept by its URI, including broader, narrower, and related concepts.skos_searchSearch for concepts in a SKOS vocabulary. By default searches prefLabel, altLabel, hiddenLabel, and definition.openemis_healthPings the configured instance and reports reachability. Performs a real login round-trip — if this passes, CRUD will work.openemis_list_domainsLists the curated OpenEMIS domains — Attendance, Assessment, Staff, Student, Institution, Schedule, Examination, Report — each with a one-line summary. The agent uses this to figure out *where* a question lives.openemis_discoverInput: a topic string. Output: up to 30 endpoints relevant to that topic, drawn from the domain knowledge pack and the per-instance manifest. Keeps conversations small regardless of how large the underlying API is.openemis_list_playbooksLists all 40 curated workflow playbooks with id, title, domain, and audience. The agent uses this to find the right step-by-step guide for a user-level task.openemis_get_playbookInput: a playbook id. Output: the full playbook — resources, ordered steps, guidance notes, and example queries.openemis_getUnified read tool. `{ resource, id?, params? }` — if `id` is present, fetches the singleton; otherwise lists with any combination of `_fields`, `_conditions`, `orderby`, `order`, `page`, `limit`, plus any ad-hoc filter key.openemis_createCreate a new record. `{ resource, body }` — non-workflow resources only. Workflow-controlled resources (e.g. institution-staff-leave) are blocked and will redirect to the appropriate playbook.openemis_updateUpdate an existing record by id. `{ resource, id, body }` — non-workflow resources only.openemis_deleteDelete a record by id. `{ resource, id }` — non-workflow resources only.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
No confirmed install command for Nope Mcp — Open Educational Resources search yet — follow the setup steps linked from its listing page rather than a guessed package name.
{
"mcpServers": {
"openemis-pro": {
"url": "https://api.openemis.org/core"
}
}
}