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_:
| Herramienta | Descripción |
|---|---|
wiki_page_edit | Editar o crear páginas de MediaWiki con opciones de edición completas |
wiki_page_get | Obtener información y contenido de páginas |
wiki_page_parse | Analizar 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_compare | Comparar dos páginas, revisiones o contenido de texto para mostrar diferencias entre ellos |
wiki_page_move | Mover páginas con soporte para páginas de discusión, subpáginas y redirecciones |
wiki_page_delete | Eliminar páginas con soporte para páginas de discusión, gestión de lista de seguimiento y registro |
wiki_page_undelete | Restaurar páginas eliminadas de MediaWiki con opciones de restauración completas |
wiki_search | Buscar páginas usando la API de búsqueda de MediaWiki con filtrado avanzado |
wiki_opensearch | Buscar usando el protocolo OpenSearch para sugerencias rápidas y autocompletado |
wiki_meta_siteinfo | Obtener información general del sitio, incluyendo información general, espacios de nombres, estadísticas, extensiones y más |
Instalación
- Clonar el repositorio y cambiar a la rama
main - Instalar dependencias usando UV:
uv install
- 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
- Reemplace
/absolute/path/to/mediawiki-api-mcpcon la ruta absoluta real a este directorio del proyecto - Actualice
MEDIAWIKI_API_URLcon el endpoint de la API de su instalación de MediaWiki - Establezca
MEDIAWIKI_API_BOT_USERNAMEcon su nombre de usuario bot (normalmente en formatoYourUserName@YourBotName) - Establezca
MEDIAWIKI_API_BOT_PASSWORDcon la contraseña de bot generada desde la páginaSpecial:BotPasswordsde su wiki - Personalice
MEDIAWIKI_API_BOT_USER_AGENTcon 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