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 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
| 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, paginados 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, paginadas 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 múltiplas páginas da wiki em uma única chamada (até 50). |
get-recent-changes | Lista 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-revision | Busca uma revisão específica de uma página. |
get-site-info | Obté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-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. Desabilitada 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 (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-prefix | Pesquisa títulos de páginas por prefixo. |
whoami | Informa 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
| 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 |
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
| Nome | Descrição |
|---|---|
add-wiki | Adiciona uma wiki como recurso MCP a partir de sua URL. Desabilitada quando allowWikiManagement é false. |
remove-wiki | Remove um recurso de wiki. Desabilitada quando allowWikiManagement é false ou 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 assuntos por rótulo dentro de um esquema. |
neowiki-get-subject | Busca os dados estruturados de um assunto por ID. |
neowiki-get-page-subjects | Lista os assuntos anexados a uma página da wiki. |
neowiki-create-subject | Cria um assunto (filho ou principal) em uma página. Requer o direito edit. |
neowiki-update-subject | Substitui o rótulo e as declarações de um assunto. Requer o direito edit. |
neowiki-delete-subject | Exclui um assunto por ID. Requer o direito edit. |
neowiki-set-main-subject | Define ou limpa o assunto principal de uma página. Requer o direito edit. |
neowiki-validate-subject | Valida em modo de simulação um assunto 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. Oferecida 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 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-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 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 registrador. Uma de debug, info, notice, warning, error, critical, alert, emergency ou silent. | debug |
MCP_CONTENT_MAX_BYTES | Limite 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_BYTES | Limite 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_BYTES | Limite 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_AGENT | Substitui 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_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 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
oauth2ClientIdeoauth2CallbackPortpor 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árioruncargoqueries. A maioria das wikis concede isso a todos os usuários por padrão; wikis que restringem exigem a permissãoCreate, query and delete data through the Cargo extensionna 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 renomeadoLIBRARIAN.
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
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:
| 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 é 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_BINDcomMCP_ALLOWED_HOSTSeMCP_ALLOWED_ORIGINS. O transporte HTTP vincula-se a127.0.0.1por padrão. Quando você o abre comMCP_BIND=0.0.0.0, definaMCP_ALLOWED_HOSTSpara os hostnames 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-filefica desabilitado até você listar diretórios permitidos emuploadDirsouMCP_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 comomediawiki.svc) é recusado até você listar seu host emMCP_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.