xwiki-mcp
v0.2.0
Published
MCP server for XWiki REST API — full-text Solr search + read/write tools for AI agents
Maintainers
Readme
xwiki-mcp
MCP server for XWiki REST API. Lets AI agents (Claude Code, Claude Desktop, etc.) search, read and write your wiki — with proper Solr full-text search, not the half-broken legacy endpoint most clients default to.
Why this one
Most XWiki MCP servers (including ones generated by AI coding tools) wire up /rest/wikis/{wiki}/search. That endpoint is HQL-based and effectively searches page names only — so a query like "visibility metric" returns nothing if no page is literally named that, even when dozens of pages discuss the topic. xwiki-mcp defaults to /rest/wikis/query?type=solr, which is Solr-backed and indexes actual content with proper relevance ranking.
Tools
Read
| Tool | Description |
|------|-------------|
| search | Full-text search (Solr by default, legacy fallback). Returns ranked results. |
| list_spaces | List all spaces in the wiki |
| list_pages | List pages in a space (paginated) |
| get_page | Get page content and metadata |
| get_page_children | List child pages |
| get_attachments | List attachments on a page |
Write (v0.2+)
| Tool | Description |
|------|-------------|
| create_page | Create or update a page (upsert via PUT). XML-safe escaping. |
| delete_page | Delete a page |
| add_comment | Add a comment to a page |
Installation
npm install -g xwiki-mcp
# or
npx xwiki-mcpFrom source:
git clone https://github.com/vitos73/xwiki-mcp
cd xwiki-mcp
npm install
npm run buildConfiguration
Environment variables:
XWIKI_BASE_URL # Required. Base URL without /rest (e.g. https://wiki.example.com)
XWIKI_AUTH_TYPE # basic | token | none (default: basic)
XWIKI_USERNAME # For basic auth
XWIKI_PASSWORD # For basic auth
XWIKI_TOKEN # For token auth (Bearer)
XWIKI_WIKI_NAME # Wiki name (default: xwiki)
XWIKI_REST_PATH # REST path (default: /rest)
XWIKI_PAGE_LIMIT # Default page size (default: 50)Usage with Claude Code / Claude Desktop
Add to .mcp.json (Claude Code, project-scoped) or claude_desktop_config.json:
{
"mcpServers": {
"xwiki": {
"command": "npx",
"args": ["xwiki-mcp"],
"env": {
"XWIKI_BASE_URL": "https://wiki.example.com",
"XWIKI_AUTH_TYPE": "basic",
"XWIKI_USERNAME": "your-username",
"XWIKI_PASSWORD": "your-password"
}
}
}
}Search syntax
Solr engine (default) supports:
- bare terms — full-text match across title (boosted) + content
"exact phrase"— phrase matchtitle:foo/name:bar— restrict to a fieldAND,OR,NOT— boolean operators- per-call
space:"Parent.Child"parameter narrows results to one space tree
If Solr isn't indexed on your instance, pass engine: "legacy" to fall back to the HQL endpoint.
Development
npm run dev # tsx, no build step
npm run build # compile to dist/
npm test # vitestLicense
MIT
