jessica
Integrates ElevenLabs Text-to-Speech capabilities with Cursor through the Model Context Protocol, allowing users to convert text to speech with selectable voices within the Cursor editor.
Integrates ElevenLabs Text-to-Speech capabilities with Cursor through the Model Context Protocol, allowing users to convert text to speech with selectable voices within the Cursor editor.
This project integrates ElevenLabs Text-to-Speech capabilities with Cursor through the Model Context Protocol (MCP). It consists of a FastAPI backend service and a React frontend application.
jessica/
├── src/
│ ├── backend/ # FastAPI backend service
│ └── frontend/ # React frontend application
├── terraform/ # Infrastructure as Code
├── tests/ # Test suites
└── docs/ # Documentation
# Clone the repository
git clone https://github.com/georgi-io/jessica.git
cd jessica
# Create Python virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivate
# Install backend dependencies
poetry install
# Configure environment
cp .env.example .env
# Edit .env with your ElevenLabs API key
# Install pre-commit hooks
poetry run pre-commit install
# Navigate to frontend directory
cd src/frontend
# Install dependencies
npm install
# Activate virtual environment if not active
source .venv/bin/activate # On Windows: .venvScriptsactivate
# Start the backend
python -m src.backend
The backend provides: - REST API: http://localhost:9020 - WebSocket: ws://localhost:9020/ws - MCP Server: http://localhost:9020/sse (integrated with the main API server)
# In src/frontend directory
npm run dev
Frontend development server: - http://localhost:5173
# ElevenLabs API
ELEVENLABS_API_KEY=your-api-key
# Server Configuration
HOST=127.0.0.1
PORT=9020
# Development Settings
DEBUG=false
RELOAD=true
VITE_API_URL=http://localhost:9020
VITE_WS_URL=ws://localhost:9020/ws
# Run all pre-commit hooks
poetry run pre-commit run --all-files
# Run specific tools
poetry run ruff check .
poetry run ruff format .
poetry run pytest
# Lint
npm run lint
# Type check
npm run type-check
# Test
npm run test
To enable automatic building and pushing of Docker images to Amazon ECR:
Apply the Terraform configuration to create the required AWS resources:
cd terraform
terraform init
terraform apply
The GitHub Actions workflow will automatically:
main
or develop
branchesPush the image to ECR with tags for latest
and the specific commit SHA
No additional repository variables needed! The workflow fetches all required configuration from the Terraform state.
The GitHub Actions workflow is configured to: 1. Initially assume a predefined IAM role with S3 read permissions 2. Fetch and extract configuration values from the Terraform state file in S3 3. Re-authenticate using the actual deployment role from the state file 4. Build and push the Docker image to the ECR repository defined in the state
This approach eliminates the need to manually configure GitHub repository variables and ensures that the CI/CD process always uses the current infrastructure configuration.
Solution: Check .env
file
Connection Problems
Solution: Verify backend is running and ports are correct
Port Conflicts
Solution: Change ports in .env
WebSocket Connection Failed
For additional help, please open an issue on GitHub.
MIT