Emule MCP

Este servidor pode gerenciar clientes eMule para você.

Documentação

emule-mcp

Servidor MCP que expõe o clássico cliente eMule a um agente de IA através de sua WebServer/Webinterface integrada (porta 4711 por padrão). Ele permite consultar e, futuramente, controlar o eMule em linguagem natural.

Atualmente, ele expõe ferramentas para consultar status, buscar arquivos, gerenciar downloads e servidores.

Escopo e limitações

No escopo: consultar status, gerenciar downloads, buscar arquivos e administrar servidores através do WebServer.

Fora do escopo por enquanto: os protocolos eD2k/Kad diretamente, leitura de arquivos .met, controle da GUI nativa e clientes que não compartilham esta Webinterface (como aMule/amuleweb).

O WebServer retorna HTML com modelos em vez de JSON, então os resultados são extraídos das páginas. Isso é frágil entre versões e mods do eMule, e o servidor é sequencial: ele bloqueia a GUI enquanto atende uma solicitação, então as solicitações são serializadas.

Requisitos

  • Python 3.13 ou superior.
  • eMule em execução com o WebServer habilitado (Preferences > WebServer) e uma senha de administrador configurada.

Instalação

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

Configuração

Ele é configurado através de variáveis de ambiente:

VariávelObrigatóriaPadrãoDescrição
EMULE_WEB_PASSWORDSim-Senha para o WebServer do eMule.
EMULE_WEB_URLNãohttp://127.0.0.1:4711URL base do WebServer.
EMULE_WEB_USERNão-Nome de usuário, apenas para a variante multiusuário.
EMULE_WEB_TIMEOUT_MSNão10000Tempo máximo por solicitação, em milissegundos.

Como iniciar a ferramenta

O servidor fala MCP via stdio, então ele normalmente é iniciado pelo próprio agente como um processo filho. Para testá-lo ou iniciá-lo manualmente:

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

Ambos os scripts usam o interpretador .venv. Alternativas equivalentes:

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

Um servidor stdio não imprime nada e aguarda em stdin: esse é o comportamento correto.

Uso com um agente de IA

Registre o servidor na configuração MCP do seu agente. Exemplo 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"
      }
    }
  }
}

Qualquer host MCP (Claude Desktop, Cursor, VS Code) suporta o mesmo esquema command/args/env, apontando para o interpretador .venv e passando a senha através do ambiente.

Após o registro, peça a ação em linguagem natural; por exemplo:

Is eMule connected? use the emule_status tool

ou

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

Ferramentas disponíveis

FerramentaParâmetrosDescrição
emule_status-Estado da conexão, velocidade de upload/download e status do Kad.
emule_searchquery; method (server|global|kademlia, padrão server); file_type (Audio, Video, Image, Doc, Pro, Arc, Iso, opcional); limit (padrão 25)Busca arquivos no eD2k/Kad e retorna nome, tamanho, fontes, hash e link ed2k. Aguarda 10 s fazendo novas buscas para coletar resultados em lotes.
emule_downloaded2kAdiciona um link eD2k à fila de downloads e confirma que foi registrado.
emule_list_downloads-Lista os downloads atuais com nome, tamanho, transferido, velocidade, fontes, prioridade, categoria, estado, hash e link ed2k.
emule_list_servers-Lista os servidores conhecidos com endereço, estado, usuários, arquivos e prioridade.
emule_connectip e port (ambos ou nenhum; padrão para qualquer servidor disponível)Conecta o eMule a um servidor.
emule_disconnect-Desconecta do servidor atual.

Testes

.venv\Scripts\python -m pytest

Licença

MIT. Consulte LICENSE.