Skip to main content
Glama
freeqaz

shared-wiki-mcp

by freeqaz

Shared Wiki

A small Markdown wiki with a CLI and MCP server. Search linked notes, read context, queue review questions, capture feedback, and propose edits without overwriting existing notes. Proposals record the target's content hash for stale-edit checks.

Philosophy · Architecture and compatibility · Roadmap.

Input and attention plan maps the next additions across the repository.

Requires Python 3.11+. From a checkout or unpacked source distribution:

python3 -m venv .venv
.venv/bin/python -m pip install -e .
cp -R examples/vault vault
.venv/bin/shared-wiki validate
.venv/bin/shared-wiki search "storage"
.venv/bin/shared-wiki queue

Use --vault PATH (before the command) or WIKI_VAULT for another vault. Notes use YAML frontmatter (id, title, created, updated), millisecond timestamps, and [[note.name]] links; see examples.

For an MCP host, launch .venv/bin/shared-wiki-mcp --vault /absolute/path/to/vault over stdio. Writes create separate inbox or proposal notes. Applying proposals, remote synchronization, and Slack/GitHub connectors are not implemented.

PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -m unittest discover -s tests -v

Source distributions include the design docs, tests, and synthetic example vault. Wheels contain only the runtime package and package metadata; provide your own vault when installing a wheel.

Licensed under Apache 2.0.

Available Tools

7 tools
wiki_captureB

Save user feedback as an unreviewed inbox note; source_ref is provenance, not authenticated identity.

NameRequiredDescriptionDefault
bodyYes
titleYes
source_refNo
related_noteNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two useful traits: the note lands in an unreviewed state (downstream review needed) and source_ref is provenance rather than authenticated identity (a trust caveat). It omits permissions/auth requirements, dedup or overwrite behavior, and what is returned on success.

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?

One sentence, front-loaded with the action, and the second clause earns its place by disambiguating the riskiest parameter. Dense but not padded.

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?

For a 4-parameter write tool with no annotations and no output schema and 0% schema coverage, the description is thin: no auth/permission requirements, no statement of what gets created or returned (note ID/path), and no guidance on related_note's expected format.

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

Parameters3/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. It meaningfully clarifies the most ambiguous parameter (source_ref as provenance, not identity), but says nothing about related_note, leaving an unexplained fourth parameter.

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?

"Save user feedback as an unreviewed inbox note" states a specific verb (save), a resource (user feedback), and a destination with a state qualifier (unreviewed inbox). It never names a sibling (e.g. wiki_propose vs wiki_capture) to sharpen the boundary, so it falls short of a 5.

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

Usage Guidelines3/5

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

The phrase "user feedback" implicitly scopes when this tool applies, and "unreviewed inbox note" hints at the capture-vs-review split with wiki_review_queue and wiki_propose. But there is no explicit "use this when / not when", no alternative named, and no stated prerequisites.

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

wiki_changesB

List notes updated since a Unix millisecond timestamp. Not a semantic diff.

NameRequiredDescriptionDefault
limitNo
since_msNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does add real behavioral context by clarifying the return is a list of changed notes rather than diffs, but it says nothing about ordering, pagination behavior, or whether results are capped by the limit default.

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?

Two short sentences with no filler, and the core purpose is front-loaded. It is arguably terse to the point of under-specification, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a two-parameter feed tool with zero schema description coverage, the description omits limit semantics and result ordering, which an agent needs to paginate correctly.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It usefully defines since_ms as a Unix millisecond timestamp, adding units and epoch semantics the schema lacks, but the limit parameter is never mentioned, leaving half the parameters 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?

States a specific verb (List) and resource (notes) plus the filter condition (updated since a Unix millisecond timestamp). The negative clause 'Not a semantic diff' clarifies what kind of result it is not, but no sibling tool is named, so differentiation from wiki_search or wiki_review_queue is left to inference.

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

Usage Guidelines3/5

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

