xwiki-mcp

Servidor MCP que expõe uma instância XWiki via HTTP (transporte HTTP Streamable).

Documentação

xwiki-mcp

Servidor MCP (Go, mcp-go v0.55.0) que expõe uma instância XWiki via HTTP (transporte HTTP Streamable).

Fluxo: o LLM envia seu token de usuário XWiki no cabeçalho HTTP -> o xwiki-mcp autentica na API REST do XWiki em nome do usuário -> XWiki.

Links

Autenticação

O cliente envia seu token em cada requisição em um dos seguintes formatos:

  • X-XWiki-Token: <token>
  • Authorization: Bearer <token>

Se nenhum estiver presente, o token padrão configurado na inicialização (--token / XWIKI_TOKEN) é usado.

Configuração

FlagEnvDefaultDescrição
-addrXWIKI_MCP_ADDRlocalhost:8080Endereço de escuta HTTP
-xwiki-urlXWIKI_BASE_URL— (obrigatório)Base REST do XWiki, ex.: https://xwiki.example.com/rest/wikis/xwiki
-tokenXWIKI_TOKENToken padrão de fallback
-allow-deleteXWIKI_MCP_ALLOW_DELETEfalseRegistra a ferramenta delete_page
-timeoutXWIKI_MCP_TIMEOUT60sTempo limite de requisição HTTP do XWiki

docker-compose

services:
  xwiki-mcp:
    image: lnikonl/xwiki-mcp
    container_name: xwiki-mcp
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      XWIKI_BASE_URL: https://xwiki.example.com/rest/wikis/xwiki
      XWIKI_MCP_ADDR: :8080
      # Default token used when the client sends no X-XWiki-Token / Authorization header
      XWIKI_TOKEN: xwiki:XWiki.bot^XWiki.OIDC.ConsentClass[0]/<secret>
      # Enable the delete_page tool (off by default)
      XWIKI_MCP_ALLOW_DELETE: "false"
      XWIKI_MCP_TIMEOUT: 60s

Download de binários

Binários pré-compilados para Linux, macOS e Windows são publicados na página de Releases. Os links abaixo sempre apontam para a versão mais recente — não é necessário consultar versões.

SO / ArquiteturaArquivo
Linux x86_64xwiki-mcp_linux_amd64.tar.gz
Linux arm64xwiki-mcp_linux_arm64.tar.gz
macOS Intelxwiki-mcp_darwin_amd64.tar.gz
macOS Apple Siliconxwiki-mcp_darwin_arm64.tar.gz
Windows x86_64xwiki-mcp_windows_amd64.zip

Cada arquivo contém o binário, LICENSE e README.md. Um arquivo SHA256SUMS com checksums é anexado a cada release.

Linux / macOS

OS=linux        # linux | darwin
ARCH=amd64      # amd64 | arm64

curl -fL -o xwiki-mcp.tar.gz \
  "https://github.com/lnikonl/xwiki-mcp/releases/latest/download/xwiki-mcp_${OS}_${ARCH}.tar.gz"
tar -xzf xwiki-mcp.tar.gz
cd xwiki-mcp

Executar

./xwiki-mcp \
  -addr :8080 \
  -xwiki-url https://xwiki.example.com/rest/wikis/xwiki

Exemplo com opencode

~/.config/opencode/opencode.jsonc

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xwiki-mcp": {
      "type": "remote",
      "url": "http://docker-host-ip:8080/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer xwiki:XWiki.bot-opencode^XWiki.OIDC.ConsentClass[0]/<SECRET>"
      }
    }
  }
}

prompt

OpenCode 1 OpenCode 2

resultado no xwiki

XWiki 1

Ferramentas

  • list_spaces — lista todos os espaços (aninhados)
  • list_pages — lista páginas em um espaço; espaços aninhados como Manuals/ansible ou Manuals.ansible
  • get_page — lê página (título, conteúdo, versão, autor, sintaxe)
  • get_page_version — lê uma revisão específica de página, ex.: 2.1
  • list_page_children — páginas filhas de uma página
  • save_page — cria/atualiza página (PUT, idempotente; conteúdo na sintaxe XWiki 2.1)
  • search_pages — busca em texto completo
  • get_page_history — versões da página
  • list_attachments — anexos da página
  • upload_attachment — envia um arquivo codificado em base64 (incluindo imagens) como anexo de página
  • download_attachment — baixa um anexo; imagens são retornadas como conteúdo de imagem renderizado, outros arquivos como texto base64
  • list_comments / add_comment — comentários da página (autor definido no servidor)
  • get_modifications — últimas modificações do wiki (alterações recentes)
  • list_tags — todas as tags definidas no wiki
  • set_page_tags — atribui tags a uma página (modo replace/add; substitui ou mescla o conjunto de tags)
  • get_pages_by_tag — páginas marcadas com qualquer uma das tags fornecidas
  • delete_page, delete_attachment — somente quando -allow-delete estiver definido