MediaWiki MCP Server

Permite que clientes LLM interactúen con cualquier wiki de MediaWiki usando el Protocolo de Contexto del Modelo.

Documentación

Servidor MCP de MediaWiki

NPM Version MIT licensed

Un servidor MCP (Model Context Protocol) que permite a clientes de Modelos de Lenguaje Grande (LLM) interactuar con cualquier wiki de MediaWiki.

Características

Herramientas

Cada herramienta que opera sobre una wiki acepta un argumento opcional wiki que nombra la wiki sobre la que actuar (las herramientas de gestión de wikis y OAuth no lo aceptan): pasa una clave de wiki (p. ej. en.wikipedia.org) o la URI completa de mcp://wikis/{wikiKey}. Omítelo para usar la wiki predeterminada configurada (ver Configuración). Cada respuesta de herramienta informa sobre la wiki en la que se ejecutó la llamada. Cada respuesta exitosa lleva su contenido como prosa en content y como JSON en structuredContent; ver canales de respuesta.

Lecturas de páginas

NombreDescripción
compare-pagesCompara dos versiones de una página de wiki por revisión, título o wikitexto proporcionado.
get-category-membersLista los miembros de una categoría (hasta 500 por llamada, paginado mediante continueFrom).
get-fileObtiene una página de archivo.
get-file-dataObtiene los bytes de imagen de un archivo en línea (base64) para análisis visual, para clientes que no pueden alcanzar el host de la wiki. Devuelve una representación escalada (establece width); los tipos no representables (audio, video, binarios) generan error. Para metadatos o una URL de descarga, usa get-file.
get-links-hereLista las páginas que referencian una página de wiki: páginas que enlazan a ella, la incrustan como plantilla o la muestran como archivo (selecciona mediante type), incluyendo páginas que la alcanzan a través de una redirección. Hasta 500 por llamada, paginado mediante continueFrom.
get-pageObtiene una página de wiki.
get-page-historyLista las revisiones recientes de una página de wiki.
get-pagesObtiene múltiples páginas de wiki en una sola llamada (hasta 50).
get-recent-changesLista eventos de cambios recientes en toda la wiki, filtrables por marca de tiempo, espacio de nombres, usuario, etiqueta, tipo y banderas de ocultamiento (hasta 50 por llamada, paginado mediante continue).
get-revisionObtiene una revisión específica de una página.
get-site-infoObtiene la configuración clave de una wiki: versión de MediaWiki, idioma de contenido, reglas de mayúsculas en títulos, espacios de nombres, extensiones instaladas, licencia y (opcionalmente) estadísticas.
list-wikisLista cada wiki configurada: su clave, nombre del sitio, servidor, si es de solo lectura o la predeterminada, si es alcanzable, qué herramientas limitadas por extensión funcionan en ella y, para una wiki configurada con OAuth, su servidor de autorización. Deshabilitada cuando hay menos de dos wikis configuradas.
parse-wikitextConvierte wikitexto a HTML sin guardar. Devuelve advertencias de análisis, wikienlaces, plantillas y URLs externas.
search-pageBusca títulos y contenidos de páginas de wiki (texto completo). Busca en los espacios de nombres de contenido de la wiki a menos que se proporcionen otros IDs de espacio de nombres.
search-page-by-prefixBusca títulos de páginas por prefijo.
whoamiInforma la identidad con la que la sesión actual está autenticada en la wiki objetivo: nombre de usuario, si es anónima y membresías de grupo (opcionalmente derechos de usuario).

Escrituras de páginas