'Not a semantic diff' implies a usage boundary (use this for a change feed, not for content comparison), but no alternative tool is named and no when-to-use condition against wiki_search is stated. Usage is only implied.

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

wiki_contextB

Gather bounded source excerpts for a question. The host composes the answer.

NameRequiredDescriptionDefault
queryYes
max_charsNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries full burden, but it does disclose a key behavioral trait: it returns bounded excerpts and 'the host composes the answer', meaning this tool does not synthesize a final answer. That is useful context, but the description omits return format, size-limit behavior, and other operational details.

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?

Two short sentences, front-loaded with the core action and followed by the key division of labor. Every sentence adds meaningful information with no waste.

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 no annotations, no output schema, and 0% parameter coverage, the description is too sparse. It should explain how query and max_chars behave, what the excerpts look like, and how this tool differs from wiki_search or wiki_read.

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 description coverage is 0%, so the description must compensate for both parameters. 'For a question' loosely maps to query and 'bounded' hints at max_chars, but neither parameter is explained clearly, leaving the agent with only vague clues about the input contract.

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 gives a specific verb and resource (gather bounded source excerpts) with the context of answering a question, which distinguishes it from a plain search or read tool. It doesn't explicitly name siblings, but the retrieval-for-composition framing is clear enough to select it over wiki_search or wiki_read.

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?

Only the phrase 'for a question' implies usage context. There is no explicit when-to-use or when-not-to-use guidance, and no mention of alternatives such as wiki_search or wiki_read, leaving the agent to infer when this tool is preferred.

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

wiki_proposeB

Create a separate proposed replacement after reading the current target. Never overwrites it.

NameRequiredDescriptionDefault
titleYes
targetYes
rationaleYes
base_sha256Yes
replacement_bodyYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses two key traits: the target is not overwritten, and the current target should be read first. It still omits important behavior such as review-queue placement, permission requirements, stale-base handling, and response shape.

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 two short sentences with no filler, and the non-overwrite constraint is front-loaded. It is appropriately sized for a terse tool summary, though the missing detail must be scored under completeness rather than conciseness.

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 five required parameters, no annotations, no output schema, and 0% schema description coverage. The description provides only the core non-destructive concept and is not complete enough to guide correct parameter usage or explain the surrounding review workflow.

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 description coverage is 0% across five required parameters. The description only vaguely maps 'target' and 'replacement' to the operation, leaving title, rationale, and especially base_sha256 unexplained despite their importance for correct invocation.

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 specific verb and resource: create a separate proposed replacement. The phrase 'Never overwrites it' clarifies that this is not a direct edit, but it does not name the wiki page explicitly or distinguish the tool from sibling workflows like wiki_read or wiki_review_queue.

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

Usage Guidelines3/5

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

The phrase 'after reading the current target' implies a prerequisite workflow and safe-use context. However, it does not explicitly name wiki_read as the required prior step, nor does it state when to use this instead of other wiki tools or what happens after the proposal is created.

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

wiki_readB

Read body lines, metadata, hash, links, parents and backlinks of a note.

NameRequiredDescriptionDefault
slugYes
max_linesNo
start_lineNo

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does useful work by declaring the returned payload (body, metadata, hash, links, parents, backlinks), which stands in for the absent output schema. However it says nothing about pagination behavior despite line-range parameters, nothing about permissions or failure on a missing slug, and nothing about whether reads have 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.

Conciseness4/5

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

A single front-loaded sentence that enumerates the returned artifacts with no filler. It is appropriately terse for a read tool, though it leaves no room for the usage and pagination guidance that are missing elsewhere.

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

Completeness3/5

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

For a 3-parameter read tool with no annotations and no output schema, the description does cover the return shape well, which is the biggest gap it could have filled. It is still incomplete on input semantics (what a slug is, what the line range does) and on how this tool relates to wiki_search and wiki_context.

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 description coverage is 0%, so the description is responsible for explaining all three parameters and it explains none of them. 'Body lines' faintly hints that reading is line-oriented, implicitly relating to start_line and max_lines, but the slug format, the meaning of the line window, and the default of 120 lines are all undocumented anywhere.

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?

