MediaWiki MCP Server

Permite que clientes LLM interajam com qualquer wiki MediaWiki usando o Model Context Protocol.

Documentação

MediaWiki MCP Server

NPM Version MIT licensed

Um servidor MCP (Model Context Protocol) que permite que clientes de Large Language Model (LLM) interajam com qualquer wiki MediaWiki.

Recursos

Ferramentas

Cada ferramenta que opera em uma wiki aceita um argumento opcional wiki nomeando a wiki na qual atuar (as ferramentas de gerenciamento de wiki e OAuth não aceitam) — passe uma chave de wiki (ex.: en.wikipedia.org) ou a URI mcp://wikis/{wikiKey} completa. Omita-o para usar a wiki padrão configurada (veja Configuração). Cada resposta de ferramenta informa a wiki em que a chamada foi executada.

Leituras de página

NomeDescrição
compare-pagesCompara duas versões de uma página da wiki por revisão, título ou wikitexto fornecido.
get-category-membersLista membros de uma categoria (até 500 por chamada, paginado via continueFrom).
get-fileBusca uma página de arquivo.
get-file-dataBusca os bytes de imagem de um arquivo inline (base64) para análise visual — para clientes que não conseguem acessar o host da wiki. Retorna uma versão redimensionada (defina width); tipos não renderizáveis (áudio, vídeo, binários) geram erro. Para metadados ou URL de download, use get-file.
get-links-hereLista páginas que referenciam uma página da wiki — páginas que linkam para ela, a incorporam como predefinição ou a exibem como arquivo (selecione via type), incluindo páginas que a alcançam por meio de um redirecionamento. Até 500 por chamada, paginado via continueFrom.
get-pageBusca uma página da wiki.
get-page-historyLista revisões recentes de uma página da wiki.
get-pagesBusca várias páginas da wiki em uma única chamada (até 50).
get-recent-changesLista eventos de mudanças recentes na wiki, filtráveis por timestamp, namespace, usuário, tag, tipo e flags de ocultação (até 50 por chamada, paginado via continue).
get-revisionBusca uma revisão específica de uma página.
get-site-infoObtém as principais configurações de uma wiki: versão do MediaWiki, idioma do conteúdo, regras de capitalização de títulos, namespaces, extensões instaladas, licença e (opcionalmente) estatísticas.
list-wikisLista todas as wikis configuradas — sua chave, nome do site, servidor, se é somente leitura ou a padrão, se está acessível, quais ferramentas restritas por extensão funcionam nela e, para uma wiki configurada com OAuth, seu servidor de autorização. Desativado quando menos de duas wikis estão configuradas.
parse-wikitextRenderiza wikitexto para HTML sem salvar. Retorna avisos de análise, wikilinks, predefinições e URLs externas.
search-pagePesquisa títulos e conteúdos de páginas da wiki.
search-page-by-prefixPesquisa títulos de páginas por prefixo.
whoamiInforma a identidade com a qual a sessão atual está autenticada na wiki alvo — nome de usuário, se é anônima e associações de grupo (opcionalmente direitos de usuário).

Escritas de página

NomeDescriçãoPermissões
create-page 🔐Cria uma nova página na wiki.Create, edit, and move pages
delete-page 🔐Exclui uma página da wiki.Delete pages, revisions, and log entries
move-page 🔐Move (renomeia) uma página da wiki.Create, edit, and move pages
undelete-page 🔐Restaura uma página excluída da wiki.Delete pages, revisions, and log entries
update-file 🔐Envia uma nova revisão de um arquivo existente a partir do disco local.Upload, replace, and move files
update-file-from-url 🔐Envia uma nova revisão de um arquivo existente a partir de uma URL.Upload, replace, and move files
update-page 🔐Atualiza uma página existente da wiki.Edit existing pages
upload-file 🔐Envia um arquivo para a wiki a partir do disco local.Upload new files
upload-file-from-url 🔐Envia um arquivo para a wiki a partir de uma URL.Upload, replace, and move files

Gerenciamento de wiki

NomeDescrição
add-wikiAdiciona uma wiki como recurso MCP a partir de sua URL. Desativado quando allowWikiManagement é false.
remove-wikiRemove um recurso de wiki. Desativado quando allowWikiManagement é false ou quando menos de duas wikis estão configuradas.

OAuth

NomeDescrição
oauth-logoutRemove tokens OAuth armazenados. Somente Stdio.
oauth-statusLista tokens OAuth armazenados com escopos e expiração (sem valores de token). Somente Stdio.

Pacotes de extensão

