Denon MCP Server

English summary. MCP server for Denon AVR home-cinema receivers over the local telnet control protocol: power, volume, mute, inputs, status. Configure with DENON_HOST / DENON_PORT (optional DENON_MAC to follow the receiver when DHCP changes its IP) or a config.yaml; runs standalone (uvx denon-mcp after PyPI publication).
Serveur MCP pour contrôler un Home Cinema Denon AVR via le protocole Denon AVR Control (telnet).
Démo

Enregistrée sur l'ampli réel avec docs/demo/record.sh : un client MCP minimal (docs/demo/mcp_demo.py) démarre le serveur en stdio avec DENON_HOST dans l'environnement, liste les outils et appelle get_status (lecture seule).
Modèle supporté
- Denon AVR-X1700H DAB
- Autres modèles AVR-X series compatibles avec le protocole Denon AVR Control
Configuration
Ordre de résolution : variables d'environnement, puis fichier YAML (DENON_CONFIG, sinon ./config.yaml, sinon config.yaml à côté du serveur, sinon celui de Lyra si le serveur est installé dans son arborescence). Le serveur fonctionne seul, sans Lyra.
Sans réservation DHCP, renseignez aussi mac (ou DENON_MAC) : si l'IP ne répond plus, le serveur retrouve le Denon par son adresse MAC dans la table de voisinage du réseau local (une recherche toutes les 2 min au plus) et bascule sur la nouvelle IP.
Installation en une ligne
Configuration Claude Desktop / Claude Code (mcpServers) :
{ "denon": { "command": "uvx", "args": ["denon-mcp"], "env": { "DENON_HOST": "192.0.2.22" } } }
Ajouter dans config.yaml :
denon:
host: "192.0.2.10"
port: 23
Les valeurs ci-dessous sont des exemples : remplacez-les par les valeurs de votre appareil
(IP affichée dans le menu réseau de l'ampli, adresse MAC au format AA:BB:CC:DD:EE:FF
utile pour une réservation DHCP ou le Wake-on-LAN).
Outils disponibles
| Outil | Rôle |
|---|
volume_set | Regle le volume du Denon a un niveau specifique (0-98). 80 = 0dB reference. |
volume_up | Augmente le volume du Denon. |
volume_down | Baisse le volume du Denon. |
mute_on | Active le mute du Denon. |
mute_off | Desactive le mute du Denon. |
mute_toggle | Toggle le mute du Denon (on/off). |
power_on | Allume le Denon AVR. |
power_off | Eteint le Denon AVR (standby). |
get_status | Retourne le statut du Denon : volume, power (on/standby/unknown), muted, source (BD, TV, GAME...), reachable. |
set_input | Change la source d'entree du Denon (BD, TV, GAME, SAT/CBL, DVD, MPLAY). |
Sources d'entrée
BD : Blu-ray / Lecteur BD
TV : Entrée TV
GAME : Console de jeu
SAT/CBL : Satellite / Câble
DVD : Lecteur DVD
MPLAY : Media Player
Aliases supportés : bluray, blu-ray, cable, sat, media, mediaplayer
Échelle de volume
- 0-98 : Échelle Denon (0 = -80 dB, 80 = 0 dB référence, 98 = +18 dB)
- Pour une écoute normale : 30-50
- Pour un home cinéma : 50-70
- Maximum recommandé : 80 (0 dB)
Protocole Denon AVR Control
Commandes telnet sur port 23 :
MV44 : Volume 44
MV? : Demander le volume actuel
MVUP / MVDOWN : Volume +/-
PWON / PWSTANDBY : Power on/off
MUON / MUOFF : Mute on/off
SIBD : Source Blu-ray
Notes HDMI ARC
Quand un home cinéma est connecté en HDMI ARC/eARC à la TV :
- Le volume de la TV est désactivé
- C'est le home cinéma qui contrôle le volume audio
- Les commandes
tv.volume_* ne fonctionnent PAS
- Utiliser
denon.volume_* à la place
Test manuel
echo "MV?" | nc 192.0.2.10 23
echo "MV44" | nc 192.0.2.10 23
echo "PWON" | nc 192.0.2.10 23
Installation
denon-mcp
python -m denon_mcp
python server.py
Le code vit dans le paquet denon_mcp : il s'installe à côté d'autres serveurs MCP sans conflit de nom de module.
Le serveur est automatiquement lancé par Lyra via la config MCP.
Part of the Lyra ecosystem