NombreDescripciónPermisos
create-page 🔐Crea una nueva página de wiki.Create, edit, and move pages
delete-page 🔐Elimina una página de wiki.Delete pages, revisions, and log entries
move-page 🔐Mueve (renombra) una página de wiki.Create, edit, and move pages
protect-page 🔐Protege o desprotege una página de wiki.Protect and unprotect pages
undelete-page 🔐Restaura una página de wiki eliminada.Delete pages, revisions, and log entries
update-file 🔐Sube una nueva revisión de un archivo existente desde el disco local.Upload, replace, and move files
update-file-from-url 🔐Sube una nueva revisión de un archivo existente desde una URL.Upload, replace, and move files
update-page 🔐Actualiza una página de wiki existente: sobrescríbela, añade contenido o reescribe un pasaje de ella.Edit existing pages
upload-file 🔐Sube un archivo a la wiki desde el disco local.Upload new files
upload-file-from-url 🔐Sube un archivo a la wiki desde una URL.Upload, replace, and move files

Gestión de wikis

NombreDescripción
add-wikiAñade una wiki como recurso MCP desde su URL. Deshabilitada cuando allowWikiManagement es false.
remove-wikiElimina un recurso de wiki. Deshabilitada cuando allowWikiManagement es false o hay menos de dos wikis configuradas.

OAuth

NombreDescripción
oauth-logoutElimina tokens OAuth almacenados. Solo stdio.
oauth-statusLista tokens OAuth almacenados con ámbitos y expiración (sin valores de token). Solo stdio.

Paquetes de extensiones

Las herramientas de cada paquete se registran solo en wikis donde su extensión está instalada.

NeoWiki

NombreDescripción
neowiki-list-schemasLista esquemas (tipos de entidad) y sus recuentos de propiedades.
neowiki-get-schemaObtiene las definiciones de propiedades, relaciones y opciones de selección de un esquema.
neowiki-cypher-queryEjecuta una consulta Cypher de solo lectura contra el grafo de conocimiento.
neowiki-search-subjectsEncuentra IDs de sujetos por etiqueta dentro de un esquema.
neowiki-get-subjectObtiene los datos estructurados de un sujeto por ID.
neowiki-get-page-subjectsLista los sujetos adjuntos a una página de wiki.
neowiki-create-subjectCrea un sujeto (hijo o principal) en una página. Requiere el derecho edit.
neowiki-update-subjectReemplaza la etiqueta y las declaraciones de un sujeto. Requiere el derecho edit.
neowiki-delete-subjectElimina un sujeto por ID. Requiere el derecho edit.
neowiki-set-main-subjectEstablece o limpia el sujeto principal de una página. Requiere el derecho edit.
neowiki-validate-subjectValida en seco un sujeto propuesto y devuelve violaciones.

Semantic MediaWiki

NombreDescripción
smw-list-propertiesLista propiedades de Semantic MediaWiki con plantillas de copiar y pegar para smw-query.
smw-queryEjecuta una consulta #ask de Semantic MediaWiki.

Bucket

NombreDescripción
bucket-queryEjecuta una consulta Lua de Bucket.

Cargo

NombreDescripción
cargo-list-tablesLista las tablas Cargo definidas en la wiki.
cargo-describe-tableLista los campos de una tabla Cargo con sus tipos y banderas de lista.
cargo-queryEjecuta una consulta de estilo SQL de Cargo.

Wikibase

NombreDescripción
wikibase-search-entitiesEncuentra elementos y propiedades por etiqueta o alias.
wikibase-get-entityLee los términos y declaraciones de una entidad, con IDs referenciados resueltos a etiquetas.
wikibase-queryEjecuta una consulta SPARQL contra el servicio de consultas de la wiki. Se ofrece solo para un repositorio cuyo siteinfo publique uno.
wikibase-edit-entityCrea o cambia una entidad a partir de JSON de entidad de Wikibase. Requiere el derecho edit.
wikibase-add-statementAñade una declaración con un valor de elemento, cadena, ID externo o URL. Requiere el derecho edit.

Recursos

mcp://wikis/{wikiKey} — recurso por wiki que expone sitename, server (la dirección pública de la wiki), articlepath, scriptpath y las banderas private y readOnly.

  • Esos campos son todo el contenido: el recurso publica una lista fija, por lo que las credenciales y la configuración del lado del servidor en tu archivo de configuración nunca se exponen en el contenido del recurso.
  • Después de add-wiki o remove-wiki, el servidor envía notifications/resources/list_changed para que los clientes se actualicen.