States a specific verb (read) and resource (a note) and enumerates exactly what comes back: body lines, metadata, hash, links, parents, backlinks. That is far more specific than a label restatement. It does not name or contrast with siblings like wiki_search or wiki_context, so it stops short of a 5.

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?

There is no explicit statement of when to use this tool, when not to, or which sibling to choose instead. An agent can infer from the name that this fetches a note by slug while wiki_search finds notes, but that routing decision is left entirely to inference.

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

wiki_review_queueB

Rank open questions by a transparent heuristic of impact, uncertainty and time.

NameRequiredDescriptionDefault
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full load. It does disclose the ranking mechanism ('transparent heuristic of impact, uncertainty and time'), which is real behavioral value, but it never states that the operation is read-only, what constitutes an 'open question', or how ties/ordering are handled.

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?

One sentence, front-loaded with the verb and the ranking criteria, with no filler. It is efficient, though the terse jargon leaves too much implicit rather than being genuinely concise.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and with only one optional parameter the surface is small. Still, the absence of annotations plus an undocumented limit and undefined 'open questions' leaves the definition thinner than a triage tool warrants.

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 description coverage is 0% and the single 'limit' parameter is never mentioned in the description, so its meaning (max items returned? max questions scanned?) and default of 5 are undocumented outside the schema. The description adds no parameter meaning at all.

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 pairs a specific verb (rank) with a specific resource (open questions) and names the ranking criteria, which no sibling (search/read/changes/capture/propose/context) does. It stops short of explicitly differentiating itself from siblings such as wiki_propose, and 'open questions' is left undefined.

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?

There is no statement of when to reach for this queue versus wiki_search, wiki_changes, or wiki_propose, and no prerequisites or exclusions. An agent must infer that this is a triage/prioritization surface from the phrase 'review queue' alone.

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. 7 tool updatesv0.1.0
    • First observedwiki_capture
    • First observedwiki_changes
    • First observedwiki_context
    • First observedwiki_propose
    • First observedwiki_read
    • First observedwiki_review_queue
    • First observedwiki_search

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct operation: search for discovery, read for a single note's body/metadata, context for bounded multi-source excerpts, changes for a time-based delta, capture for inbox writes, propose for replacement drafts, review_queue for ranking open questions. The only soft overlap is wiki_search vs wiki_context (both return excerpts), but the descriptions clarify that one is ranked retrieval and the other is question-scoped gathering.

Naming Consistency4/5

All seven tools share the wiki_ prefix and snake_case, giving a predictable namespace. However, the second element mixes verbs (search, read, capture, propose) with nouns (review_queue, changes, context), so the verb_noun pattern is not uniformly applied.

Tool Count5/5

Seven tools is a tight, well-scoped surface for a shared wiki: retrieval, inspection, review, change tracking, and two write paths. Every tool maps to a real workflow step with no filler.

Completeness3/5

Read/discovery/write-capture are covered, but two lifecycle paths dead-end: wiki_propose creates a proposed replacement with no tool to list, accept, or reject proposals, and wiki_review_queue surfaces open questions with no tool to answer or resolve them. Agents can work around this by reading and capturing notes, but the review/proposal loop is incomplete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Markdown notes via the Model Context Protocol, supporting creation, editing, searching, and conflict detection.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to turn conversations into a searchable personal wiki, read and organize pages, and propose edits such as merges, translations, and fact-checks as reviewable changesets.
    2
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to manage a markdown vault wiki by creating, reading, updating, deleting, moving, and searching notes, as well as giving feedback and asking questions with missed information logged for later retrieval.
    21
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search and read Markdown notes by keyword, meaning and links, with cited recall and honest no-match results. It also supports guarded, evidence-checked memory writes with receipts, conflict handling and lifecycle-aware filtering.
    MIT