llm-wiki-mcp
This MCP server provides a governed, candidate-first wiki management system for AI agents, enforcing human approval before any formal wiki content is updated.
Initialize & Inspect: Set up a new wiki structure or verify an existing directory has a valid layout.
Search: Perform scope-aware searches across formal pages and/or raw sources using keyword, semantic, or hybrid modes, with domain filtering and ranked results with
next_actionhints.Read: Access formal wiki pages (with parsed frontmatter and link analysis) and immutable raw source files, both with pagination support.
Create Raw Sources: Add new raw source files — existing files are never overwritten, preserving source material integrity.
Candidate-First Writes: Propose changes as candidate bundles (new pages, updates, public drafts) — nothing is written to the formal wiki until explicitly approved.
Apply Approved Candidates: Atomically apply a reviewed and approved candidate bundle to the formal wiki.
Change Logging: Record structured change-log entries (action, subject, reason, impact, verification) with configurable retention trimming.
Lint & Health Review: Run structured lint checks (errors, warnings, suggestions) and get a comprehensive health summary covering source coverage, orphans, duplicates, stale pages, and confidence levels.
Public Draft Management: Render public-facing draft candidates (with optional redaction) and validate them for sensitive content before publication.
Safety & Governance: Enforces path safety within
wiki_root, validates frontmatter, and requires explicit configuration to allow writes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@llm-wiki-mcpsearch wiki for 'neural networks'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
llm-wiki-mcp
An MCP server that gives your AI agents a governed wiki instead of unrestricted filesystem access. It sits between "full power" and "read-only" by requiring human approval before any formal wiki page gets updated.
Design philosophy draws from Karpathy's LLM Wiki methodology: compile knowledge into a reusable wiki during ingest/maintenance, rather than re-synthesizing from raw sources on every query. Astro-Han/karpathy-llm-wiki and multica-ai/andrej-karpathy-skills served as engineering references.
The project started by hand-crafting ~/llm-wiki to validate the workflow, then abstracting it into an MCP server — the tool design comes from real usage, not theory.
Why this exists
When you use an AI agent to build a knowledge base, it can read and write pages. Without constraints:
It overwrites pages you spent time curating.
Files end up scattered across directories with no consistent structure.
It updates
index.mdwithout recording what changed.There's no audit trail of who changed what and why.
This server forces every write to go through a candidate review cycle. The agent proposes changes, you review and approve them, and only then does the wiki update.
Related MCP server: agent-wiki
What it does
Candidate-first writes — formal pages, index updates, and public exports are proposals. Nothing gets written until you call
apply_candidate.Immutable raw sources —
raw/files can only be created, never overwritten. Your source material stays intact.Path safety — all operations stay within
wiki_root. Parent-traversal attempts are rejected at the path layer.Structured linting —
run_lintreturns parsed results (errors, warnings, suggestions) as data, not a process exit code that breaks the MCP transport.Change log — every mutation is logged with action, impact, and verification, with configurable retention.
Search that tells you what to do next — formal pages and raw sources are ranked separately. Scope-aware search returns a
next_actionhint (read_pagevsread_raw_source).Frontmatter validation — unknown fields, empty directory lists, and invalid retention values are caught before they reach your wiki.
Workflow

New / revised source added
↓
compile_page or create_update_candidate
↓
Review Candidate bundle (page, index, public-draft, log, source-manifest)
↓
apply_candidate after explicit approval
↓
run_lintAgents return persisted Candidate bundles first. You (or your agent's human-in-the-loop) review the full change set before anything touches the formal wiki.
Quick Start
git clone https://github.com/jaronlu/llm-wiki-mcp.git
cd llm-wiki-mcp
uv sync --dev
cp config/examples.config.yaml config/config.yaml
uv run llm-wiki-mcpEdit config/config.yaml for your machine. Keep it local and untracked.
wiki_root: ~/llm-wiki
allow_write_raw: false
allow_write_formal: false
allow_update_index: false
allow_modify_schema: false
log_retention_entries: 120
formal_dirs: [domains, entities]
raw_dirs: [raw]
workshop_dirs: [workshop]
non_formal_dirs: [drafts, reading]workshop_dirs enables project packages whose root README.md is a formal
entity page and whose raw/ subtree contains project evidence:
llm-wiki/
├── workshop/
│ ├── agentic-rag-securities/
│ │ ├── README.md
│ │ └── raw/
│ └── wiki-mcp/
│ ├── README.md
│ └── raw/
├── domains/
├── entities/
└── raw/MCP tools
Tool | What it does |
| Creates or completes a wiki root with scaffolding |
| Checks if a directory is a valid wiki and reports status |
| Scope-aware search across formal pages and raw sources |
| Reads a formal page with parsed frontmatter and link analysis |
| Reads raw source files (immutable view) |
| Creates a new raw source (create-only, no overwrite) |
| Appends a structured change-log entry |
| Builds a candidate formal page from raw sources |
| Builds a candidate index update |
| Applies a previously-reviewed candidate bundle |
| Runs structured lint checks and returns parsed results |
| Reviews wiki health (coverage, orphans, stale pages) |
| Creates a public-facing draft (candidate-first) |
| Checks that public exports don't leak sensitive content |
Mutation tools are conservative by default. Raw writes require allow_write_raw: true; applying candidates requires allow_write_formal: true.
Configuration
Config loading order:
Built-in defaults.
Project-local
config/config.yaml, when present.
The server intentionally ignores MCP host config path environment variables and root override environment variables, so the runtime source of truth stays in the repository-local config file.
Config validation rejects unknown top-level fields, nested directory names, empty directory lists, and non-positive log_retention_entries values.
Safety boundaries
All paths must resolve under
wiki_root.init_wikicreates or completeswiki_rootby default when no explicitrootargument is provided.raw/writes are create-only and never overwrite existing files.Formal page writes require
allow_write_formal: true;index.mdupdates, migrations, and public exports are candidate-first..llm-wiki/source-manifest.jsontracks raw source digests without modifying page frontmatter.run_lintreturns structured lint data instead of treating lint failures as MCP transport failures.
MCP Host Config
[mcp_servers.llm_wiki]
command = "uv"
args = ["--directory", "/path/to/llm-wiki-mcp", "run", "llm-wiki-mcp"]
startup_timeout_sec = 120The server always reads configuration from <repo>/config/config.yaml; no MCP host environment variable is needed.
Development
uv run ruff check .
uv run pytestContributing
See CONTRIBUTING.md for development setup and design rules.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaronlu/llm-wiki-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server