Ejemplo de resultado de lectura
{
  "contents": [
    {
      "uri": "mcp://wikis/en.wikipedia.org",
      "mimeType": "application/json",
      "text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
    }
  ]
}

Variables de entorno

Las variables siguientes son relevantes para cualquier configuración. Las variables que solo aplican al autoalojar el transporte HTTP (puertos, tiempos de espera, protecciones de Host/Origin y SSRF) o al ejecutar el proxy OAuth alojado están en docs/deployment.md — variables de entorno. Las variables de sustitución de archivos de configuración y directorios de subida están en docs/configuration.md.

NombreDescripciónPredeterminado
CONFIGRuta a tu archivo de configuraciónconfig.json
MCP_TRANSPORTTipo de transporte del servidor MCP (stdio o http)stdio
MCP_LOG_LEVELSeveridad mínima para la salida del registrador. Una de debug, info, notice, warning, error, critical, alert, emergency o silent.debug
MCP_CONTENT_MAX_BYTESLímite de bytes para los cuerpos de contenido y bloques de resultados que devuelven las herramientas (wikitexto, HTML renderizado, diferencias, listados de declaraciones y filas), aplicado una vez por respuesta. Ajusta al presupuesto de respuestas de herramientas del cliente LLM objetivo.75000
MCP_FILE_DATA_MAX_BYTESLímite máximo en el tamaño codificado en base64 de una respuesta de get-file-data. Un respaldo de transporte/seguridad; ajusta el tamaño real por llamada con el width de la herramienta. Las llamadas que superan el límite generan error en lugar de truncarse.1000000
MCP_UPLOAD_MAX_BYTESLímite de memoria en la búsqueda del lado del servidor utilizada por upload-file-from-url / update-file-from-url. Los archivos más grandes que este límite se entregan a la copia de subida propia de la wiki en lugar de ser almacenados en búfer por el servidor. Protege la memoria de este servidor, no el $wgMaxUploadSize de la wiki.104857600
MCP_USER_AGENTReemplaza el encabezado User-Agent de cada solicitud saliente, para que los operadores de wiki puedan contactarte. Proporciona un nombre y un correo electrónico o URL, p. ej. ExampleBot/1.0 (bot@example.org).mediawiki-mcp-server/<version> (https://github.com/ProfessionalWiki/MediaWiki-MCP-Server)
MCP_OAUTH_CREDENTIALS_FILESobrescribe la ruta predeterminada del almacén de credenciales. Predeterminado: ~/.config/mediawiki-mcp/credentials.json (Linux/macOS) o %APPDATA%\mediawiki-mcp\credentials.json (Windows).unset
MCP_OAUTH_NO_BROWSEREstablécelo a 1 para omitir el lanzamiento de un navegador durante el flujo OAuth; la URL de autenticación se registra en stderr en su lugar. Útil en entornos sin interfaz gráfica.unset

Configuración

[!NOTE] La configuración solo es necesaria al interactuar con una wiki privada o al usar herramientas autenticadas.

Crea un archivo config.json para configurar conexiones de wiki. Usa el config.example.json como punto de partida.

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

Dirección interna vs. pública. El server que configures puede ser un nombre de host interno (p. ej. http://mediawiki en Docker); las URLs devueltas al llamante se construyen a partir de la dirección pública de la wiki, por lo que los nombres de host internos no se filtran en los enlaces. Ver docs/configuration.md — campos por wiki.

Para la referencia completa de campos, sustitución de variables de entorno, fuentes de secretos, etiquetas de cambios, directorios de subida y opciones de autenticación, ver docs/configuration.md.

Autenticación

Las herramientas marcadas con 🔐 requieren autenticación. Las herramientas de escritura (incluidas las escrituras de paquetes de extensiones) se rechazan en una wiki que tenga readOnly: true, y se ocultan de tools/list cuando cada wiki configurada la tiene — ver Implementación.

  • OAuth basado en navegador (recomendado). Inicia sesión a través de una pestaña del navegador la primera vez que una herramienta necesite autenticación. Establece oauth2ClientId y oauth2CallbackPort por wiki — ver docs/configuration.md — OAuth (basado en navegador).
  • Token de portador por solicitud (HTTP), obsoleto. Cada solicitud lleva Authorization: Bearer <token> y el servidor lo reenvía a MediaWiki. Desactivado por defecto, porque un servidor MCP no debe aceptar tokens que no fueron emitidos para él. Ver docs/deployment.md — token de portador por solicitud.
  • Proxy OAuth alojado (HTTP). El servidor presenta un consumidor de MediaWiki como un Servidor de Autorización OAuth 2.1, de modo que un cliente consciente de OAuth registra a cada usuario — sin tokens manuales. Apúntalo a https://<wiki>/mcp; la lectura anónima aún funciona. Ver docs/deployment.md — inicio de sesión OAuth alojado.
  • Token de acceso OAuth2 manual. Pega un token de larga duración en config.json. Ver docs/configuration.md — token de acceso OAuth2 manual.
  • Contraseña de bot. Respaldo cuando Extension:OAuth no está instalada. Ver docs/configuration.md — contraseña de bot. Las herramientas Cargo (cargo-query, cargo-list-tables, cargo-describe-table) llaman a acciones de API restringidas por el permiso de usuario runcargoqueries. La mayoría de los wikis otorgan este permiso a todos los usuarios por defecto; los wikis que lo restringen requieren la concesión Create, query and delete data through the Cargo extension en la contraseña de bot o en el consumidor OAuth. La extensión Cargo también se detecta en wikis alojados en wiki.gg (Helldivers, Terraria, Ark, etc.), donde se distribuye bajo el nombre renombrado LIBRARIAN.

Instalación

Elige tu cliente a continuación, o usa la configuración estándar si no aparece en la lista. CONFIG es opcional; sin él, el servidor apunta a la Wikipedia en inglés. Para apuntarlo a tu propio wiki y configurar la autenticación para escrituras, consulta docs/configuration.md.

Claude Code

Añade este repositorio como mercado de plugins y luego instala el servidor incluido:

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

El plugin acepta un archivo de configuración opcional, que apunta el servidor a tu propio wiki. Configúralo desde el mensaje al habilitar el plugin, o en cualquier momento con /plugin configure mediawiki-mcp-server@professional-wiki. Una instalación desde línea de comandos toma el mismo valor mediante claude plugin install mediawiki-mcp-server@professional-wiki --config configPath=path/to/config.json.

Cuando se instala como plugin, las herramientas tienen el prefijo de espacio de nombres mcp__plugin_mediawiki-mcp-server_mediawiki__<tool>; actualiza cualquier lista de permitidos o enlaces de herramientas en consecuencia.

Para configurar el servidor directamente, consulta la documentación de MCP para Claude Code. La versión 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

Añade este repositorio como mercado de plugins y luego instala el servidor incluido:

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

Para apuntar el plugin a tu propio wiki, establece CONFIG en el shell desde el que lanzas Codex, por ejemplo export CONFIG=path/to/config.json. Codex no tiene configuración por plugin; si prefieres no establecer una variable de entorno, codex mcp add mediawiki --env CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest registra el servidor directamente y tiene prioridad sobre la copia del plugin.

Consulta la documentación de plugins de Codex para saber cómo listar, actualizar o eliminar plugins.

Claude Desktop

Descarga MediaWiki-MCP-Server.mcpb y haz doble clic para instalar la extensión, que te pedirá la ruta de un archivo de configuración para que puedas apuntarla a tu propio wiki en lugar de a la Wikipedia en inglés.

VS Code y Cursor

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

O añade la configuración estándar manualmente.

Antigravity

Añade la configuración estándar a la configuración MCP de Antigravity, ya sea globalmente en ~/.gemini/config/mcp_config.json o por espacio de trabajo en .agents/mcp_config.json.

Si instalaste previamente la extensión de Gemini CLI, el asistente de configuración de Antigravity ofrece importar tu configuración existente de Gemini CLI.

OpenCode

OpenCode usa su propia forma de configuración en lugar de mcpServers; añade esto a opencode.json en la raíz de tu proyecto, o ~/.config/opencode/opencode.json para una instalación 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"
      }
    }
  }
}