As ferramentas de cada pacote são registradas apenas em wikis onde sua extensão está instalada.

NeoWiki

NomeDescrição
neowiki-list-schemasLista esquemas (tipos de entidade) e suas contagens de propriedades.
neowiki-get-schemaObtém as definições de propriedades, relações e opções de seleção de um esquema.
neowiki-cypher-queryExecuta uma consulta Cypher somente leitura contra o grafo de conhecimento.
neowiki-search-subjectsEncontra IDs de sujeitos por rótulo dentro de um esquema.
neowiki-get-subjectBusca os dados estruturados de um sujeito por ID.
neowiki-get-page-subjectsLista os sujeitos anexados a uma página da wiki.
neowiki-create-subjectCria um sujeito (filho ou principal) em uma página. Requer o direito edit.
neowiki-update-subjectSubstitui o rótulo e as declarações de um sujeito. Requer o direito edit.
neowiki-delete-subjectExclui um sujeito por ID. Requer o direito edit.
neowiki-set-main-subjectDefine ou limpa o sujeito principal de uma página. Requer o direito edit.
neowiki-validate-subjectValida em modo de simulação um sujeito proposto e retorna violações.

Semantic MediaWiki

NomeDescrição
smw-list-propertiesLista propriedades do Semantic MediaWiki com modelos de copiar e colar para smw-query.
smw-queryExecuta uma consulta #ask do Semantic MediaWiki.

Bucket

NomeDescrição
bucket-queryExecuta uma consulta Lua do Bucket.

Cargo

NomeDescrição
cargo-list-tablesLista tabelas Cargo definidas na wiki.
cargo-describe-tableLista os campos de uma tabela Cargo com seus tipos e flags de lista.
cargo-queryExecuta uma consulta estilo SQL do Cargo.

Wikibase

NomeDescrição
wikibase-search-entitiesEncontra itens e propriedades por rótulo ou alias.
wikibase-get-entityLê os termos e declarações de uma entidade, com IDs referenciados resolvidos para rótulos.
wikibase-queryExecuta uma consulta SPARQL contra o serviço de consulta da wiki. Oferecido apenas para um repositório cujo siteinfo publique um.
wikibase-edit-entityCria ou altera uma entidade a partir do JSON de entidade do Wikibase. Requer o direito edit.
wikibase-add-statementAdiciona uma declaração com valor de item, string, ID externo ou URL. Requer o direito edit.

Recursos

mcp://wikis/{wikiKey} — recurso por wiki que expõe sitename, server (o endereço público da wiki), articlepath, scriptpath e as flags private e readOnly.

  • Esses campos são tudo o que ele contém: o recurso publica uma lista fixa, portanto credenciais e configurações do lado do servidor no seu arquivo de configuração nunca são expostas no conteúdo do recurso.
  • Após add-wiki ou remove-wiki, o servidor envia notifications/resources/list_changed para que os clientes atualizem.
Exemplo de resultado de leitura
{
  "contents": [
    {
      "uri": "mcp://wikis/en.wikipedia.org",
      "mimeType": "application/json",
      "text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
    }
  ]
}

Variáveis de ambiente

As variáveis abaixo são relevantes para qualquer configuração. Variáveis que se aplicam apenas ao auto-hospedar o transporte HTTP (portas, timeouts, proteções de Host/Origin e SSRF) ou ao executar o proxy OAuth hospedado estão em docs/deployment.md — variáveis de ambiente. Variáveis de substituição de arquivo de configuração e diretório de upload estão em docs/configuration.md.

NomeDescriçãoPadrão
CONFIGCaminho para o seu arquivo de configuraçãoconfig.json
MCP_TRANSPORTTipo de transporte do servidor MCP (stdio ou http)stdio
MCP_LOG_LEVELSeveridade mínima para a saída do logger. Uma de debug, info, notice, warning, error, critical, alert, emergency ou silent.debug
MCP_CONTENT_MAX_BYTESLimite de bytes para os corpos de conteúdo e blocos de resultado que as ferramentas retornam (wikitexto, HTML renderizado, diffs, listagens de declarações e linhas). Ajuste ao orçamento de resposta de ferramenta do cliente LLM alvo.50000
MCP_FILE_DATA_MAX_BYTESLimite rígido no tamanho codificado em base64 de uma resposta get-file-data. Uma proteção de transporte/segurança; ajuste o tamanho real por chamada com o width da ferramenta. Chamadas acima do limite geram erro em vez de truncar.1000000
MCP_UPLOAD_MAX_BYTESLimite de memória no fetch do lado do servidor usado por upload-file-from-url / update-file-from-url. Arquivos maiores que isso são entregues ao próprio upload de cópia da wiki em vez de serem armazenados em buffer pelo servidor. Protege a memória deste servidor, não o $wgMaxUploadSize da wiki.104857600
MCP_OAUTH_CREDENTIALS_FILESubstitui o caminho padrão do armazenamento de credenciais. Padrão: ~/.config/mediawiki-mcp/credentials.json (Linux/macOS) ou %APPDATA%\mediawiki-mcp\credentials.json (Windows).unset
MCP_OAUTH_NO_BROWSERDefina como 1 para pular a abertura de um navegador durante o fluxo OAuth; a URL de autenticação é registrada no stderr em vez disso. Útil em ambientes headless.unset

