Skip to main content
Glama

llm-wiki-mcp

English | 中文

Python 3.11+ License: MIT Tests

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.md without 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: cortex-brain

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 sourcesraw/ 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 lintingrun_lint returns 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_action hint (read_page vs read_raw_source).

  • Frontmatter validation — unknown fields, empty directory lists, and invalid retention values are caught before they reach your wiki.


Workflow

LLM Wiki MCP workflow example

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_lint

Agents 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-mcp

Edit 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

init_wiki

Creates or completes a wiki root with scaffolding

inspect_wiki

Checks if a directory is a valid wiki and reports status

search_wiki

Scope-aware search across formal pages and raw sources

read_page

Reads a formal page with parsed frontmatter and link analysis

read_raw_source

Reads raw source files (immutable view)

create_raw_source

Creates a new raw source (create-only, no overwrite)

append_log

Appends a structured change-log entry

compile_page

Builds a candidate formal page from raw sources

create_update_candidate

Builds a candidate index update

apply_candidate

Applies a previously-reviewed candidate bundle

run_lint

Runs structured lint checks and returns parsed results

knowledge_health_review

Reviews wiki health (coverage, orphans, stale pages)

write_public_draft

Creates a public-facing draft (candidate-first)

validate_public_safety

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:

  1. Built-in defaults.

  2. 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_wiki creates or completes wiki_root by default when no explicit root argument is provided.

  • raw/ writes are create-only and never overwrite existing files.

  • Formal page writes require allow_write_formal: true; index.md updates, migrations, and public exports are candidate-first.

  • .llm-wiki/source-manifest.json tracks raw source digests without modifying page frontmatter.

  • run_lint returns 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 = 120

The server always reads configuration from <repo>/config/config.yaml; no MCP host environment variable is needed.


Development

uv run ruff check .
uv run pytest

Contributing

See CONTRIBUTING.md for development setup and design rules.

License

MIT — see LICENSE.

Available Tools

14 tools
append_logB

Append a structured entry to log.md and trim old entries to retention.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
actionYes
impactYes
reasonYes
changesYes
subjectYes
request_idNo
verificationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the trimming of old entries to retention, but does not elaborate on the retention policy or other side effects. With no annotations, the description provides basic behavioral context but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Perfectly concise for the information provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description omits details about the retention behavior frequency, constraints on entry fields, and any error conditions. Leaves significant gaps for a tool with 8 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not explain any parameters. It mentions a 'structured entry' but gives no details on fields or their semantics, forcing the agent to rely solely on param names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'append' and resource 'log.md', and includes the additional behavior of trimming old entries. This is specific and distinguishes from sibling tools like 'create_raw_source' or 'apply_candidate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives. It does not mention prerequisites, scenarios, or when not to use it, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_candidateC

Apply an approved Candidate bundle atomically.

ParametersJSON Schema
NameRequiredDescriptionDefault
opsNo
approvedYes
bundle_idNo
request_idNo
base_hashesNo
candidate_idYes
expected_statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions 'atomically' which hints at transactional behavior, but it does not state whether the operation is destructive, idempotent, or what side effects occur (e.g., state changes). The agent is left to guess about safety and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, but at the cost of being under-specified. It lacks critical information that would make it concise yet informative. Ideally, conciseness should not sacrifice completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters, no schema descriptions, no annotations, and an output schema, the description is woefully incomplete. It does not explain inputs, outputs, or behavior. The output schema exists but is not leveraged. This is far from sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameters. However, it does not mention any parameter. Required params 'candidate_id' and 'approved' are not described, nor are optional ones like 'ops', 'bundle_id', etc. The description adds zero value to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Apply an approved Candidate bundle atomically' provides a verb and resource, but 'apply' is vague and doesn't specify the outcome (e.g., create, update, delete). Among siblings, 'create_update_candidate' exists, but no differentiation is given. The term 'atomically' adds some context but not enough to fully distinguish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'create_update_candidate'. The description implies a prerequisite state ('approved') but does not explain when the tool should be invoked or what conditions must hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_pageC

Compile a raw source into a persisted formal page Candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
topicNo
domainNogeneral
sourceYes
page_typeNoconcept
confidenceNomedium
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions 'persisted', implying creation, but lacks details on authorization, side effects, or return value. The description is insufficient for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loading the verb and object. However, it is too sparse to be effective; every word is necessary but not sufficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and no annotations, the description fails to provide sufficient context for correct usage. It does not explain what a 'Candidate' is or how parameters influence compilation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description adds no information about any of the 7 parameters beyond the implicit 'source'. Parameters like tags, topic, domain remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Compile a raw source into a persisted formal page Candidate.' It explains the action and result, but does not differentiate from sibling tools like create_update_candidate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as create_raw_source or apply_candidate. The description provides no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_raw_sourceA

