eklavyaBLOCK
Learn while your agent works. A Claude Code plugin that quizzes you on the concepts behind the code it just wrote — local knowledge graph, spaced repetition, optional commit gate.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Learn while your agent works — and carry project context forward.
[Visit the website →](https://eklavya-run.web.app/)
Watch a short example session.
Named for Ekalavya, who mastered archery practicing before a silent statue of his guru. Here, the statue talks back.
[](https://www.npmjs.com/package/eklavya) [](LICENSE) [](https://nodejs.org)
Eklavya is a plugin for Claude Code. It does two jobs:
- It helps you understand the code Claude writes. It asks you short
questions about the work, while the work happens.
- It remembers what happened in your project. The next time you open
Claude, it can recall what you did last time.
Your learning history and memory are stored on your computer. There is no Eklavya account. Eklavya sends anonymous daily usage counts, never code, paths, names or text. Every field is listed, and eklavya telemetry off stops them. New installs use claude-sonnet-5 through your Claude Code login for memory summaries and prompt feedback, so captured session evidence goes to that model. [Memory and data](https://eklav
bd0788d18163OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add eklavya-site --env OPENAI_API_KEY=${OPENAI_API_KEY} -- npx -y eklavya-site{
"mcpServers": {
"eklavya-site": {
"command": "npx",
"args": [
"-y",
"eklavya-site"
],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}Exposed tools (22)
18 read · 3 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Eklavya | read | Your Eklavya learning progress, project memory, artifacts and settings. |
auth | read | auth work |
c | read | again |
code_find_symbol | read | Where a name is DECLARED across this repository, with the file, the line and the declaration itself. Declarations only, not every mention — a list of call sites answers a different question. Scoped to this project. ${CEILING} |
code_outline | read | The declarations in one file, with line numbers — classes, functions, types, tables — so you can choose what to read instead of reading all of it. Pass |
eklavya-panel | read | Open the Eklavya quiz panel |
get_concept_graph | write | Concepts and edges for a domain in prerequisite order — the order to teach them in. Optionally annotated with this learner\ |
get_config | read | The effective Eklavya config: global ~/.eklavya/config.json merged with this project\ |
memory_collections | read | Named, saved views over this project |
memory_correct | read | Replace a wrong or outdated entry. The original is never edited: the stale claim keeps its evidence links and its place in the audit trail, and only the replacement is returned by retrieval. ${OWN_RULE} |
memory_delete | destructive | Remove an entry from retrieval. Soft by default — the row stays in the timeline as a deletion, its search index and vector do not. |
memory_file_history | read | Every remembered entry that touched a file, newest first — what this file has already been through before you change it. Matches on a path fragment, so |
memory_get | read | Read the full entries behind ids from memory_search or memory_timeline: narrative, facts, files, tags and the evidence events each claim came from. Pass the receipt_id a recall block carried (its receipt= |
memory_search | read | Find past work by meaning or keyword. Returns identifiers and titles only — call memory_get with the ids that look relevant to read the narrative. ${SCOPE_RULE} ${EVIDENCE_RULE} |
memory_status | read | Capture and processing health: how much is remembered, how much evidence is still waiting, the job queue, the reuse saving, and which summarizer is running. Answer |
memory_timeline | read | What happened in this project, newest first — compact rows, stable under paging with offset. Includes superseded entries, so it is the audit trail rather than the retrieval view. ${SCOPE_RULE} ${EVIDENCE_RULE} |
memory_write | write | Record something worth remembering that no tool call would have captured — a decision, a constraint, a dead end. Secrets are redacted before it is stored. ${SCOPE_RULE} |
panel_answer | read | Called only by the Eklavya panel, never by the model. Grades and records one answer exactly once: kind |
present_question | read | Hand one multiple-choice question to the Eklavya side panel and return at once. Use it instead of AskUserQuestion only when the plan says presentation |
record_attempt | read | Grade one answer on the 0-5 SM-2 scale and persist it, returning its attempt_id. Updates mastery, the next review date, the session gate and this project\ |
set_config | write | Update Eklavya config. Scope |
upsert_concepts | read | Grow the knowledge graph when work touches a concept that has no slug yet. Slugs are normalized and near-duplicates are folded into the existing concept, so check the returned canonical slug before using it. |
Trust audit
BLOCKgrade F · trust 43/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (4 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
'/.ssh/',
'id_rsa',
'id_ed25519',
'.netrc',
.listen(port, '127.0.0.1', () => process.stdout.write(`eval dashboard: http://127.0.0.1:${port} (scanning ${root})\n`));['postgres://app:[email protected]:5432/app', 'pa55word'],
['MONGO=mongodb+srv://u:[email protected]', 'm0ng0pw'],
const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
const token = 'ghp_abcdefghijklmnopqrstuvwxyz012345';
const secret = '/Users/someone/private-repo';
const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
body: 'deploy failed with GITHUB_TOKEN=ghp_abcdefghijklmnopqrstuvwxyz0123',
expect(raw).not.toContain('ghp_abcdefghijklmnopqrstuvwxyz0123');const SECRET = 'ghp_abcdefghijklmnopqrstuvwxyz0123';
const out = redact('-----BEGIN PRIVATE KEY-----\nabc\n-----END PRIVATE KEY-----\nafter');['stripe sk_live_51HxAbCdEfGhIjKlMnOp', 'sk_live_51HxAbCdEfGhIjKlMnOp'],
memory_delete
.firebaserc
.releaserc.json
.c8rc.json
const parseForm = (text: string) => yaml.load(text) as { name: string; title: string; body: Field[] };expect(yaml.load(read('.github/ISSUE_TEMPLATE/config.yml'))).toEqual({ blank_issues_enabled: true });Gates applied: no_behavioural_pass.
bd0788d18163full audit observations/trust-audit/mcp-server/projectaj14__eklavya.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | bd0788d18163 | BLOCK | F | 43 | first audit |
Questions
What is the eklavya MCP server?
Learn while your agent works. A Claude Code plugin that quizzes you on the concepts behind the code it just wrote — local knowledge graph, spaced repetition, optional commit gate.
What tools does eklavya expose?
22 in total: 18 read-only, 3 that write, and 1 that can delete or overwrite (memory_delete). Every one is listed on this page with its risk.
Is eklavya safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (43/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does eklavya need?
It reads OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does eklavya run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as eklavya-site.
How current is this page?
The grade is for one exact copy of the source (bd0788d18163), read on 2026-10-11. The repository is watched and re-audited when it changes.