Context7
Up-to-date docs for AI agents
제작자가 쓴 설명(영어 원문)
Search worklore stories and x-ray any skill or story capability tier (T0-T4) before you run it.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://worklore.dev/mcp터미널에서 이 명령어를 실행하세요
claude mcp add --transport http worklore https://worklore.dev/mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"worklore": {
"url": "https://worklore.dev/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"worklore": {
"type": "http",
"url": "https://worklore.dev/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://worklore.dev/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
도구 이름과 설명은 서버가 2026년 11월 7일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
check_capabilityDisclose what an agent Skill or worklore story CAN DO before you run it: a capability tier T0-T4 bound to a content sha256, with findings that carry file:line evidence, PLUS a separate list of behavioral red flags (prompt-injection / deception / exfiltration-intent / safety-bypas
get_storyFetch one worklore story by slug — its full markdown (narrative + the 'Reproduce this' contract your agent would run) WITH its capability disclosure attached (tier + findings), so you see what it can do before applying it. Read the capability first; run check_capability on the li
search_storiesSearch worklore stories by keyword across title, summary, tags and stack. Returns matches with their capability tier.
explore_keywordsThe worklore keyword map: every story tag with its story count, in four editorial groups (tools and agents, building blocks, practices, off the clock), plus the stories under one keyword when you name it. Use it when the user asks what worklore has on a topic, or wants to browse
suggest_for_projectGiven a short description of the current project (stack, what you're building, recent problems), suggest up to 3 worklore stories worth reproducing here, with why each fits and its tier.
report_reproductionCall this right after you apply a worklore story's steps to the user's own task, to record the reproduction (attributed to the signed-in account). Use an honest result: 'worked', 'partial' (you produced the output but it isn't verified yet), or 'failed' — all are useful. One coun
report_checkRecord the result of a story's read-only 'Check if this applies to you' section, run in the user's own project (attributed to the signed-in account). Run ONLY that check — change nothing, apply no fix. First decide whether it applies at all: if the project does not match the chec
publish_storyPublish a NEW worklore story as the signed-in account. worklore stories are PUBLIC and honest, so before you call this you MUST show the human the complete draft — the title, the first-person narrative, and the 'Reproduce this' contract — and get their EXPLICIT approval. Never pu
edit_storyRevise a worklore story the signed-in account PUBLISHED — only its author can edit it. Call get_story first, then show the human a before/after diff of your change and get their EXPLICIT approval before calling this; never edit on your own initiative. Send the COMPLETE revised st
suggest_editPropose a revision of a worklore story written by SOMEONE ELSE, for its author to accept or decline — worklore's pull request. Use it when, while reproducing a story, a step turned out wrong, outdated or missing (a library changed, the docs caught up, a command no longer exists).
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 worklore 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
393ms 만에 응답(HTTP 200)
로그인 필요 없음
도구 설명 10개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.9.0)은 11일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Context7, Codebase Memory, Exa
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Up-to-date docs for AI agents
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.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요