伦菲尔德mcp dlna
用于DLNA媒体渲染器控制的MCP服务器,具有无缝队列播放功能。通过SSDP发现DLNA渲染器,并使用UPnP AVTransport直接控制它们——播放控制不需要中间媒体服务器。
使用Jellyfin的内置DLNA服务器提供媒体服务(内容URL指向Jellyfins)。
工具
| 工具 | 说明 |
|---|---|
list_renderers | 在网络上发现DLNA渲染器(5分钟缓存) |
play_tracks | 播放无缝队列的曲目列表(SetNextAVTransportURI) |
stop | 停止播放并清空队列 |
next_track | 跳到下一首曲目 |
previous_track | 转到上一曲目 |
get_status | 当前播放状态、曲目信息、队列位置 |
set_volume | 设置音量(0-100) |
安装
pip install .用法
stdio(默认值--用于MCP子流程)
renfield-mcp-dlna
# or
python -m renfield_mcp_dlna流式http(独立服务)
MCP_TRANSPORT=streamable-http MCP_PORT=9091 renfield-mcp-dlna服务器正在监听 http://0.0.0.0:9091/mcp (可通过以下方式配置 MCP_HOST 和 MCP_PORT).
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_TRANSPORT | stdio | 运输: stdio 或 streamable-http |
MCP_HOST | 0.0.0.0 | 绑定地址(仅限可流式传输的http) |
MCP_PORT | 9091 | 监听端口(仅限可流式传输的http) |
部署为主机服务
SSDP组播(239.255.255.250:1900)需要局域网接入。当Renfield在Docker中运行时,此服务器必须运行 在主机上 (不在容器中),因此它可以发现DLNA渲染器。
systemd服务
# /etc/systemd/system/renfield-mcp-dlna.service
[Unit]
Description=Renfield DLNA MCP Server
After=network.target
[Service]
Type=simple
User=your-user
Environment=MCP_TRANSPORT=streamable-http
Environment=MCP_PORT=9091
Environment=MCP_HOST=0.0.0.0
ExecStart=/home/your-user/.local/bin/renfield-mcp-dlna
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now renfield-mcp-dlnaRenfield配置
在 config/mcp_servers.yaml:
- name: dlna
transport: streamable_http
url: "${DLNA_MCP_URL:-http://host.docker.internal:9091/mcp}"
enabled: "${DLNA_MCP_ENABLED:-false}"在 .env:
DLNA_MCP_ENABLED=true
# DLNA_MCP_URL=http://host.docker.internal:9091/mcp # default建筑
DLNA Renderers (LAN) DLNA MCP Server (Host) Renfield Backend (Docker)
Linn, Samsung TV, etc. SSDP discovery + UPnP MCP client
↑ ↑ ↑
│ SSDP Multicast │ streamable-http │
│ 239.255.255.250:1900 │ :9091/mcp │
└────────────────────────────┘ │
└──────────────────────────────┘
host.docker.internal:9091/mcp依赖项
mcp>=1.26.0--模型上下文协议SDKasync-upnp-client>=0.40.0--UPnP/SSDP客户端python-didl-lite>=1.4.0--用于UPnP元数据的DIDL Lite XMLaiohttp>=3.9.0--异步HTTP用于获取设备描述