Configuración estándar

La mayoría de los clientes leen el mismo bloque de servidor. Pégalo en el archivo indicado para tu cliente, reemplazando mcpServers con la clave raíz de ese cliente:

ClienteArchivo de configuraciónClave raíz
Cursor~/.cursor/mcp.json, o .cursor/mcp.json por proyectomcpServers
VS Code.vscode/mcp.json por espacio de trabajo, o el comando MCP: Open User Configurationservers
Devin Desktop (antes 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 cualquier otro cliente, npx add-mcp @professional-wiki/mediawiki-mcp-server puede funcionar: add-mcp es un CLI comunitario que escribe el archivo de configuración de tu cliente por ti. Solo establece el comando de lanzamiento; añade CONFIG tú mismo para apuntar a tu propio wiki.

Despliegue

Ejecutar el servidor como un endpoint HTTP remoto para otros usuarios tiene sus propios requisitos de configuración — consulta docs/deployment.md. Hay una imagen precompilada publicada en ghcr.io/professionalwiki/mediawiki-mcp-server. Para operaciones de día 2 (registros, /health//ready, métricas, apagado elegante), consulta docs/operations.md.

Seguridad

Los valores predeterminados son seguros para uso de un solo usuario. Antes de exponer el transporte HTTP a otros, asegura tres cosas:

  • Termina TLS en tu proxy inverso. No expongas el puerto MCP directamente en una red no confiable. Consulta docs/deployment.md — lista de verificación de seguridad.
  • Combina MCP_BIND con MCP_ALLOWED_HOSTS y MCP_ALLOWED_ORIGINS. El transporte HTTP se vincula a 127.0.0.1 por defecto. Cuando lo abras con MCP_BIND=0.0.0.0, establece MCP_ALLOWED_HOSTS a los nombres de host que tu proxy reenvía y MCP_ALLOWED_ORIGINS a los orígenes de navegador permitidos para llamar al servidor — estos bloquean ataques de reenlace de DNS y de origen cruzado, respectivamente.
  • Las subidas son opcionales. upload-file está deshabilitado hasta que enumeres los directorios permitidos en uploadDirs o MCP_UPLOAD_DIRS. Consulta docs/configuration.md — directorios de subida.
  • Los destinos internos necesitan MCP_TRUSTED_HOSTS. Las búsquedas salientes están protegidas contra SSRF: un destino que resuelve a una dirección privada o de bucle local (por ejemplo, un alias de red Docker como mediawiki.svc) se rechaza hasta que enumeres su host en MCP_TRUSTED_HOSTS. Consulta docs/deployment.md — protección SSRF saliente.

Reporta una vulnerabilidad mediante el formulario de aviso de seguridad de GitHub — política completa en SECURITY.md.

Contribuciones

Las contribuciones son bienvenidas — tanto las solicitudes de extracción como los problemas (errores, solicitudes de funciones, sugerencias) funcionan.

  • ¿Trabajas en código de herramientas? Comienza con AGENTS.md para la estructura del repositorio, comandos y patrones de prueba.
  • ¿Añades o modificas una herramienta? Lee docs/tool-conventions.md — cubre el tono de las descripciones, la documentación de parámetros, las sugerencias de anotaciones y las convenciones de terminología de MediaWiki.
  • ¿Preparas un lanzamiento? Consulta docs/releasing.md.

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.