MediaWiki MCP Server
Permite que clientes LLM interajam com qualquer wiki MediaWiki usando o Model Context Protocol.
Documentação
MediaWiki MCP Server
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
| Nome | Descrição |
|---|---|
compare-pages | Compara duas versões de uma página da wiki por revisão, título ou wikitexto fornecido. |
get-category-members | Lista membros de uma categoria (até 500 por chamada, paginado via continueFrom). |
get-file | Busca uma página de arquivo. |
get-file-data | Busca 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-here | Lista 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-page | Busca uma página da wiki. |
get-page-history | Lista revisões recentes de uma página da wiki. |
get-pages | Busca várias páginas da wiki em uma única chamada (até 50). |
get-recent-changes | Lista 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-revision | Busca uma revisão específica de uma página. |
get-site-info | Obté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-wikis | Lista 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-wikitext | Renderiza wikitexto para HTML sem salvar. Retorna avisos de análise, wikilinks, predefinições e URLs externas. |
search-page | Pesquisa títulos e conteúdos de páginas da wiki. |
search-page-by-prefix | Pesquisa títulos de páginas por prefixo. |
whoami | Informa 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
| Nome | Descrição | Permissõ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
| Nome | Descrição |
|---|---|
add-wiki | Adiciona uma wiki como recurso MCP a partir de sua URL. Desativado quando allowWikiManagement é false. |
remove-wiki | Remove um recurso de wiki. Desativado quando allowWikiManagement é false ou quando menos de duas wikis estão configuradas. |
OAuth
| Nome | Descrição |
|---|---|
oauth-logout | Remove tokens OAuth armazenados. Somente Stdio. |
oauth-status | Lista 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.
| Nome | Descrição |
|---|---|
neowiki-list-schemas | Lista esquemas (tipos de entidade) e suas contagens de propriedades. |
neowiki-get-schema | Obtém as definições de propriedades, relações e opções de seleção de um esquema. |
neowiki-cypher-query | Executa uma consulta Cypher somente leitura contra o grafo de conhecimento. |
neowiki-search-subjects | Encontra IDs de sujeitos por rótulo dentro de um esquema. |
neowiki-get-subject | Busca os dados estruturados de um sujeito por ID. |
neowiki-get-page-subjects | Lista os sujeitos anexados a uma página da wiki. |
neowiki-create-subject | Cria um sujeito (filho ou principal) em uma página. Requer o direito edit. |
neowiki-update-subject | Substitui o rótulo e as declarações de um sujeito. Requer o direito edit. |
neowiki-delete-subject | Exclui um sujeito por ID. Requer o direito edit. |
neowiki-set-main-subject | Define ou limpa o sujeito principal de uma página. Requer o direito edit. |
neowiki-validate-subject | Valida em modo de simulação um sujeito proposto e retorna violações. |
| Nome | Descrição |
|---|---|
smw-list-properties | Lista propriedades do Semantic MediaWiki com modelos de copiar e colar para smw-query. |
smw-query | Executa uma consulta #ask do Semantic MediaWiki. |
| Nome | Descrição |
|---|---|
bucket-query | Executa uma consulta Lua do Bucket. |
| Nome | Descrição |
|---|---|
cargo-list-tables | Lista tabelas Cargo definidas na wiki. |
cargo-describe-table | Lista os campos de uma tabela Cargo com seus tipos e flags de lista. |
cargo-query | Executa uma consulta estilo SQL do Cargo. |
| Nome | Descrição |
|---|---|
wikibase-search-entities | Encontra itens e propriedades por rótulo ou alias. |
wikibase-get-entity | Lê os termos e declarações de uma entidade, com IDs referenciados resolvidos para rótulos. |
wikibase-query | Executa uma consulta SPARQL contra o serviço de consulta da wiki. Oferecido apenas para um repositório cujo siteinfo publique um. |
wikibase-edit-entity | Cria ou altera uma entidade a partir do JSON de entidade do Wikibase. Requer o direito edit. |
wikibase-add-statement | Adiciona 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-wikiouremove-wiki, o servidor envianotifications/resources/list_changedpara 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.
| Nome | Descrição | Padrão |
|---|---|---|
CONFIG | Caminho para o seu arquivo de configuração | config.json |
MCP_TRANSPORT | Tipo de transporte do servidor MCP (stdio ou http) | stdio |
MCP_LOG_LEVEL | Severidade mínima para a saída do logger. Uma de debug, info, notice, warning, error, critical, alert, emergency ou silent. | debug |
MCP_CONTENT_MAX_BYTES | Limite 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_BYTES | Limite 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_BYTES | Limite 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_FILE | Substitui 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_BROWSER | Defina 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.
- OAuth baseado em navegador (recomendado). Faça login em uma aba do navegador na primeira vez que uma ferramenta precisar de autenticação. Defina
oauth2ClientIdeoauth2CallbackPortpor wiki — veja docs/configuration.md — OAuth (baseado em navegador). - Token bearer por requisição (HTTP), obsoleto. Cada requisição carrega
Authorization: Bearer <token>e o servidor o encaminha para o 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 bearer por requisição. - Proxy OAuth hospedado (HTTP). O servidor atua como um Authorization Server OAuth 2.1 para um consumidor MediaWiki, de modo que um cliente com suporte a OAuth autentica cada usuário — sem tokens manuais. Aponte-o para
https://<wiki>/mcp; a 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 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
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:
| Cliente | Arquivo de configuração | Chave raiz |
|---|---|---|
| Cursor | ~/.cursor/mcp.json, ou .cursor/mcp.json por projeto | mcpServers |
| VS Code | .vscode/mcp.json por workspace, ou o comando MCP: Open User Configuration | servers |
| Devin Desktop (antigo Windsurf) | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| Zed | ~/.config/zed/settings.json | context_servers |
| LM Studio | ~/.lmstudio/mcp.json | mcpServers |
{
"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_BINDcomMCP_ALLOWED_HOSTSeMCP_ALLOWED_ORIGINS. O transporte HTTP vincula-se a127.0.0.1por padrão. Quando você o abrir comMCP_BIND=0.0.0.0, definaMCP_ALLOWED_HOSTSpara os nomes de host que seu proxy encaminha eMCP_ALLOWED_ORIGINSpara 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-fileestá desabilitado até que você liste diretórios permitidos emuploadDirsouMCP_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 comomediawiki.svc) é recusado até que você liste seu host emMCP_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.