MediaWiki

Interactúa con instalaciones de MediaWiki a través de la API de MediaWiki como un usuario bot.

Documentación

Servidor MCP de la API de MediaWiki

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los LLM interactuar con instalaciones de MediaWiki a través de la API de MediaWiki como usuario bot.

Características

Herramientas

El servidor proporciona varias herramientas MCP con el prefijo wiki_:

HerramientaDescripción
wiki_page_editEditar o crear páginas de MediaWiki con opciones de edición completas
wiki_page_getObtener información y contenido de páginas
wiki_page_parseAnalizar contenido de páginas con soporte para procesamiento de wikitexto, generación de HTML, extracción de metadatos y funciones avanzadas de análisis
wiki_page_compareComparar dos páginas, revisiones o contenido de texto para mostrar diferencias entre ellos
wiki_page_moveMover páginas con soporte para páginas de discusión, subpáginas y redirecciones
wiki_page_deleteEliminar páginas con soporte para páginas de discusión, gestión de lista de seguimiento y registro
wiki_page_undeleteRestaurar páginas eliminadas de MediaWiki con opciones de restauración completas
wiki_searchBuscar páginas usando la API de búsqueda de MediaWiki con filtrado avanzado
wiki_opensearchBuscar usando el protocolo OpenSearch para sugerencias rápidas y autocompletado
wiki_meta_siteinfoObtener información general del sitio, incluyendo información general, espacios de nombres, estadísticas, extensiones y más

Instalación

  1. Clonar el repositorio y cambiar a la rama main
  2. Instalar dependencias usando UV:
uv install
  1. Configurar variables de entorno:
export MEDIAWIKI_API_URL="http://mediawiki.test/api.php"
export MEDIAWIKI_API_BOT_USERNAME="YourUserName@YourBotName"
export MEDIAWIKI_API_BOT_PASSWORD="YourBotPassword"
export MEDIAWIKI_API_BOT_USER_AGENT="MediaWiki-MCP-Bot/1.0 (your.email@mediawiki.test)"  # Optional

Uso

Ejecutar el Servidor

uv run mediawiki-api-mcp

O directamente:

python -m mediawiki_api_mcp.server

Configuración con Claude Desktop

Ubicación del Archivo de Configuración

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Configuración de Plantilla

Agregar a su archivo de configuración de Claude Desktop:

{
  "mcpServers": {
    "mediawiki-api": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mediawiki-api-mcp",
        "run",
        "mediawiki-api-mcp"
      ],
      "env": {
        "MEDIAWIKI_API_URL": "http://mediawiki.test/api.php",
        "MEDIAWIKI_API_BOT_USERNAME": "YourUserName@YourBotName",
        "MEDIAWIKI_API_BOT_PASSWORD": "YourBotPassword",
        "MEDIAWIKI_API_BOT_USER_AGENT": "MediaWiki-MCP-Bot/1.0 (your.email@mediawiki.test)"
      }
    }
  }
}

Instrucciones de Configuración

  1. Reemplace /absolute/path/to/mediawiki-api-mcp con la ruta absoluta real a este directorio del proyecto
  2. Actualice MEDIAWIKI_API_URL con el endpoint de la API de su instalación de MediaWiki
  3. Establezca MEDIAWIKI_API_BOT_USERNAME con su nombre de usuario bot (normalmente en formato YourUserName@YourBotName)
  4. Establezca MEDIAWIKI_API_BOT_PASSWORD con la contraseña de bot generada desde la página Special:BotPasswords de su wiki
  5. Personalice MEDIAWIKI_API_BOT_USER_AGENT con información de contacto apropiada (opcional)
Configuración de Contraseña de Bot

Cree credenciales de bot en, por ejemplo: http://mediawiki.test/index.php/Special:BotPasswords

Permisos requeridos:

  • Derechos básicos: Leer páginas
  • Edición de alto volumen: Editar páginas existentes, Crear, editar y mover páginas
  • Permisos adicionales según sea necesario para su caso de uso específico
Notas de Seguridad
  • Mantenga sus credenciales de bot seguras y nunca las envíe al control de versiones
  • Use el principio de privilegio mínimo al configurar permisos de bot
  • Monitoree la actividad del bot a través de la interfaz de registro de su MediaWiki
  • Considere usar restricciones de IP para mayor seguridad

