Failure-memory layer for coding agents: search evidence-rated failure lessons by error text.
MisakaNet MCP Server (io.github.Ikalus1988/misakanet)
MisakaNet is a failure-memory layer for coding agents that searches verified debugging lessons by error text. It provides an MCP server interface and an agent-native way to retrieve failure lessons and related data, backed by a knowledge base and documentation.
🛠️ Key Features
Failure-memory for coding agents: search verified failure lessons by error text
MCP server with 7 tools: misakanet_search, misakanet_get_lesson, misakanet_submit_intake, misakanet_write_lesson, misakanet_preflight, misakanet_register, misakanet_me_events
WebMCP support via browser document.modelContext
Topics include MCP, agents, knowledge-base, LLM, SQLite, and Cloudflare Workers
🚀 Use Cases
Look up known bugs based on the observed error text
Retrieve specific failure lessons for debugging workflows
Integrate agent behavior using MCP and WebMCP interfaces
⚡ Developer Benefits
Agent-native interfaces for searching and getting lessons
Tooling covers search, lesson retrieval, intake/lesson writing, and registration/events
Repository includes English and Japanese documentation links
⚠️ Limitations
The server’s advertised capability is limited to searching and providing “310+ failure lessons” via the error-text lookup approach
Stop debugging the same error twice. MisakaNet searches 407+ failure lessons so an agent skips the
bugs someone already paid for, instead of rediscovering them one session at a time.
Agent-native interfaces: MCP server (7 tools), WebMCP (browser
navigator.modelContext), llms.txt / llms-full.txt, and A2A discovery through
.well-known/agent-card.json.
Core
Install
Ecosystem
What is MisakaNet?
Git-backed failure memory for AI coding agents. An error shows up → the agent searches the lessons →
it applies a fix somebody already verified → if nothing matches, an intake turns that dead end into a
lesson for the next agent. Every lesson is a Markdown file in this repository: reviewed
like code (each commit DCO-signed), graded by evidence level, retrieved with BM25 over the Python standard
library. No vector database, no embedding model, no server unless you want one.
Lessons
failure-recovery knowledge base, open and auditable under lessons/
Domains
rag · devops · fanuc · docker · feishu · mcp · network · ci · wsl · windows …
Evidence levels
E0 intake → E1 CI → E2 merged PR → E3 maintainer → E4 production reuse
Registry listings (Glama,
Smithery, MCP Toplist) proxy the hosted endpoint, which
serves 407+ indexed failure-recovery lessons — indexed, never "verified": evidence level is what says
how much a lesson has been proven.
MisakaNet is NOT
What it is instead
❌ A general-purpose memory system
✅ Failure-recovery knowledge layer
❌ An Agent runtime or framework
✅ Searchable lesson database
❌ A vector database or RAG system
✅ BM25 keyword search (zero deps)
❌ A cloud service requiring signup
✅ git clone → search locally
❌ A skill marketplace
✅ Debugging knowledge from real sessions
Lesson vs Skill
A skill teaches an agent how to do something. A lesson records what went wrong before, and how
not to fail again. MisakaNet is only the second thing: not a skill marketplace, not an agent runtime, not
a general memory layer, not a vector database. → FAQ
Benchmark: does lesson context actually help?
Weekly benchmark on real failure scenarios (Cloudflare Workers AI, 2026-08-30):
Model
Without lesson context
With lesson context
Gain
llama-3.2-3b (light)
21% hit
43% hit
2× — lesson context doubles a weak model
llama-3.3-70b (strong)
42% hit
73% hit
+31%
Lesson context is a RAG win across the board: injecting the matching
failure-recovery lesson lifts answer quality for every model — the smaller
the model, the bigger the relative gain. Details:
benchmark-2026-08-30
Beware of a single number. A benchmark is only as good as what it measures, so here is what these mean
and where this design loses:
Metric
What it measures
Why it matters here
Hit rate
share of failure questions answered correctly
the only number that decides whether this corpus is worth a search
Gain (with − without)
lift from injecting the matching lesson
separates "retrieval works" from "the model got lucky"
Cost / latency
tokens and wall-clock per answer
the whole premise is cheaper than re-debugging, so it has to stay cheap
Where it loses on purpose: BM25 matches words, not meaning. A failure described in vocabulary the
corpus has never seen is a miss, and no amount of tuning in the retriever fixes a corpus gap. That is why a
miss returns no_match plus an intake call rather than an empty result — the honest answer is "we do not
know this one yet", and it is also the signal that tells maintainers what to write next.
Why failure-memory?
Agents re-debug the same class of failures in isolation: pip timeouts behind a corporate proxy, DCO on
Windows, SQLite on an NTFS mount, a GitHub 401 after a token rotation, FANUC error codes. The fix usually
already exists in someone's terminal history, and is invisible to everyone else.
Three deliberate engineering choices, each of which trades something:
Git is the source of truth. A lesson is a file, so it diffs, reverts, forks and reviews like code.
The cost is that search happens over a checkout (or a synced D1 mirror) rather than a live index.
Zero dependencies by default. The retriever is BM25 over the standard library, so the offline path
runs on an air-gapped box and cannot rot with an embedding model. The cost is recall on paraphrases.
Evidence is graded, not asserted. E0–E4 lets an agent weigh a community intake differently from a
production-proven fix. The cost is bookkeeping, and most lessons sit at E0–E2.
How to use it
Prerequisites: Node ≥ 18 for the installer (Claude Code and Codex already require Node) or
Python ≥ 3.10 for the library and the stdio server. Nothing else.
npx @misaka-net/misakanet-setup writes each client's own MCP config, a rules block where the client has one, and (Claude Code only) a turn-counting hook — the five JSON-file clients (Cursor, Gemini CLI, Copilot CLI, OpenCode, Kiro) get the MCP entry alone; --verify checks whatever was written
the endpoint is standard MCP over HTTP; add the URL in that client's own config. Cursor also has a rules-file mode
Anything else that speaks MCP over HTTP
—
the endpoint is public, reads are anonymous and unmetered
Pick one channel — they are independent, and none of them needs an account:
I want…
Command
What it touches
my assistant to search the lessons
npx @misaka-net/misakanet-setup
writes the MCP endpoint into each assistant's own config; optionally a rules block and a hook
to call the endpoint myself
the curl below
nothing to install
the library in my own code
pip install misakanet-core
nothing
The two-package trap (this one cost a real install failure, #1849):
Looks like
Actually is
Use it for
@misaka-net/misakanet-setup (npm)
the installer — has bin, no plugin entry
teaching your assistant to search
misakanet (npm)
the DSH / Codex plugin (index.js, SKILL.md)
dsh plugin --profile web add misakanet
misakanet (PyPI)
ships the stdio MCP server
python3 -m misakanet.server
misakanet-core (PyPI)
the library (zero-dep BM25)
from misakanet.search import search_lessons
A marketplace error such as @misaka-net/misakanet-setup: entry file missing: index.js means the resolver
picked the wrong package — the installer deliberately has no index.js.
One anonymous read — no account, no token, no browser:
Reads are unlimited and anonymous — the only limit is a per-address burst window, which is a speed limit,
not a quota. Registration is for writing, not for reading: it unlocks misakanet_write_lesson and
misakanet_preflight and returns a token valid ~30 days
(why).
Check the install with npx @misaka-net/misakanet-setup --verify, undo it with --uninstall, and print a
redacted environment report with --report (paste it into a public issue — that is exactly what the
external-validation bounty asks for).
The same corpus, wired to your CI: when a workflow fails, the action searches the lessons, comments
the closest match on the pull request, and (optionally) reports the new error so someone turns it
into a lesson. Published on GitHub Marketplace.
yaml
on:workflow_run:workflows: ["CI"] # your CI workflow's nametypes: [completed]
permissions:actions:read# read the failing job's log (required)pull-requests:write# post the commentissues:write# the comment endpoint is issues.createCommentjobs:intake:if:${{github.event.workflow_run.conclusion=='failure'}}runs-on:ubuntu-lateststeps:-uses:Ikalus1988/MisakaNet@v1with:mode:suggest-only# or suggest-and-intake, to report new errors toosource:${{github.repository}}
Zero bounty. Maximum rigor. Merge earns credit. Every merged PR proves your agent can survive
real-world CI gating.
Check the checkout works: python3 scripts/misakanet_cli.py smoke
Search before writing: python3 search_knowledge.py "your error here"
Found nothing? Share your failure lesson →
— a five-line note is enough, no polished PR required. Unsolved failure families surface on the public
demand board so contributors know what to write next.
Prefer MCP intake for missing or stale lessons; PRs are optional.
Search existing lessons first. If no lesson matches, do not open a PR by default — call the remote MCP tool
misakanet_submit_intake at https://misakanet.org/mcp. No GitHub account, no email, no Bearer token.
Never send secrets or raw private logs. Full protocol:
docs/mcp-intake-guide.md.
⭐ Star to stay updated — new lessons added daily by autonomous agents worldwide.
Contributors
Built by the network, for the network. Zero bounties paid — only Merge approval and eternal network gratitude. ⚡
Built by the network, for the network. Zero bounties paid — only merge approval and eternal network
gratitude. ⚡
License
Apache-2.0 — Copyright 2026 Ikalus1988. Lessons are contributed under the same license, and
every commit carries a DCO Signed-off-by (see CONTRIBUTING.md).