Skip to main content

Denon MCP Server

tests License: MIT Python 3.10+

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

Client MCP : les 10 outils, puis get_status sur l'ampli réel

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 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

# 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)

Source distribution for denon-mcp 0.3.1
File Size Uploaded
denon_mcp-0.3.1.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for denon-mcp 0.3.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page