Create a new raw source under raw/. Existing files are never overwritten.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the non-overwriting behavior, which is a critical safety trait. However, it does not detail permissions, side effects, or return behavior, but for a simple creation tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys purpose and key behavior. No redundant words; front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks explanation of what a raw source is, expected path format, content structure, or usage examples. With 3 parameters and no schema descriptions, the description does not provide enough context for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not mention any parameters (path, content, request_id). The agent gets no guidance on what each parameter means or how to format them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action 'Create' and the resource 'raw source under raw/', with a clear scope. It distinguishes from siblings like read_raw_source by specifying 'Existing files are never overwritten,' indicating it's for new files only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a key guideline: 'Existing files are never overwritten,' which informs when to use this tool (for new files) and implies not to use it for updates. However, it lacks explicit mention of when not to use or direct alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_update_candidateC

Generate a persisted update Candidate for an existing formal page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
titleYes
sourceNo
request_idNo
instructionNo
new_sourcesNo
new_sectionsNo
new_wikilinksNo
reason_for_updateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states that the candidate is 'persisted'. It omits behavioral traits such as whether it modifies the existing page, permissions required, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but insufficiently structured. It communicates the basic purpose but lacks critical details, making it under-specified rather than elegantly succinct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters, no annotations, and no parameter descriptions, the one-line description is grossly incomplete. It fails to explain what an 'update Candidate' is, how to use the parameters, or what the output schema provides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the tool description adds no meaning to the 9 parameters. Only 'page' and 'title' are mentioned but not explained; other parameters like 'source', 'instruction', etc. are completely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Generate' and resource 'persisted update Candidate for an existing formal page', clearly indicating the action and object. It distinguishes from sibling 'apply_candidate' by implying creation vs application, but not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'apply_candidate' or 'compile_page'. The description lacks context about prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

init_wikiC

Initialize a minimal Karpathy-style LLM Wiki structure without overwriting by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNo
profileNopersonal
languageNozh
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. The phrase 'without overwriting by default' provides some safety insight, but lacks details on side effects, permissions, or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, efficiently stating the core action and a key behavioral trait. It is well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero annotations and 0% schema coverage, the description omits critical context about the wiki structure, parameter roles, and invocation outcomes. The existing output schema does not compensate for the lack of behavioral detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the tool description does not explain any of the four parameters (root, profile, language, request_id). The agent receives no additional meaning beyond the schema's property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool initializes a minimal Karpathy-style LLM Wiki structure, using a specific verb and resource. However, it does not differentiate from sibling tools like inspect_wiki or create_raw_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as create_raw_source or compile_page. The description only states what it does without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_wikiC

Inspect whether a directory has the minimal llm-wiki structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states the tool checks for wiki structure but does not explain what outcome indicates success, what happens if the directory is missing, or whether the operation has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise. However, it lacks necessary detail for a minimally viable description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description should explain what the return value indicates (e.g., true/false, error). It does not, leaving the agent guessing about the tool's results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the meaning of the 'root' or 'request_id' parameters. The description adds no value beyond the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inspects whether a directory has the minimal llm-wiki structure, using a specific verb and resource. This distinguishes it from sibling tools like init_wiki (which creates) and read_page (which reads content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor does it specify prerequisites or conditions for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

knowledge_health_reviewC

Summarize wiki health across lint, sources, duplicates, stale pages, and confidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must convey behavioral traits. It says 'summarize' but does not specify if it modifies state, whether it's read-only, or what the output format is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but lacks important details. It is not overly verbose, but brevity here is detrimental.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of summarizing multiple health metrics, the description is insufficient. It does not explain what the output contains or how to interpret the summary, even though an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (request_id) with no description in schema (0% coverage) and the description does not mention it at all, providing no semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool summarizes wiki health across multiple dimensions (lint, sources, duplicates, stale pages, confidence). It distinguishes from siblings like run_lint which focuses on a single metric.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Lacks context like 'use for an overview before specific checks'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_pageC

Read a formal llm-wiki page and return wiki metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
limitNo
offsetNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not explicitly confirm that the operation is read-only, idempotent, or free of side effects. The verb 'read' implies safety, but the description does not guarantee it nor disclose any constraints like rate limits or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks structure. It conveys the core purpose but omits supplementary details that could be efficiently added, such as parameter roles or behavioral notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description is not required to detail return values. However, the tool has 4 parameters with no schema descriptions and no annotations, so the description should compensate by explaining usage context, which it fails to do. The description feels incomplete for accurate invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 4 parameters with 0% description coverage, and the tool description does not clarify any parameter meanings. The agent must infer from names only (page, limit, offset, request_id), which is insufficient for correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (read) and the resource (formal llm-wiki page) and indicates the output (wiki metadata). However, it does not explicitly distinguish this tool from siblings like read_raw_source or compile_page, which also involve reading wiki content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions, leaving the agent without direction on tool selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_raw_sourceC