Desarrollo

Pila Tecnológica

  • SDK MCP: mcp >= 1.2.0 (usando patrón FastMCP)
  • Cliente HTTP: httpx >= 0.27.0 para llamadas a la API de MediaWiki
  • Validación de Datos: pydantic >= 2.0.0 para modelos de configuración
  • Entorno: python-dotenv >= 1.0.0 para configuración
  • Pruebas: pytest con pytest-asyncio para pruebas asíncronas
  • Calidad de Código: ruff para linting, mypy para verificación de tipos

Arquitectura

  • Servidor FastMCP con decoradores @mcp.tool()
  • Separación de responsabilidades: servidor → manejador → cliente → API de MediaWiki
  • AsyncIO en todo momento para operaciones no bloqueantes
  • Configuración basada en entorno para credenciales de MediaWiki

Capa de Cliente (client.py y client_modules/)

  • Maneja la autenticación y solicitudes de la API de MediaWiki
  • Gestiona tokens CSRF y estado de sesión
  • Proporciona métodos tipados para operaciones de API

Capa de Herramientas (tools/)

  • Define esquemas de herramientas MCP usando JSON Schema
  • Separadas por área funcional (edición, búsqueda)
  • Asegura que todas las herramientas tengan el prefijo wiki_

Capa de Manejadores (handlers/)

  • Implementa la lógica real de las herramientas
  • Maneja validación de argumentos y gestión de errores
  • Devuelve respuestas MCP correctamente formateadas

Capa de Servidor (server.py y server_tools/)

  • Orquestación principal del servidor MCP
  • Enruta llamadas de herramientas a los manejadores apropiados
  • Gestiona configuración y ciclo de vida del cliente

Estructura del Proyecto

El proyecto está organizado en componentes modulares para mantenibilidad:

mediawiki-api-mcp/
├── mediawiki_api_mcp/
│   ├── __init__.py
│   ├── server.py             # FastMCP server with tool definitions
│   ├── client.py             # MediaWiki API client
│   ├── client_modules/       # Client modules for API operations
│   │    ├── __init__.py      # Client module exports
│   │    └── client_*.py        # Individual client modules
│   ├── handlers/             # Business logic handlers
│   │    ├── __init__.py      # Handler exports
│   │    └── wiki_*.py        # Individual tool handlers
│   ├── tools/                # Tool schemas
│   │   ├── __init__.py       # Tool schema exports
│   │   └── wiki_*.py         # Individual tool schemas
│   └── server_tools/         # Tool definitions
│       ├── __init__.py       # Tool definition exports
│       └── wiki_*.py         # Individual tool definitions
├── tests/                    # Test suite
│   └── test_*.py             # Test files matching handlers
├── docs/                     # Documentation
│   └── tools/                # Tool-specific documentation
│       └── wiki_*.md         # Individual tool docs
├── pyproject.toml            # Project configuration
└── uv.lock                   # Dependency lock file

Ejecutar Pruebas

uv run pytest

Ejecutar módulos de prueba específicos, por ejemplo:

uv run pytest tests/test_server.py
uv run pytest tests/test_tools.py
uv run pytest tests/test_wiki_page_edit.py
uv run pytest tests/test_wiki_search.py
uv run pytest tests/test_wiki_opensearch.py

Calidad de Código

# Linting
uv run ruff check

# Type checking
uv run mypy mediawiki_api_mcp

Manejo de Errores

El servidor implementa manejo integral de errores:

  • Errores de configuración: Variables de entorno faltantes
  • Errores de autenticación: Credenciales o permisos inválidos
  • Errores de API: Problemas de red, solicitudes inválidas
  • Errores de herramientas: Parámetros faltantes, argumentos inválidos

Todos los errores se devuelven como respuestas MCP TextContent para visibilidad del LLM.

Seguridad

  • Se requieren credenciales de bot para operaciones de edición
  • Todas las solicitudes de API incluyen encabezados User-Agent apropiados
  • Los tokens CSRF se gestionan automáticamente
  • Validación de entrada en todos los parámetros de herramientas

Licencia

Licencia MIT