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
- Código-fonte: https://github.com/lnikonl/xwiki-mcp
- Issues: https://github.com/lnikonl/xwiki-mcp/issues
- Docker Hub: https://hub.docker.com/r/lnikonl/xwiki-mcp
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
| Flag | Env | Default | Descrição |
|---|---|---|---|
-addr | XWIKI_MCP_ADDR | localhost:8080 | Endereço de escuta HTTP |
-xwiki-url | XWIKI_BASE_URL | — (obrigatório) | Base REST do XWiki, ex.: https://xwiki.example.com/rest/wikis/xwiki |
-token | XWIKI_TOKEN | — | Token padrão de fallback |
-allow-delete | XWIKI_MCP_ALLOW_DELETE | false | Registra a ferramenta delete_page |
-timeout | XWIKI_MCP_TIMEOUT | 60s | Tempo 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 / Arquitetura | Arquivo |
|---|---|
| Linux x86_64 | xwiki-mcp_linux_amd64.tar.gz |
| Linux arm64 | xwiki-mcp_linux_arm64.tar.gz |
| macOS Intel | xwiki-mcp_darwin_amd64.tar.gz |
| macOS Apple Silicon | xwiki-mcp_darwin_arm64.tar.gz |
| Windows x86_64 | xwiki-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
resultado no xwiki
Ferramentas
list_spaces— lista todos os espaços (aninhados)list_pages— lista páginas em um espaço; espaços aninhados comoManuals/ansibleouManuals.ansibleget_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.1list_page_children— páginas filhas de uma páginasave_page— cria/atualiza página (PUT, idempotente; conteúdo na sintaxe XWiki 2.1)search_pages— busca em texto completoget_page_history— versões da páginalist_attachments— anexos da páginaupload_attachment— envia um arquivo codificado em base64 (incluindo imagens) como anexo de páginadownload_attachment— baixa um anexo; imagens são retornadas como conteúdo de imagem renderizado, outros arquivos como texto base64list_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 wikiset_page_tags— atribui tags a uma página (modoreplace/add; substitui ou mescla o conjunto de tags)get_pages_by_tag— páginas marcadas com qualquer uma das tags fornecidasdelete_page,delete_attachment— somente quando-allow-deleteestiver definido