Read an evidence-preserving raw source under raw/.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo
offsetNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fails to disclose behavioral traits beyond the basic read operation. The phrase 'evidence-preserving' hints at immutability but is not explicit, and there is no mention of permissions, logging, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no waste, front-loading the core action and resource. Every word contributes to conveying the basic purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has four parameters, an output schema, and no annotations, the description is woefully incomplete. It does not explain return values, pagination behavior, or any limitations, leaving significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not document any of the four parameters (path, limit, offset, request_id) despite 0% schema coverage. It adds no meaning beyond what the input schema provides, leaving the agent to infer usage from names and types alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Read' and identifies the resource as 'evidence-preserving raw source' with a location 'under raw/', clearly distinguishing it from sibling tools like 'create_raw_source' and 'read_page'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'read_page' or 'inspect_wiki'. The description does not mention prerequisites, exclusions, or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_lintC

Run wiki lint and return structured lint results.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofull
request_idNo
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that lint is run and results are returned, but does not state side effects, permissions needed, or what linting entails. For a tool that likely performs analysis, more context is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and single-sentence, with no wasted words. However, it could be slightly expanded to include parameter context. It is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 parameters and an output schema, but the description omits any details about parameter usage, return structure, or behavioral effects. It is incomplete for an agent to understand how to invoke and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds no information about parameters (mode, request_id, timeout_seconds). It does not explain their roles or defaults, leaving the agent without guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Run) and resource (wiki lint) and mentions structured output. It distinguishes from sibling tools by specifying a specific lint operation, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., compile_page, inspect_wiki). The description does not provide context for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_wikiC

Search llm-wiki formal pages and/or raw sources with wiki metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoauto
typeNoany
limitNo
queryYes
scopeNoformal
domainNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior, but it only states it is a search operation without mentioning idempotency, rate limits, result structure, or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks structure or front-loading of critical details, though it does convey the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters with 0% schema coverage and no annotations, the description is severely incomplete; the agent cannot safely invoke the tool without additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no explanation for any of the 7 parameters, leaving the agent unable to understand how to use mode, scope, domain, etc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Search' and the target resources 'llm-wiki formal pages and/or raw sources' with added context of 'wiki metadata', effectively distinguishing it from sibling tools that read specific items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like read_page or read_raw_source, leaving the agent without explicit context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_public_safetyC

Validate public-site candidate content for sensitive material.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
contentNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only vaguely says 'validate' without explaining what happens upon detecting sensitive material or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste, but it is under-informative for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0% schema coverage, no annotations, and 3 parameters, the description is insufficient. It does not cover parameter usage or output behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to any of the three parameters (page, content, request_id).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Validate'), resource ('public-site candidate content'), and specific purpose ('for sensitive material'). It distinguishes from siblings like run_lint and apply_candidate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With 13 sibling tools, explicit usage context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_public_draftC

Render a public-site markdown draft candidate without publishing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
titleNo
redactNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It states the tool does not publish, but provides no information about side effects, state changes, authentication needs, or rate limits. For a render-only tool, the lack of detail on potential state changes (e.g., temporary file creation) is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but severely under-specified for a tool with 4 parameters and 13 siblings. It lacks any structure, such as a breakdown of input or output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters (1 required), an output schema, and multiple siblings, the description is incomplete. It does not explain what the rendered draft looks like, how to interpret output, or how it relates to other candidate-handling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any parameters. It fails to explain the purpose of 'page', 'title', 'redact', or 'request_id', leaving the agent without guidance beyond the schema names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders a public-site markdown draft candidate without publishing, using specific verb 'render' and resource 'public-site markdown draft candidate'. It implicitly distinguishes from publish-oriented siblings like 'apply_candidate', but does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for previewing drafts, but provides no explicit guidance on when to use this tool versus siblings like 'apply_candidate' or 'compile_page'. No conditions, prerequisites, or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.0
    • First observedappend_log
    • First observedapply_candidate
    • First observedcompile_page
    • First observedcreate_raw_source
    • First observedcreate_update_candidate
    • First observedinit_wiki
    • First observedinspect_wiki
    • First observedknowledge_health_review
    • First observedread_page
    • First observedread_raw_source
    • First observedrun_lint
    • First observedsearch_wiki
    • First observedvalidate_public_safety
    • First observedwrite_public_draft

TDQS

B3.2/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct action in the wiki lifecycle (init, inspect, read, write, compile, apply, lint, search, log, health review, validate, draft). There is no overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_raw_source, apply_candidate, knowledge_health_review). No mixing of conventions or vague verbs.

Tool Count5/5

14 tools is well-scoped for a wiki management server. The number covers all necessary operations without being excessive or insufficient.

Completeness5/5

The tool set covers the full lifecycle from initialization to inspection, raw source management, candidate compilation and application, linting, health review, search, logging, and public draft writing. No obvious gaps for the intended domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to search, read, and contribute to a structured markdown knowledge base with citations, freshness tracking, and a safe write path, providing a shared, auditable company memory.
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP governance server that lets AI agents build and maintain a persistent, versioned wiki of interlinked Markdown files through validated tools, enforcing invariants like linking, immutability, and one git commit per write.
    21
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that gives AI coding agents a git-backed markdown wiki to read and update, enabling search, read, write, verify, ingest, promote, and lint operations on versioned knowledge documents with schema validation, staleness tracking, and contradiction detection.
    4
    MIT