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 Modelos de Linguagem de Grande Porte (LLMs) interajam com qualquer wiki MediaWiki.

Recursos

Ferramentas

Toda 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 na qual a chamada foi executada. Cada resposta bem-sucedida carrega seu conteúdo como prosa em content e como JSON em structuredContent; veja canais de resposta.

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, paginados 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, paginadas via continueFrom.
get-pageBusca uma página da wiki.
get-page-historyLista revisões recentes de uma página da wiki.
get-pagesBusca múltiplas páginas da wiki em uma única chamada (até 50).
get-recent-changesLista eventos de mudanças recentes em toda a wiki, filtráveis por timestamp, espaço nominal, usuário, tag, tipo e flags de ocultação (até 50 por chamada, paginados via continue).
get-revisionBusca uma revisão específica de uma página.
get-site-infoObtém as configurações-chave de uma wiki: versão do MediaWiki, idioma do conteúdo, regras de capitalização de títulos, espaços nominais, 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. Desabilitada 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 (texto completo). Pesquisa os espaços nominais de conteúdo da wiki, a menos que outros IDs de espaço nominal sejam fornecidos.
search-page-by-prefixPesquisa títulos de páginas por prefixo.
whoamiInforma a identidade sob a qual a sessão atual está autenticada na wiki alvo — nome de usuário, se é anônima e associações de grupos (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
protect-page 🔐Protege ou desprotege uma página da wiki.Protect and unprotect pages
undelete-page 🔐Restaura uma página 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: sobrescreve-a, adiciona a ela ou reescreve uma passagem dela.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. Desabilitada quando allowWikiManagement é false.
remove-wikiRemove um recurso de wiki. Desabilitada quando allowWikiManagement é false ou 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 assuntos por rótulo dentro de um esquema.
neowiki-get-subjectBusca os dados estruturados de um assunto por ID.
neowiki-get-page-subjectsLista os assuntos anexados a uma página da wiki.
neowiki-create-subjectCria um assunto (filho ou principal) em uma página. Requer o direito edit.
neowiki-update-subjectSubstitui o rótulo e as declarações de um assunto. Requer o direito edit.
neowiki-delete-subjectExclui um assunto por ID. Requer o direito edit.
neowiki-set-main-subjectDefine ou limpa o assunto principal de uma página. Requer o direito edit.
neowiki-validate-subjectValida em modo de simulação um assunto 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. Oferecida 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 um 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 em 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 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 registrador. Uma de debug, info, notice, warning, error, critical, alert, emergency ou silent.debug
MCP_CONTENT_MAX_BYTESLimite em 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), aplicado uma vez por resposta. Ajuste ao orçamento de resposta de ferramenta do cliente LLM alvo.75000
MCP_FILE_DATA_MAX_BYTESLimite rígido no tamanho codificado em base64 de uma resposta get-file-data. Uma salvaguarda 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 na busca do lado do servidor usada por upload-file-from-url / update-file-from-url. Arquivos maiores que isso são entregues ao upload de cópia da própria wiki em vez de serem armazenados em buffer pelo servidor. Protege a memória deste servidor, não o $wgMaxUploadSize da wiki.104857600
MCP_USER_AGENTSubstitui o cabeçalho User-Agent de toda solicitação de saída, para que operadores de wiki possam entrar em contato com você. Forneça um nome e um e-mail ou URL, ex.: ExampleBot/1.0 (bot@example.org).mediawiki-mcp-server/<version> (https://github.com/ProfessionalWiki/MediaWiki-MCP-Server)
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 em stderr em vez disso. Útil em ambientes sem interface gráfica.unset

Configuração

[!NOTE] A configuração só é necessária ao interagir com uma wiki privada ou 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 nome de host interno (ex.: http://mediawiki em Docker); URLs devolvidas ao chamador são construídas a partir do endereço público da wiki, portanto nomes de host internos não vazam em 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) são recusadas em uma wiki que tenha readOnly: true, e ocultadas de tools/list quando toda wiki configurada a tiver — veja Implantação.

  • OAuth baseado em navegador (recomendado). Entre por meio de uma aba do navegador na primeira vez que uma ferramenta precisar de autenticação. Defina oauth2ClientId e oauth2CallbackPort por wiki — veja docs/configuration.md — OAuth (baseado em navegador).
  • Token de portador por solicitação (HTTP), obsoleto. Cada solicitação carrega Authorization: Bearer <token> e o servidor o encaminha ao MediaWiki. Desativado por padrão, porque um servidor MCP não deve aceitar tokens que não foram emitidos para ele. Veja docs/deployment.md — token de portador por solicitação.
  • Proxy OAuth hospedado (HTTP). O servidor atua como um Servidor de Autorização OAuth 2.1 para um consumidor do MediaWiki, de modo que um cliente ciente de OAuth autentica cada usuário — sem tokens manuais. Aponte-o para https://<wiki>/mcp; leitura anônima ainda funciona. Veja docs/deployment.md — login OAuth hospedado.
  • Token de acesso OAuth2 manual. Cole um token de longa duração em config.json. Veja docs/configuration.md — token de acesso OAuth2 manual.
  • Senha de bot. Alternativa quando a Extension:OAuth não está instalada. Veja docs/configuration.md — senha de bot. 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 restringem exigem a permissão Create, query and delete data through the Cargo extension na senha do 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 a autenticação para gravações, consulte docs/configuration.md.

Claude Code

Adicione este repositório como um marketplace de plugins e 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 sua própria wiki. Defina-o pelo prompt ao ativar 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 ou hooks de ferramentas de acordo.

Para configurar o servidor diretamente, consulte a documentação 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 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 sua própria wiki, defina CONFIG no shell de onde 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 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 à 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 isso 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 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 é um 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 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 — consulte 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), consulte 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. Consulte docs/deployment.md — checklist de segurança.
  • Combine 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 abre com MCP_BIND=0.0.0.0, defina MCP_ALLOWED_HOSTS para os hostnames 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 fica desabilitado até você listar diretórios permitidos em uploadDirs ou MCP_UPLOAD_DIRS. Consulte 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 resolve para um endereço privado ou loopback (por exemplo, um alias de rede Docker como mediawiki.svc) é recusado até você listar seu host em MCP_TRUSTED_HOSTS. Consulte docs/deployment.md — proteção SSRF de saída.

Reporte uma vulnerabilidade pelo formulário de advisory 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 ambos.

  • 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? Consulte docs/releasing.md.

Licença

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