feat/docs-complete-mcp #180
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/docs-complete-mcp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Extend the MCP Wiki.js tool set to cover the whole documentation workspace contract: - wikijs.spaces.list: accessible docs spaces from stored bindings (docs_space_path/docs_url) — members see org + project spaces, guests see only the orgs/{slug}/public subtree, project spaces are never guest-enumerable. - wikijs.spaces.get: one space's binding, overview path, provisioning status, effective capabilities, and a live probePageByPath verdict (found/missing/inaccessible/incomplete/error) with an honest stale flag for anything but found. - wikijs.tree.list: DocsHierarchyService org/project trees with the same boundary + visibility filtering as the workspace endpoint; complete/truncated verdicts pass through — a truncated walk is never rendered as the full hierarchy. - wikijs.folders.create: createFolder behind mcp.write + write:pages, project-space confinement with explicit traversal refusal, dwb-* tag refusal, and bound-root protection. - wikijs.assets.list/get/upload: the Wiki.js 3 assets API (tree types=asset view, /assets get+content, raw-bytes session upload), confined to the org subtree with the same read:assets/write:assets role gates. - wikijs.pages.list/search now return {root,results,limit,complete, truncated} — walked to verified exhaustion; a caller-bounded slice reports truncated='limit' rather than implying completeness. - wikijs.pages.update gains expected_updated_at/expected_version as a documented optimistic check (no server CAS exists): a mismatch fails as conflict before any write. - wikijs.pages.delete shares the Docs UI's protected-resource rules via DocsHierarchyService (bound roots, canonical sections, dwb-* markers) and refuses pages with descendants unless confirm_descendants recycles the whole verified subtree. All write/delete tools emit the established mcp.mutation audit line; new tools are container-bound in AppServiceProvider per the SDK's has()-then-resolve contract.- wikijs.tree.list: guests get orgs/{slug}/public as bound_root (null when unprovisioned) — a rebound private org root no longer leaks through space metadata - wikijs.assets.get / WikiJsClient::getAssetContent: enforce the 1 MiB cap during transfer — streamed download with manual, host-revalidated redirects (provisioner cookie never leaves the Wiki.js host), Content-Length pre-check, and mid-stream verification; unknown or incorrect size serves metadata only, never bytes - wikijs.pages.delete: recursive deletion is refused entirely — an unverifiable or non-empty descendant set always fails, even with confirm_descendants; single-page deletes unchanged - wikijs.folders.create: project is now optional — authorized members can create under any writable org-subtree parent, with archived project subtrees still read-only - wikijs.pages.list/search: real continuation via offset/next_offset; complete=false stays honest on every page