Atlas / MCP servers / atomicstrata / llm-wiki-compiler

llm-wiki-compilerBLOCK

mcp/atomicstrata/llm-wiki-compiler

The knowledge compiler. Raw sources in, interlinked wiki out. Inspired by Karpathy's LLM Wiki pattern.

Verdict
BLOCK
Grade
F
Trust score
44 /100
Exposed tools
27 23r · 4w · 0d
Transport
stdio
License
MIT
Stars
2,182
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/atomicstrata/llm-wiki-compiler/actions/workflows/ci.yml) [](https://www.npmjs.com/package/llm-wiki-compiler) [](https://llmwiki.atomicstrata.ai) [](LICENSE)

New in 1.4.0 — Review answers before publishing.

  • Choose what becomes part of your wiki. Review generated answers and check their citations before saving them as published pages.
  • Approve pages together. Review a batch of generated pages and publish the ones you choose in one operation.
  • See the pages behind an answer. Follow citations back to your wiki and see which pages were used to answer your question.

Release notes · Upgrade guide · Install llmwiki

New in 1.3 — A fresh look for your wiki.

Meet Scientific Clay, with soft surfaces and rounded typography, and Minimal, which follows your system’s light or dark setting. Switch instantly between four themes, including Nebula Light and Dark.

Scientific ClayMinimal

The same page in a demonstration wiki. Click either screenshot for a closer look.

Recursive sour

Read from source at commit 1d695722f78aOBSERVED · 2026-10-14
02

Exposed tools (27)

23 read · 4 write · 0 destructive.

ToolRiskDescription
compile_wikiread
describe_workflow_actionread
export_okfread
extractreadExtract
extract_conceptsreadExtract knowledge concepts from a source document
extract_rulesreadExtract machine-actionable workflow rules from a source document.
get_context_packread
get_weatherreadGet the weather for a city
import_okfwrite
ingest_sourceread
judge_citationreadRate how well the source excerpt supports the claim.
lint_wikiread
list_workflow_actionsread
query_wikiread
read_pageread
return_valuereadReturn one string value
run_evalwrite
run_workflow_actionwrite
searchreadSearch documents
search_pagesread
select_pagesreadSelect the most relevant wiki pages to answer a question
treadd
tool_areadFirst tool
tool_breadSecond tool
verify_artifactread
wiki_statusread
workflow_run_statuswrite
03

Trust audit

BLOCKgrade F · trust 44/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (7 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
src/operation-bundles/payload-store.ts
payload-store.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
src/operations-packs/handlers/page-payload.ts
page-payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/eval/thresholds.ts:50
return (yaml.load(raw) as ThresholdConfig) ?? {};
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/schema/loader.ts:45
const parsed = isJson ? JSON.parse(content) : yaml.load(content);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/utils/markdown.ts:131
const parsed = yaml.load(match[1]);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/benchmark-review-batch.mjs:53
const output = await exec(process.execPath, [path.resolve(cli), ...arguments_], {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/tsup-command.ts:27
const { stdout } = await exec(process.execPath, [resolveTsupCli()], {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/compile-read-extraction-egress.test.ts:20
const SECRET = "OUTSIDE-INDEX-SECRET-3b91";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/compile-read-routing.test.ts:27
const SECRET = "OUTSIDE-SECRET-BYTES-7f3a9c";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/journal-recordprestate-confined.test.ts:69
const secret = "TOP-SECRET-OUTSIDE-BYTES";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/journal-recordprestate-confined.test.ts:79
const secret = "OUTSIDE_SECRET-parent-symlink";
LOWInventory / provenance · inv.binary · CWE-1104
test/relation-evidence-contract.test.ts
relation-evidence-contract.test.ts
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.fallowrc.json
.fallowrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/.atlas-analysis.json
.atlas-analysis.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/.mintignore
.mintignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/fixtures/provider-payload.ts
provider-payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/lifecycle-audit-payload.test.ts
lifecycle-audit-payload.test.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/operation-bundles/payload-store.test.ts
payload-store.test.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
test/agent-discovery.test.ts:63
return { frontmatter: yaml.load(match[1]) as SkillFrontmatter, body: match[2] };
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
test/fixtures/run-cli.ts:108
const { stdout, stderr } = await exec(process.execPath, [CLI, ...args], {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
test/global-setup.ts:31
await exec(process.execPath, [resolveTsupCli()], { cwd: path.resolve(".") });
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
test/operations-packs/pack-negative-sweep.test.ts:61
const FORBIDDEN_BODY = { command: "rm -rf /", absolutePath: "/etc/passwd", expression: "eval(x)", writablePath: "../../x" };
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/viewer-render-security.test.ts:139
expect(render("[a](vscode://file//Users/anyone/.ssh/id_rsa)")).not.toMatch(/href=["']?vscode:/i);
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/llmwiki-core/tsup.config.ts:11
index: "../../src/core-index.ts",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/llmwiki-core/tsup.config.ts:12
"compiler-cli": "../../src/compiler-cli.ts",

Gates applied: no_behavioural_pass.

Audited 2026-10-14 · audit v0.4.1 · source sha 1d695722f78afull audit observations/trust-audit/mcp-server/atomicstrata__llm-wiki-compiler.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-141d695722f78aBLOCKF44first audit
05

Questions

What is the llm-wiki-compiler MCP server?

The knowledge compiler. Raw sources in, interlinked wiki out. Inspired by Karpathy's LLM Wiki pattern.

What tools does llm-wiki-compiler expose?

27 in total: 23 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is llm-wiki-compiler safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (44/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does llm-wiki-compiler need?

It reads ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, ATLASCLOUD_API_KEY, ATLAS_CLOUD_API_KEY, FIXTURE_KEY, GITHUB_TOKEN, LLMWIKI_TEST_PROVIDER_TASK6_SECRET, MINIMAX_API_KEY, OPENAI_API_KEY, ORCAROUTER_API_KEY, READINESS_FIXTURE_KEY and VOYAGE_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 llm-wiki-compiler run?

It speaks stdio, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (1d695722f78a), read on 2026-10-14. The repository is watched and re-audited when it changes.

Advertisement