Wiki.js
Search, read and edit Wiki.js pages, and manage its assets, users, groups and comments
Connector by ni-c · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/ni-c-wikijs-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 27 read · 17 write · 18 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 62
Read from the source code; the running server may list different tools.
Read 27 · Look things up without changing anything.
diff_page_versionsget_commentget_groupget_navigation_treeget_pageget_page_conflictget_page_treeget_page_versionget_site_infoget_usergrep_pageslist_api_keys
Show 15 more tools
list_asset_folderslist_assetslist_commentslist_groupslist_localeslist_page_historylist_page_linkslist_pageslist_search_engineslist_storage_targetslist_tagslist_userssearch_pagessearch_tagssearch_users
Write 17 · Create, change, send or run things.
assign_user_to_groupconvert_page_editorcreate_asset_foldercreate_commentcreate_groupcreate_pagecreate_usermove_pagerebuild_page_treerebuild_search_indexrename_assetrender_page
Show 5 more tools
set_user_activeset_user_tfaupdate_pageupload_assetverify_user
Delete 18 · Delete, drop, revoke or wipe things.
delete_assetdelete_commentdelete_groupdelete_pagedelete_tagdelete_userflush_page_cachemigrate_pages_localepurge_page_historyreset_user_passwordrestore_page_versionrevoke_api_key
Show 6 more tools
set_api_stateunassign_user_from_groupupdate_commentupdate_groupupdate_tagupdate_user
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
WIKIJS_TOKEN
Other settings (environment variables or headers).
WIKIJS_ALLOWED_PATHSWIKIJS_ALLOW_TOOLSWIKIJS_DENY_TOOLSWIKIJS_INSECURE_TLSWIKIJS_LOCALEWIKIJS_READ_ONLYWIKIJS_URL
Network hosts it talks to 4
github.com· found in codeglama.ai· found in coderaw.githubusercontent.com· found in codewikijs-mcp.ni-c.de· found in code
Tools (62)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
assign_user_to_groupAdd a user to a groupAdds one account to one group, leaving its other memberships alone — the additive counterpart to update_user’s groups list. Requires a confirmation token, because a group is what grants access.
convert_page_editorConvert a page to another editorChanges the storage format of a page. Wiki.js does not translate the body — converting markdown to "code" leaves the markdown source as raw HTML text. Use it to correct a page created with the wrong editor, not to reformat one.
create_asset_folderCreate an asset folderCreates a folder in the asset store. The slug is what appears in the URL of every file inside it.
create_commentPost a commentPosts a comment on a page, optionally as a reply to another. The comment is attributed to the account the API key belongs to, which is usually a service account rather than a person — say so in the text if that matters.
create_groupCreate a groupCreates an empty group. It starts with no permissions and no page rules, so it grants nothing until update_group is called.
create_pageCreate a pageCreates a page. The path must not already exist in this locale — Wiki.js answers PageDuplicateCreate otherwise, and update_page is what changes an existing one. The editor decides how content is interpreted, so markdown source needs editor="markdown".
create_userCreate a userCreates an account. For a local account supply a password, or set send_welcome_email so Wiki.js mails an invitation instead. Groups are given by id — list_groups has them, and an account in no group can log in but see nothing.
delete_assetDelete a filecan change or delete dataDeletes an asset permanently. Any page embedding it will show a broken image or a dead link. Requires a confirmation token.
delete_commentDelete a commentcan change or delete dataRemoves a comment permanently. Replies to it are not removed with it. Requires a confirmation token.
delete_groupDelete a groupcan change or delete dataRemoves a group. Its members keep their accounts but lose whatever access the group gave them. Requires a confirmation token.
delete_pageDelete a pagecan change or delete dataDeletes a page and its history. Wiki.js has no trash — this cannot be undone from here. Requires a confirmation token.
delete_tagDelete a tagcan change or delete dataRemoves a tag from the wiki and from every page that carries it. The pages themselves are untouched. Requires a confirmation token.
delete_userDelete a usercan change or delete dataRemoves an account. Wiki.js needs somebody to inherit the pages it authored, so replace_with_user_id is required — pass the id of the account that should own them afterwards. Requires a confirmation token.
diff_page_versionsCompare two versionsread-onlyReturns a unified diff between two versions of a page — or between one version and the page as it is now, if to_version is omitted. Answers "what changed here" in one call instead of two full page bodies.
flush_page_cacheFlush the page cacheDrops Wiki.js’ rendered-page cache for the whole wiki. Nothing is lost, but every page has to be rendered again on first access, so a busy instance gets slower for a while.
Show 47 more tools
get_commentGet one commentread-onlyReturns a single comment by id, with its source and its rendered HTML.
get_groupGet a groupread-onlyReturns one group with its global permissions, its page rules and its members. This is the authoritative answer to "who can see or edit what" — and it is what update_group needs as its starting point, because that mutation replaces the whole rule set.
get_navigation_treeGet the navigation menuread-onlyThe sidebar navigation as configured, per locale. This is curated by hand and is not the page tree — get_page_tree is what reflects the pages that actually exist.
get_pageGet a pageread-onlyReads one page, addressed by page_id or by path plus locale. Choose a mode: "metadata" for everything but the text, "outline" for the headings only (cheapest way to see what a long page contains), "content" for the source, "rendered" for the HTML. With mode=content, either pass section to get one heading’s worth, or offset and max_chars to read the page in windows — a large page will otherwise be truncated to fit the result budget.
get_page_conflictGet the newer version behind a conflictread-onlyReturns the version of a page that is newer than the one you read — what update_page points at when it refuses to write. Shows who saved it and when, so the change can be redone on top instead of discarded.
get_page_treeBrowse the page treeread-onlyLists the pages and folders directly under a path — the structural view a wiki has and a search does not. mode "ALL" returns both folders and pages, "FOLDERS" only folders, "PAGES" only pages. Wiki.js offers no limit on this query, so a very wide level is truncated to the result budget.
get_page_versionGet one stored versionread-onlyReturns a single historical version of a page, including its full body as it was then. To find out what changed between two versions, diff_page_versions is far cheaper than reading both.
get_site_infoGet site and system informationread-onlyVersion, database, host summary and the site’s own title and description, plus totals for pages, users, groups and tags. The first call to make when something is not behaving — it proves the URL and the API key work at all. Fields describing the host filesystem and database host are deliberately not requested.
get_userGet a userread-onlyFull detail for one account, including its group memberships and whether two-factor authentication is active. No credential of any kind is returned — Wiki.js does not expose one.
grep_pagesSearch inside page textread-onlySearches the actual text of pages with a regular expression, by fetching them and matching locally. This exists because Wiki.js’ default search engine does not index page content at all. It is the expensive path — one request per page — so narrow it with path_prefix, tags or locale, and keep max_pages small. Returns matching lines with context, not whole pages.
list_api_keysList API keysread-onlyLists the wiki’s API keys with their expiry and whether they are revoked, plus whether API access is switched on at all. Wiki.js stores only a truncated form of each key and never returns the secret, so nothing here can be used to authenticate.
list_asset_foldersList asset foldersread-onlyLists the folders directly under an asset folder. Folder 0 is the root. Wiki.js returns one level at a time, so a deep tree needs one call per level.
list_assetsList assets in a folderread-onlyLists the images and files in one asset folder. Folder 0 is the root. Assets are flat within a folder and Wiki.js has no search across them, so finding one means walking list_asset_folders.
list_commentsList comments on a pageread-onlyReturns the comments on one page, addressed by path and locale — not by page id, which is the one place Wiki.js asks for the path instead. An empty list can also mean comments are switched off for the wiki; get_site_info reports that.
list_groupsList groupsread-onlyLists the wiki’s groups with how many users each has. Groups marked isSystem are Wiki.js’ own Administrators and Guests — they exist always and should not be deleted.
list_localesList localesread-onlyWhich locales are installed and which one is the default. Worth checking once per wiki: the locale is part of a page’s identity, and every page tool here falls back to WIKIJS_LOCALE, so a wiki running on "de" needs that set or nothing will be found.
list_page_historyList a page’s historyread-onlyLists the stored versions of a page, newest first, with who changed what and when. This is the one Wiki.js query that really paginates. The version ids here are what get_page_version, diff_page_versions and restore_page_version take.
list_page_linksList internal linksread-onlyReturns every page together with the internal links it contains — the wiki’s link graph for one locale. Useful for finding what would break before moving or deleting a page. Wiki.js returns the whole graph at once and offers no filter, so on a large wiki this is truncated.
list_pagesList pagesread-onlyLists pages with their metadata, newest first by default. The result reports how many pages matched as well as how many are shown, so a short answer is never mistaken for a small wiki. Wiki.js has no offset for this query, so narrow with tags, locale, creator_id or author_id rather than paging. Returns no page content; use get_page for that.
list_search_enginesList search enginesread-onlyWhich search engine this wiki uses. Worth knowing before trusting search_pages: the default "Database - Basic" indexes only titles and descriptions, so nothing written inside a page is searchable until a real engine is configured and the index rebuilt.
list_storage_targetsList storage targetsread-onlyThe configured storage backends — git mirrors, S3 buckets, local file dumps — with their sync status and last error. Credentials in their configuration are redacted.
list_tagsList all tagsread-onlyEvery tag in the wiki, with its display title and when it was last used. Tags are the one cross-cutting index a wiki has, so this is often a better starting point than search — feed a tag back into list_pages to see what carries it.
list_usersList usersread-onlyLists the wiki’s user accounts. `providerKey` says how they log in — "local" for a Wiki.js password, anything else for an identity provider. Email addresses are returned because they are the login.
migrate_pages_localeMove every page to another localecan change or delete dataMoves all pages from one locale to another, across the whole wiki. The usual reason is a wiki set up under the wrong locale code. Every page path changes, so every external link into the wiki breaks. Requires a confirmation token.
move_pageMove or rename a pageMoves a page to another path, another locale, or both. Internal links pointing at the old path are NOT rewritten by Wiki.js — check list_page_links first if that matters.
purge_page_historyPurge old page versionscan change or delete dataDeletes stored page versions older than a cutoff, across the whole wiki. The versions are gone permanently — this is the one maintenance operation that destroys data. Requires a confirmation token.
rebuild_page_treeRebuild the page treeRecomputes the folder structure Wiki.js derives from page paths. The repair for a navigation tree that disagrees with the pages actually present, usually after a bulk import or a database edit. Page content is untouched, but it walks every page and can take minutes.
rebuild_search_indexRebuild the search indexReindexes every page in the active search engine. Required once after switching away from "Database - Basic", because the new engine starts empty and search silently returns nothing until this runs. On the basic engine it does nothing. Search results may be incomplete while it runs, and it can take minutes on a large wiki.
rename_assetRename a fileRenames an asset. Pages embedding it by its old URL will break — Wiki.js does not rewrite them.
render_pageRe-render a pageForces Wiki.js to regenerate one page’s HTML from its source. The fix for a page whose rendering is stale after a theme or renderer change. Changes no content and cannot lose anything. It does, however, bump the page’s updatedAt — and update_page compares that against when you last read the page, to catch somebody else saving in between. So a render between your read and your write makes update_page refuse *your own* next write, saying the page changed after you read it. If that happens, call get_page again and then write; nothing was lost. Better still, render after writing rather than befor…
reset_user_passwordReset a user’s passwordcan change or delete dataStarts Wiki.js’ own password reset for a local account, which emails the user a link. No password is chosen or returned here. Requires a confirmation token.
restore_page_versionRestore an earlier versioncan change or delete dataRolls a page back to a stored version. The current content is not lost — it becomes another entry in the history — but the live page is replaced. Requires a confirmation token.
revoke_api_keyRevoke an API keycan change or delete dataRevokes an API key immediately and for good — Wiki.js has no way to un-revoke one. Note that this can revoke the key this server is using, which would cut its own connection. Requires a confirmation token.
search_pagesSearch pagesread-onlyFull-text search — but read this first: on a default Wiki.js the search engine is "Database - Basic", which only indexes page titles and descriptions, NOT the text inside pages. The result names the active engine so you can tell. If the engine is basic and you are looking for something written inside a page, use grep_pages instead. Results carry no excerpt; follow up with get_page.
search_tagsSearch tagsread-onlyFinds tags matching a fragment. Cheaper than list_tags on a wiki with hundreds of them, and the usual way to check what a tag is actually called before filtering list_pages by it.
search_usersSearch usersread-onlyFinds users by name or email. Use it to resolve a person to the id that list_pages (creator_id, author_id) and the group tools take.
set_api_stateTurn the API on or offcan change or delete dataSwitches Wiki.js’ whole API on or off. Turning it off disables every API key at once, including this server’s — after which the only way back is the web administration UI. Requires a confirmation token.
set_user_activeActivate or deactivate a userSwitches an account on or off. A deactivated account keeps its pages and groups but cannot sign in — the reversible alternative to delete_user. Requires a confirmation token.
set_user_tfaTurn two-factor authentication on or offSwitches an account’s second factor. Turning it OFF weakens that account and is the reason this is gated; turning it on forces the user to enrol at their next sign-in. Requires a confirmation token.
unassign_user_from_groupRemove a user from a groupcan change or delete dataTakes one account out of one group. Requires a confirmation token — removing somebody from their only group leaves them able to sign in and see nothing.
update_commentEdit a commentcan change or delete dataReplaces the body of a comment. Wiki.js keeps no history for comments, so the previous text is gone.
update_groupUpdate a group’s permissionscan change or delete dataReplaces a group’s name, permissions, page rules and login redirect wholesale — this is not a partial update, and omitting a rule deletes it, just as omitting redirect_on_login resets it to "/". Read the group with get_group first and send back the full set with your change applied. Requires a confirmation token, because this is the call that decides who can read and edit the wiki.
update_pageUpdate a pageChanges a page. Pass content to replace the whole body, or edits for surgical find-and-replace — each edit’s old_text must appear exactly once, and an ambiguous or missing match is refused rather than applied to the wrong place. Before writing, this checks whether somebody else changed the page since it was read and refuses to clobber them; pass force=true to overwrite deliberately. Metadata fields can be changed on their own, without touching the text. That refusal is a normal result and not an error: it explains what to do — read the page again with get_page, redo the change on top of what …
update_tagRename a tagcan change or delete dataChanges a tag’s name or display title across every page carrying it. Renaming affects all of them at once, which is the point and also the risk, so it needs a confirmation token.
update_userUpdate a usercan change or delete dataChanges an account’s details or its group membership. The groups list replaces the existing one rather than adding to it — use assign_user_to_group for a single addition.
upload_assetUpload a fileUploads an image or file to an asset folder, so it can be embedded in a page. Content is passed base64-encoded and the content type is derived from the extension. SVG, HTML and XML are refused: Wiki.js serves assets from the wiki’s own origin, so those can carry script that runs for every reader. Note that Wiki.js 2.x has no GraphQL mutation for uploads at all — this uses the editor’s own route, which is undocumented and could change in a future Wiki.js release.
verify_userMark a user as verifiedMarks an account’s email as verified, which is otherwise done by the user clicking a link. Requires a confirmation token.
Signals
- Stars
- 3
- Forks
- 1
- Open issues
- 0
- Weekly downloads
- 43
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Sep 7, 2026 (1 month ago)
- Last package publish
- Sep 7, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.ni-c/wikijs-mcp- Version
- 0.3.0
- Auth
- API key
- Packages
- npm @ni-c/wikijs-mcpoci
ghcr.io/ni-c/wikijs-mcp:0.3.0 - License
- MIT
- Repository
- github.com/ni-c/wikijs-mcp
- Website
- wikijs-mcp.ni-c.de
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from ni-c
- 0.638score
IMAP mailbox
ni-c
Read, search and organise any IMAP mailbox, with writes off by default
ConnectorAFreshness: ALocal★ 3↓ 211/wkClaude Code +5 - 0.630score
OpenStreetMap
ni-c
Geocoding, walking/driving/cycling distances, route optimization, isochrones and POI search on OSM
ConnectorAFreshness: ALocalRead-only★ 4Claude Code +5 - 0.625score
mcp-hub
ni-c
Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client
ConnectorAFreshness: ARemoteLocal★ 3↓ 67/wkClaude Code +5 - 0.623score
CalDAV calendars
ni-c
Read and write CalDAV calendars: events, tasks and journal entries over the open standard
ConnectorAFreshness: ALocal★ 1↓ 138/wkClaude Code +5 - 0.618score

CardDAV address books
ni-c
Read and write CardDAV address books: contacts, groups and photos over the open standard
ConnectorAFreshness: ALocal↓ 200/wkClaude Code +5 - 0.607score
Audiobookshelf
ni-c
Browse your Audiobookshelf libraries and keep listening progress, bookmarks and playlists in sync
ConnectorAFreshness: ALocal★ 1Claude Code +5
Cite this page
Wiki.js MCP server. Agent Mart. https://agentmart.dev/connectors/ni-c-wikijs-mcp (last updated 2026-10-24)