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
uvx denon-mcp # après publication sur PyPI ; en attendant : uvx --from git+https://github.com/amineutron/denon-mcp denon-mcp
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" # IP du Denon (exemple)
port: 23 # Port telnet (default: 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 BDTV: Entrée TVGAME: Console de jeuSAT/CBL: Satellite / CâbleDVD: Lecteur DVDMPLAY: 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 44MV?: Demander le volume actuelMVUP/MVDOWN: Volume +/-PWON/PWSTANDBY: Power on/offMUON/MUOFF: Mute on/offSIBD: 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
# Test connexion
echo "MV?" | nc 192.0.2.10 23
# Régler volume à 44
echo "MV44" | nc 192.0.2.10 23
# Allumer
echo "PWON" | nc 192.0.2.10 23
Installation
denon-mcp # installé (pip, uvx) ; `denon-mcp --help` liste les réglages
python -m denon_mcp # équivalent, depuis tout environnement où le paquet est installé
python server.py # depuis un clone, sans installation (lanceur minimal, code dans denon_mcp/)
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
| Dépôt | Rôle |
|---|---|
| lyra | assistant DevOps vocal, local par défaut (AGPL-3.0) |
| fedora-agents | MCP : machines virtuelles KVM et sauvegardes |
| mcp-tracking | MCP + API + tableau de bord des tâches longues |
| neutroncore | hub PWA du homelab |
| hue-mcp | MCP Philips Hue (fork de ThomasRohde/hue-mcp) |
| pylips-mcp | MCP TV Philips |
| denon-mcp | MCP ampli Denon |
| catt-mcp | MCP Chromecast et DLNA |
Release files for denon-mcp 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| denon_mcp-0.3.1.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| denon_mcp-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.0 kB
Release files / denon_mcp-0.3.1.tar.gz
| Download URL | denon_mcp-0.3.1.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
580867d417cbb183e9912eb0762c77244760e7a3a38b67a2b4bf6d274921d7bd
|
|
BLAKE2b-256 checksum How to use checksums |
970956fcd9847a8faf4e276a89ae3f9e7185276ce02a5e0e998b6f645495ec29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / denon_mcp-0.3.1-py3-none-any.whl
| Download URL | denon_mcp-0.3.1-py3-none-any.whl |
|---|---|
| Size | 11.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f673c6c25483e6c8893087d18f707ee2fe474185aa617fa44c270fe28ace977
|
|
BLAKE2b-256 checksum How to use checksums |
f0a4f43a4c54751115e209f52c096fc4f57699b489ca83027a50b8bc47525fd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log