Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Search worklore stories and x-ray any skill or story capability tier (T0-T4) before you run it.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://worklore.dev/mcpRun this in your terminal
claude mcp add --transport http worklore https://worklore.dev/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"worklore": {
"url": "https://worklore.dev/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"worklore": {
"type": "http",
"url": "https://worklore.dev/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://worklore.dev/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account worklore, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (0.9.0) reached the registry 10 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
An MCP (Model Context Protocol) connector for worklore.dev — it lets any MCP-capable agent (Claude, ChatGPT, Cursor, …) search worklore's developer stories, read one with its capability disclosure attached, x-ray any skill or story before running it — all without an account — and, once you've signed in, record how a reproduction went, publish a story of your own, or revise one you published.
https://worklore.dev/mcp (Streamable HTTP, JSON-RPC over POST)io.github.worklore/worklore, and Smitheryworklore stories are text your agent *executes*. This connector brings them — and their capability tier — into your agent, so you can find relevant work and see what it can touch before you run it. Tiers describe reach (blast radius), not virtue, and this is never a "safe" verdict. See the write-up: Stop asking "is this skill safe?" — ask "what can it do?" and the tool it wraps, skill-xray.
Capability tiers: T0 inert · T1 local · T2 network · T3 elevated (secrets / persistence / privilege) · T4 opaque (fetches/runs code at runtime).
Read-only — no sign-in needed (public stories only; check_capability with a url needs sign-in, because the server fetches it for you):
| Tool | Arguments | Returns |
|---|---|---|
check_capability | text or url | tier (T0–T4) + sha256 + findings (file:line) + endpoints, plus behavioral red flags — capability disclosure |
get_story | slug | the story's full markdown (narrative + "Reproduce this" contract) with its capability tier + findings |
search_stories | query *(optional)* | matching stories (title/summary/tags/stack), each with its capability string |
suggest_for_project | context | up to 3 stories worth reproducing here, with why + tier |
Write — these act as you, and need your authenticated session:
| Tool | Arguments | Returns |
|---|---|---|
report_reproduction | slug, result (worked/partial/failed), note *(optional)* | the recorded reproduction. failed is a useful report and must never be inflated |
report_check | slug, result (has_problem/no_problem), note *(optional)* | the recorded result of a story's read-only "Check if this applies to you" section, run in your project. Only for stories that have one (get_story says has_check: true). Never record "not applicable" — when your project does not match the check's preconditions, don't call it. One result per person per story; the latest replaces the earlier one |
publish_story | markdown, or the parts (title, narrative, reproduce, tags, type, stack) | the published story's slug + URL. Only ever call this with the author's explicit approval of the full draft |
edit_story | slug, markdown (the full revised story), kind (rephrase/addition/correction, default rephrase), note *(required for a correction)*, source *(optional https URL)* | the slug, URL, the recorded revision (at, kind, note, source) and how many reproducers were notified. Only the story's author can edit it. Show the author a before/after diff and get their approval first. The story's date never changes. If something in the story was wrong, it is a correction — which tells everyone who reproduced it — never a rephrase |
suggest_edit | slug, markdown (the complete story as you propose it), rationale (one or two lines: what was wrong or outdated, what you changed) | the suggestion id, its status (open), the story URL and a note. For a story by SOMEONE ELSE — worklore's pull request. Show the user the before/after diff and get their approval first. The story does not change: its author is notified and either accepts it as a credited revision or declines it, optionally handing the text back as a draft of the user's own. One open suggestion per person per story; sending another replaces it. For the user's own story use edit_story |
All eight carry MCP annotations (readOnlyHint / openWorldHint / idempotentHint) so a client can tell the user what a call will do before they approve it, and all eight declare an outputSchema and return structuredContent, so a consuming agent can rely on shape instead of parsing prose.
Every result carries a human capability string (e.g. T0 · inert — touches nothing) so a tier code is never shown bare.
Since 0.6.0 resources/list is a fixed list of three documents — the same for everyone, every day — all readable without an account:
| URI | What it is |
|---|---|
worklore://guide | How to use worklore through MCP: search, read a story with the user before acting, reproduce it, report honestly (failed is useful), x-ray unfamiliar skills and prompts with check_capability, publish or edit only with the user's approval |
worklore://story-format | The story format: frontmatter fields, the narrative, the "Reproduce this" contract (prerequisites / your agent will need from you / steps / verify), the optional read-only check, fail stories, proposals, sanitising, the exact-references rule. Read it before drafting a story |
worklore://access | What answers without a token and what needs sign-in — rendered from the one access table the server enforces |
Stories are reached through one resource template, worklore://story/{slug} (resources/templates/list). Public stories read without a token; a private story reads only for its author and answers like a missing one to everyone else. Every worklore://story/… URI that resources/list handed out before 0.6.0 still reads. To *find* a story, use search_stories / suggest_for_project.
Why the stories left the list: a list that changes whenever someone publishes cannot be part of a surface fingerprint — the fingerprint would "break" every day without anything breaking, and teach clients to ignore a mismatch. The contents of the three documents may change between releases; the list entries may not without a new version.
A version number is a promise that nothing a client depends on changed without it. Since 0.6.0 worklore publishes its surface fingerprint in the shared form `mcp-surface/1` (SPEC, by Sidney Bissoli), so you check worklore exactly the way you check every other server that publishes it. The registry entry carries it in server.json under _meta → io.modelcontextprotocol.registry/publisher-provided → io.github.sidneybissoli/mcp-surface:
declared.sha256 — the sha256 of what a client sees before it calls anything: the initialize result (protocol version, capabilities, instructions, serverInfo without its version) and the four lists (tools, resources, resource templates, prompts), normalised and serialised as the SPEC says;anonymous — which methods answer without a token (plus one named, harmless tools/call: check_capability on inline text), and its sha256.The fastest check is Sidney's dependency-free verify.mjs (Node 18+). It reads the registry entry for the version, makes sure the endpoint can say "no" to a method that does not exist, captures the live surface, and compares:
curl -sO https://raw.githubusercontent.com/SidneyBissoli/mcp-br-commons/main/packages/mcp-surface/exemplos/verify.mjs
node verify.mjs io.github.worklore/worklore 0.7.0
Or in Python, with nothing installed (the declared hash only):
python3 - <<'PY'
import hashlib, json, urllib.request EP = "https://worklore.dev/mcp" def rpc(method, params=None): body = {"jsonrpc": "2.0", "id": 1, "method": method, **({"params": params} if params else {})} req = urllib.request.Request(EP, data=json.dumps(body).encode(), headers={"Content-Type": "application/json", "Accept": "application/json, text/event-stream"}) return json.load(urllib.request.urlopen(req)).get("result") def canon(v): # SPEC §3: keys by UTF-16 code unit, no whitespace, JSON.stringify strings if isinstance(v, dict): return "{" + ",".join(json.dumps(k, ensure_ascii=False) + ":" + canon(v[k]) for k in sorted(v, key=lambda s: s.encode("utf-16-be"))) + "}" if isinstance(v, list): return "[" + ",".join(canon(x) for x in v) + "]" return json.dumps(v, ensure_ascii=False) def listed(method, key): # this server answers each list in one page res = rpc(method) return res.get(key) if isinstance(res, dict) else None def by(items, key): return None if items is None else sorted(items, key=lambda x: str(x.get(key)).encode("utf-16-be")) init = rpc("initialize", {"protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": {"name": "verify", "version": "1"}}) version = init"serverInfo" surface = {"initialize": {"protocolVersion": init.get("protocolVersion"), "capabilities": init.get("capabilities"), "instructions": init.get("instructions"), "serverInfo": {k: v for k, v in init["serverInfo"].items() if k != "version"}}, "tools": by(listed("tools/list", "tools"), "name"), "resources": by(listed("resources/list", "resources"), "uri"), "resourceTemplates": by(listed("resources/templates/list", "resourceTemplates"), "uriTemplate"), "prompts": by(listed("prompts/list", "prompts"), "name")} live = hashlib.sha256(canon(surface).encode()).hexdigest() entry = json.load(urllib.request.urlopen( "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.worklore%2Fworklore/versions/" + version)) published = entry"server""io.modelcontextprotocol.registry/publisher-provided""declared" print("version", version, "| live", live[:12], "| registry", published[:12], "| match" if live == published else "| DIFFERS") PY
If the version is the same and the hash differs, the server changed without saying so. Tell me in an issue. 0.5.1 published worklore's own per-section hashes under a surface key; 0.6.0 replaced them with this one shared format. The idea of publishing the fingerprint with each release came from a comment by @_firelinks under Sidney Bissoli's Your MCP server changed. Its version didn't.
Since 0.5.0 one rule decides it, everywhere — the site, the REST API and this server alike. It lives as a single table in worklore's backend (access.py, rendered as docs/ACCESS.md); the summary below is generated from it.
The rule. Anyone can search and read all public stories without signing in — site, REST API and MCP alike. Private stories and every write (publish, edit, report a reproduction or a check, visibility, per-user d
Only the beginning is shown; read the rest in the repo