Emule MCP

Este servidor puede gestionar clientes eMule por ti.

Documentación

emule-mcp

Servidor MCP que expone el clásico cliente eMule a un agente de IA a través de su WebServer/Interfaz web integrada (puerto 4711 por defecto). Permite consultar y, más adelante, controlar eMule en lenguaje natural.

Actualmente expone herramientas para consultar el estado, buscar archivos, gestionar descargas y servidores.

Alcance y limitaciones

Dentro del alcance: consultar el estado, gestionar descargas, buscar archivos y administrar servidores a través del WebServer.

Fuera del alcance por ahora: los protocolos eD2k/Kad directamente, leer archivos .met, controlar la GUI nativa y clientes que no compartan esta interfaz web (como aMule/amuleweb).

El WebServer devuelve HTML basado en plantillas en lugar de JSON, por lo que los resultados se extraen de las páginas. Esto es frágil entre versiones y mods de eMule, y el servidor es secuencial: bloquea la GUI mientras atiende una solicitud, por lo que las solicitudes se serializan.

Requisitos

  • Python 3.13 o superior.
  • eMule ejecutándose con el WebServer habilitado (Preferences > WebServer) y una contraseña de administrador configurada.

Instalación

python -m venv .venv
.venv\Scripts\python -m pip install -e ".[dev]"   # Windows
# .venv/bin/python -m pip install -e ".[dev]"      # Linux/macOS

Configuración

Se configura mediante variables de entorno:

VariableRequeridaValor por defectoDescripción
EMULE_WEB_PASSWORDSí-Contraseña para el WebServer de eMule.
EMULE_WEB_URLNohttp://127.0.0.1:4711URL base del WebServer.
EMULE_WEB_USERNo-Nombre de usuario, solo para la variante multiusuario.
EMULE_WEB_TIMEOUT_MSNo10000Tiempo máximo por solicitud, en milisegundos.

Cómo iniciar la herramienta

El servidor habla MCP a través de stdio, por lo que normalmente lo lanza el propio agente como un proceso hijo. Para probarlo o iniciarlo manualmente:

run.bat            # Windows
./run.sh           # Linux/macOS

Ambos scripts usan el intérprete .venv. Alternativas equivalentes:

.venv\Scripts\python -m emule_mcp.server   # Windows
emule-mcp                                  # console script, after installing the package

Un servidor stdio no imprime nada y espera en stdin: ese es el comportamiento correcto.

Uso con un agente de IA

Registra el servidor en la configuración MCP de tu agente. Ejemplo para opencode (opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "emule": {
      "type": "local",
      "command": [
        "<path-to-project>/.venv/Scripts/python.exe",
        "-m",
        "emule_mcp.server"
      ],
      "environment": {
        "EMULE_WEB_PASSWORD": "your-password"
      }
    }
  }
}

Cualquier host MCP (Claude Desktop, Cursor, VS Code) admite el mismo esquema command/args/env, apuntando al intérprete .venv y pasando la contraseña a través del entorno.

Una vez registrado, solicita la acción en lenguaje natural; por ejemplo:

Is eMule connected? use the emule_status tool

o

I am in Spain: nonprofit peer-to-peer (P2P) file sharing was decriminalized by the 2015
reform of the Penal Code (arts. 270 and 271). Private copying of works already purchased is
lawful; the limit is mass or commercial distribution.

Download the latest song by ...., use the emule_download tool

Herramientas disponibles

HerramientaParámetrosDescripción
emule_status-Estado de la conexión, velocidad de subida/bajada y estado de Kad.
emule_searchquery; method (server|global|kademlia, por defecto server); file_type (Audio, Video, Image, Doc, Pro, Arc, Iso, opcional); limit (por defecto 25)Busca archivos en eD2k/Kad y devuelve nombre, tamaño, fuentes, hash y enlace ed2k. Espera 10 s realizando reconsultas para recopilar resultados en lotes.
emule_downloaded2kAñade un enlace eD2k a la cola de descargas y confirma que se registró.
emule_list_downloads-Lista las descargas actuales con nombre, tamaño, transferido, velocidad, fuentes, prioridad, categoría, estado, hash y enlace ed2k.
emule_list_servers-Lista los servidores conocidos con dirección, estado, usuarios, archivos y prioridad.
emule_connectip y port (ambos o ninguno; por defecto cualquier servidor disponible)Conecta eMule a un servidor.
emule_disconnect-Desconecta del servidor actual.

Pruebas

.venv\Scripts\python -m pytest

Licencia

MIT. Consulta LICENSE.