WitWiki
A shared team wiki your coding agents read and write, across every repo and every MCP client.
What it can do
- Project Create: Create a new project within the caller's organization.
- Project Get: Get a project by ID, scoped to the caller's organization.
- Project List: List all projects in the caller's organization.
What data it sees
Do you need an account
No: the server works without sign-in
A shared team wiki your coding agents read and write, across every repo and every MCP client.
One wiki instead of one memory file per repo, per vendor, per person. Claude Code for one teammate, Cursor for the next, Codex in another repo, the same pages.
How an agent uses it
wiki_getBrief({task}): start here. One call returns the pages worth reading for the task, each with its content, its version, its age, and whether a person or an agent wrote it last.wiki_patchPage: change part of a page against the version you read. A stale write is refused with a diff of what changed since, so nobody's edit is silently overwritten.wiki_getPage,wiki_listPages,wiki_updatePage,wiki_appendLog,wiki_lint, and the rest of the wiki, project and source tools.
What the team gets
- Every edit carries a name: which agent wrote it, or which person.
- Full version history, and any version goes back in one click in the browser.
- Per-user API keys with scopes, roles, and a hash-chained audit log.
Free is permanent: three editor seats, no card. Agent seats never count against them.
How to connect
How to connect WitWiki to Claude
The server address to paste into Claude settings:
https://witwiki.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect WitWiki to ChatGPT
The server address to paste into ChatGPT settings:
https://witwiki.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect WitWiki to Cursor
The server address to paste into Cursor settings:
https://witwiki.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (22)
Raw names from tools/list. Only developers need these.
| project_create | Create a new project within the caller's organization. |
| project_get | Get a project by ID, scoped to the caller's organization. |
| project_list | List all projects in the caller's organization. |
| project_update | Update the name of a project, scoped to the caller's organization. |
| source_upload | Upload a raw source file. Accepts base64-encoded file content and stores it in blob storage, returning the created RawSource record. Use wiki_markSourceIngested after the content has been incorporated into wiki pages. |
| wiki_appendLog | Append an entry to the chronological wiki log. Used to record ingests, queries, and other notable activity. |
| wiki_deletePage | Delete a wiki page. Returns an error if the page does not exist. |
| wiki_deleteSource | Delete a raw source and its associated blob object. |
| wiki_getBrief | Start here: one call to orient on a task. Returns the pages you should read, ranked by search, recency, links and name, packed under a token budget (default 2000), each with its content, version, age and last author, so you can read what matters and patch it without a second lookup. wiki_getIndex and wiki_getLog are for the map. |
| wiki_getIndex | Fetch the wiki index page (path: "index"). |
| wiki_getLog | Fetch the most recent entries from the wiki log, newest first. |
| wiki_getPage | Fetch a wiki page by path. Returns title, markdown content, metadata, timestamps, and version — the token to pass back as expected_version when you write, so nobody's edit is silently overwritten. |
| wiki_getSource | Get metadata for a single raw source by ID. |
| wiki_guide | How to use WitWiki: conventions (wikilinks [[path]], mermaid diagrams over ASCII art), the read-before-write loop, and the available tools. Call this first after connecting. |
| wiki_lint | Run health checks on the wiki: returns orphan pages (no inbound links) and dead wikilinks (targets that don't exist). |
| wiki_listPages | List wiki pages. With q, runs full-text search; with prefix, filters by path prefix; otherwise returns the most recently updated pages. |
| wiki_listSources | List raw sources (uploaded files) for the current project. |
| wiki_markSourceIngested | Mark a raw source as ingested. Call this after reading a source and incorporating its content into wiki pages, so the same source is not re-processed in future sessions. |
| wiki_patchPage | Edit part of a page without resending it: replace exact text, insert after a line, replace a section, append to a section, or create one. Pass base_version from wiki_getPage. Anchors must match exactly once; a stale base is refused with VERSION_CONFLICT and a diff of what changed since; a missing or ambiguous anchor is refused with the nearest lines. Returns the new version and the tokens saved versus an overwrite. Prefer this over wiki_updatePage for anything smaller than a rewrite. |
| wiki_rebuildGraph | Re-parse every page and atomically rebuild the link graph. Prunes stale edges left by bulk edits, renames, or structural reorganisation. |
| wiki_updateIndex | Create or update the wiki index page. |
| wiki_updatePage | Create or fully overwrite a wiki page — use wiki_patchPage for anything smaller than a rewrite. Pass expected_version from wiki_getPage: if the page changed since, the write is refused with VERSION_CONFLICT, the current version, and a diff of what changed, so you can re-apply instead of overwriting. The server parses [[wikilinks]] from content and refreshes the link graph automatically. |