Configuração

[!NOTE] A configuração só é necessária ao interagir com uma wiki privada ou ao usar ferramentas autenticadas.

Crie um arquivo config.json para configurar conexões de wiki. Use o config.example.json como ponto de partida.

{
  "defaultWiki": "en.wikipedia.org",
  "wikis": {
    "en.wikipedia.org": {
      "sitename": "Wikipedia",
      "server": "https://en.wikipedia.org",
      "articlepath": "/wiki",
      "scriptpath": "/w"
    }
  }
}

Endereço interno vs. público. O server que você configura pode ser um hostname interno (ex.: http://mediawiki no Docker); URLs devolvidas ao chamador são construídas a partir do endereço público da wiki, portanto hostnames internos não vazam para os links. Veja docs/configuration.md — campos por wiki.

Para a referência completa de campos, substituição de variáveis de ambiente, fontes de segredos, tags de mudança, diretórios de upload e opções de autenticação, veja docs/configuration.md.

Autenticação

Ferramentas marcadas com 🔐 exigem autenticação. Ferramentas de escrita (incluindo escritas de pacotes de extensão) ficam ocultas de tools/list quando a wiki padrão configurada tem readOnly: true — veja Implantação.

As ferramentas Cargo (cargo-query, cargo-list-tables, cargo-describe-table) chamam ações da API controladas pelo direito de usuário runcargoqueries. A maioria das wikis concede isso a todos os usuários por padrão; wikis que o restringem exigem a concessão Create, query and delete data through the Cargo extension na senha de bot ou no consumidor OAuth. A extensão Cargo também é detectada em wikis hospedadas na wiki.gg (Helldivers, Terraria, Ark, etc.), onde é distribuída sob o nome renomeado LIBRARIAN.

Instalação

Escolha seu cliente abaixo ou use a configuração padrão se ele não estiver listado. CONFIG é opcional; sem ele, o servidor tem como alvo a Wikipédia em inglês. Para apontá-lo para sua própria wiki e configurar autenticação para escritas, veja docs/configuration.md.

Claude Code

Adicione este repositório como um marketplace de plugins e, em seguida, instale o servidor incluído:

/plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
/plugin install mediawiki-mcp-server@professional-wiki

O plugin aceita um arquivo de configuração opcional, que aponta o servidor para a sua própria wiki. Defina-o pelo prompt ao habilitar o plugin, ou a qualquer momento com /plugin configure mediawiki-mcp-server@professional-wiki. Uma instalação por linha de comando aceita o mesmo valor via claude plugin install mediawiki-mcp-server@professional-wiki --config configPath=path/to/config.json.

Quando instalado como plugin, as ferramentas são namespaced como mcp__plugin_mediawiki-mcp-server_mediawiki__<tool>; atualize quaisquer allowlists de ferramentas ou hooks de acordo.

Para configurar o servidor diretamente, veja a documentação do MCP do Claude Code. A versão resumida:

claude mcp add mediawiki-mcp-server -- npx -y @professional-wiki/mediawiki-mcp-server@latest
# Environment variables go before the `--`:
claude mcp add mediawiki-mcp-server -e CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest

Codex

Adicione este repositório como um marketplace de plugins e, em seguida, instale o servidor incluído:

codex plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
codex plugin add mediawiki-mcp-server@professional-wiki

Para apontar o plugin para a sua própria wiki, defina CONFIG no shell a partir do qual você inicia o Codex, por exemplo export CONFIG=path/to/config.json. O Codex não tem configuração por plugin; se você preferir não definir uma variável de ambiente, codex mcp add mediawiki --env CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest registra o servidor diretamente e tem precedência sobre a cópia do plugin.

Consulte a documentação de plugins do Codex para saber como listar, atualizar ou remover plugins.

Claude Desktop

Baixe MediaWiki-MCP-Server.mcpb e clique duas vezes para instalar a extensão, que solicita um caminho de arquivo de configuração para que você possa apontá-la para a sua própria wiki em vez da Wikipédia em inglês.

VS Code e Cursor

Install in VS Code Install in VS Code Insiders Install in Cursor

Ou adicione a configuração padrão manualmente.

Antigravity

Adicione a configuração padrão ao arquivo de configuração MCP do Antigravity, seja globalmente em ~/.gemini/config/mcp_config.json ou por workspace em .agents/mcp_config.json.

Se você instalou anteriormente a extensão Gemini CLI, o assistente de configuração do Antigravity oferece importar sua configuração existente do Gemini CLI.

OpenCode

O OpenCode usa seu próprio formato de configuração em vez de mcpServers; adicione isto a opencode.json na raiz do seu projeto, ou ~/.config/opencode/opencode.json para uma instalação global.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mediawiki-mcp-server": {
      "type": "local",
      "command": ["npx", "-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "environment": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

Configuração padrão

A maioria dos clientes lê o mesmo bloco de servidor. Cole-o no arquivo listado para o seu cliente, substituindo mcpServers pela chave raiz desse cliente:

ClienteArquivo de configuraçãoChave raiz
Cursor~/.cursor/mcp.json, ou .cursor/mcp.json por projetomcpServers
VS Code.vscode/mcp.json por workspace, ou o comando MCP: Open User Configurationservers
Devin Desktop (antigo Windsurf)~/.codeium/windsurf/mcp_config.jsonmcpServers
Zed~/.config/zed/settings.jsoncontext_servers
LM Studio~/.lmstudio/mcp.jsonmcpServers
{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": ["-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

Para qualquer outro cliente, npx add-mcp @professional-wiki/mediawiki-mcp-server pode funcionar: add-mcp é uma CLI da comunidade que escreve o arquivo de configuração do seu cliente para você. Ele define apenas o comando de inicialização; adicione CONFIG você mesmo para apontar para a sua própria wiki.

Implantação

Executar o servidor como um endpoint HTTP remoto para outros usuários tem seus próprios requisitos de configuração — veja docs/deployment.md. Uma imagem pré-construída é publicada em ghcr.io/professionalwiki/mediawiki-mcp-server. Para operações de dia 2 (logs, /health//ready, métricas, desligamento gracioso), veja docs/operations.md.

Segurança

Os padrões são seguros para uso de usuário único. Antes de expor o transporte HTTP a outros, restrinja três coisas:

  • Encerre o TLS no seu proxy reverso. Não exponha a porta MCP diretamente em uma rede não confiável. Veja docs/deployment.md — lista de verificação de segurança.
  • Emparelhe MCP_BIND com MCP_ALLOWED_HOSTS e MCP_ALLOWED_ORIGINS. O transporte HTTP vincula-se a 127.0.0.1 por padrão. Quando você o abrir com MCP_BIND=0.0.0.0, defina MCP_ALLOWED_HOSTS para os nomes de host que seu proxy encaminha e MCP_ALLOWED_ORIGINS para as origens de navegador permitidas a chamar o servidor — eles bloqueiam ataques de rebinding de DNS e de origem cruzada, respectivamente.
  • Uploads são opcionais. upload-file está desabilitado até que você liste diretórios permitidos em uploadDirs ou MCP_UPLOAD_DIRS. Veja docs/configuration.md — diretórios de upload.
  • Destinos internos precisam de MCP_TRUSTED_HOSTS. Buscas de saída são protegidas contra SSRF: um destino que resolva para um endereço privado ou loopback (por exemplo, um alias de rede Docker como mediawiki.svc) é recusado até que você liste seu host em MCP_TRUSTED_HOSTS. Veja docs/deployment.md — proteção SSRF de saída.

Reporte uma vulnerabilidade pelo formulário de aviso de segurança do GitHub — política completa em SECURITY.md.

Contribuindo

Contribuições são bem-vindas — pull requests e issues (bugs, solicitações de recursos, sugestões) funcionam.

  • Trabalhando no código das ferramentas? Comece por AGENTS.md para a estrutura do repositório, comandos e padrões de teste.
  • Adicionando ou modificando uma ferramenta? Leia docs/tool-conventions.md — cobre voz de descrição, documentação de parâmetros, dicas de anotação e convenções de terminologia do MediaWiki.
  • Fazendo um release? Veja docs/releasing.md.

Licença

Este projeto é licenciado sob a Licença MIT. Veja o arquivo LICENSE para detalhes.