Sony TV MCP Server
by melenas1414
README.md
# Sony TV MCP Server
Servidor Model Context Protocol (MCP) tipo **HTTP-streaming** para controlar televisores Sony mediante la API IRCC. Este servidor permite controlar tu televisor Sony a través de comandos remotos desde aplicaciones compatibles con MCP.
## 🚀 Características
- ✅ Servidor MCP HTTP-streaming (no stdio)
- ✅ Control remoto completo del televisor Sony
- ✅ Obtención dinámica de comandos IRCC disponibles
- ✅ Herramientas predefinidas para acciones comunes (encendido, volumen, canales, etc.)
- ✅ Envío de comandos personalizados por nombre o código IRCC
- ✅ Configuración sencilla mediante variables de entorno
## 📋 Requisitos previos
- Node.js 18 o superior
- Televisor Sony compatible con la API IRCC
- El televisor debe estar en la misma red local
- Clave PSK (Pre-Shared Key) del televisor configurada
## 🔧 Instalación
1. Clona el repositorio:
```bash
git clone <tu-repositorio>
cd sony-mcp
```
2. Instala las dependencias:
```bash
npm install
```
3. Copia el archivo de ejemplo de variables de entorno y configúralo:
```bash
cp .env.example .env
```
4. Edita el archivo `.env` con los datos de tu televisor:
```env
SONY_TV_IP=192.168.1.100
SONY_TV_PSK=0000
PORT=3000
```
### 🔑 Cómo obtener la clave PSK
1. En tu televisor Sony, ve a: **Configuración → Red → Control remoto por red**
2. Activa la opción "Control remoto por red"
3. Selecciona "Autenticación" y configura una clave PSK (por defecto suele ser `0000`)
4. Anota esta clave para usarla en el archivo `.env`
## 🏗️ Compilación
Compila el proyecto TypeScript:
```bash
npm run build
```
## ▶️ Ejecución
El servidor arranca como un **servidor HTTP** en el puerto configurado (por defecto 3000).
### Modo desarrollo (con watch):
```bash
npm run dev
```
### Modo producción:
```bash
npm start
```
El servidor estará disponible en `http://localhost:3000` (o el puerto que configures en PORT).
## 🛠️ Herramientas disponibles
El servidor MCP expone las siguientes herramientas:
### Comandos generales
- **`sony_tv_get_commands`**: Obtiene todos los comandos IRCC disponibles del televisor
- **`sony_tv_send_command`**: Envía un comando específico por nombre o código IRCC
- Parámetros: `command` (string) - Nombre del comando o código IRCC
### Comandos de acceso rápido
- **`sony_tv_power`**: Enciende/apaga el televisor
- **`sony_tv_volume_up`**: Sube el volumen
- **`sony_tv_volume_down`**: Baja el volumen
- **`sony_tv_mute`**: Silencia/activa el sonido
- **`sony_tv_channel_up`**: Canal siguiente
- **`sony_tv_channel_down`**: Canal anterior
- **`sony_tv_input`**: Cambia la fuente de entrada
## 📝 Configuración en Claude Desktop
Para usar este servidor MCP con Claude Desktop, agrega la siguiente configuración a tu archivo de configuración de Claude.
**Nota importante**: Este es un servidor HTTP-streaming, por lo que la configuración es diferente a los servidores stdio tradicionales.
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"sony-tv": {
"url": "http://localhost:3000"
}
}
}
```
Asegúrate de que el servidor esté ejecutándose antes de usar Claude Desktop. Puedes iniciar el servidor con:
```bash
npm start
```
O si prefieres ejecutarlo en segundo plano con un puerto diferente:
```bash
PORT=3000 npm start &
```
## 🔍 Ejemplos de uso
Una vez configurado en Claude Desktop, puedes usar comandos naturales como:
- "Enciende el televisor Sony"
- "Sube el volumen del TV"
- "Cambia de canal"
- "Silencia el televisor"
- "Muéstrame todos los comandos disponibles del TV Sony"
- "Envía el comando Home al televisor"
## 🏗️ Arquitectura
```
sony-mcp/
├── src/
│ ├── index.ts # Servidor MCP principal
│ └── sony-client.ts # Cliente para la API IRCC de Sony
├── .env.example # Plantilla de configuración
├── package.json # Dependencias del proyecto
└── tsconfig.json # Configuración de TypeScript
```
## 🔒 Seguridad
- La clave PSK se transmite en la cabecera `X-Auth-PSK`
- Las comunicaciones se realizan solo en la red local
- No almacenes credenciales en el código fuente
- Usa el archivo `.env` para configuración sensible (incluido en `.gitignore`)
## 🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
1. Haz un fork del proyecto
2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
3. Commit tus cambios (`git commit -m 'Agrega nueva funcionalidad'`)
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
5. Abre un Pull Request
## 📄 Licencia
MIT
## 🐛 Solución de problemas
### El servidor no se conecta al televisor
- Verifica que el TV esté encendido y en la misma red
- Comprueba que la IP sea correcta
- Asegúrate de que el control remoto por red esté habilitado en el TV
- Verifica que la clave PSK sea correcta
### Los comandos no funcionan
- Ejecuta primero `sony_tv_get_commands` para ver los comandos disponibles
- Algunos televisores pueden tener nombres de comandos diferentes
- Verifica que no haya firewall bloqueando la comunicación
### Errores de compilación
- Asegúrate de tener Node.js 18 o superior
- Ejecuta `npm install` para instalar todas las dependencias
- Verifica que TypeScript esté correctamente instalado
## 📚 Recursos adicionales
- [Documentación oficial de Sony sobre la API IRCC](https://pro-bravia.sony.net/develop/)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Especificación MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues