ElevenLabs MCP Server

from dataclasses import dataclass from datetime import datetime from typing import Dict, List, Optional @dataclass class ScriptPart: text: str voice_id: Optional[str] = None actor: Optional[str] = None @dataclass class AudioJob: id: str status: str # 'pending', 'processing', 'completed', 'failed' script_parts: List[Dict] output_file: Optional[str] = None error: Optional[str] = None created_at: datetime = datetime.utcnow() updated_at: datetime = datetime.utcnow() total_parts: int = 1 completed_parts: int = 0 def to_dict(self) -> Dict: return { "id": self.id, "status": self.status, "script_parts": self.script_parts, "output_file": self.output_file, "error": self.error, "created_at": self.created_at.isoformat(), "updated_at": self.updated_at.isoformat(), "total_parts": self.total_parts, "completed_parts": self.completed_parts } @staticmethod def from_dict(data: Dict) -> "AudioJob": return AudioJob( id=data["id"], status=data["status"], script_parts=data["script_parts"], output_file=data.get("output_file"), error=data.get("error"), created_at=datetime.fromisoformat(data["created_at"]) if isinstance(data["created_at"], str) else data["created_at"], updated_at=datetime.fromisoformat(data["updated_at"]) if isinstance(data["updated_at"], str) else data["updated_at"], total_parts=data.get("total_parts", 1), completed_parts=data.get("completed_parts", 0) )