A Kotlin-based desktop companion for seamless Figma-to-MCP integration
Ported from the original TypeScript project with enhanced desktop capabilities
Installation • Getting Started • Features • Original Project • Troubleshooting
Tip
This project is a Kotlin Compose Desktop application ported from @sonnylazuardi's cursor-talk-to-figma-mcp project, enabling direct WebSocket and MCP server capabilities. We deeply appreciate the innovative ideas and implementation of the original project.
- 🚀 Start/Stop Servers: Control WebSocket and MCP servers from tray menu
- 📊 View Logs: Built-in log viewer with clear and copy functions
- ⚙️ MCP Configuration: Easy copy-paste configuration for Cursor or whatever
- 🔄 Auto Port Management: Automatic port conflict resolution
- 🖥️ System Tray: Clean interface with status indicators
- 📈 Analytics & Crash Reporting: Google Analytics integration for monitoring app usage and crashes
- Go to Releases
- Download the appropriate version for your platform:
- macOS Apple Silicon:
TalkToFigma-v*.*.* -arm64.dmg - macOS Intel:
TalkToFigma-v*.*.* -intel.dmg - Windows:
TalkToFigma-v*.*.*.msior.exe
- macOS Apple Silicon:
Since this is an open source community build (unsigned), your system will show security warnings:
macOS:
- "Cannot be opened" dialog will appear
- Go to System Preferences → Security & Privacy → General
- Click "Open Anyway" next to the blocked app message
- Or right-click the app → "Open" → "Open" in the confirmation dialog
Windows:
- SmartScreen warning: "Windows protected your PC"
- Click "More info" → "Run anyway"
- This is normal for applications not yet recognized by Microsoft's reputation system
- macOS: Find in Applications folder or Launchpad
- Windows: Start menu → Cursor Talk to Figma desktop
The application will appear in your system tray with a server icon.
Right-click the system tray icon and select:
- "Start All Services" - Starts both WebSocket (port 3055) and MCP (port 3056) servers
- Or start them individually if needed
Warning
Port Requirements: Cursor Talk to Figma desktop requires ports 3055 (WebSocket) and 3056 (MCP) to be available. If you have other applications using these ports, you may need to stop them first or use "Kill All Servers" from the tray menu.
You'll see status indicators:
- Click the tray icon → "MCP Configuration"
- Copy the displayed configuration
- Paste into your Cursor settings under MCP servers:
Note
The config contains both Cursor Talk to Figma desktop and the official Figma DevMode MCP server URL.
{
"mcpServers": {
"Figma": {
"url": "http://127.0.0.1:3845/mcp"
},
"TalkToFigmaDesktop": {
"url": "http://127.0.0.1:3056/sse"
}
}
}Install the official plugin: Cursor Talk to Figma MCP Plugin
Important
Important Note About Prerequisites: The plugin page may mention installing bun.sh and other prerequisites. These are NOT required when using Cursor Talk to Figma desktop, as this application already includes all necessary server components. You can safely ignore those instructions and simply install the plugin directly.
Tip
Plugin Connection: The Figma plugin will automatically attempt to connect to your desktop app on port 3055. Make sure Cursor Talk to Figma desktop is running with servers started before launching the plugin.
- In Figma: Run the plugin and ensure it connects to the desktop app
- In Cursor: The MCP server will now be available for AI interactions
- Start Creating: Use Cursor AI with seamless Figma integration!
Note
Quick Diagnosis: Most issues can be resolved by checking the application logs. Right-click the tray icon → "View Logs" to see detailed error information.
🔌 Connection Problems
- Right-click the tray icon → "Kill All Servers"
- Wait a few seconds, then → "Start All Services"
- If still not working → "View Logs" to see what's happening
🛡️ Installation & Security Issues
- macOS: If "Cannot be opened" appears → System Preferences → Security & Privacy → "Open Anyway"
- Windows: If SmartScreen warning appears → "More info" → "Run anyway"
- Why warnings occur: Community builds are unsigned (no code signing certificate) but are safe to use
🔧 Server Won't Start
- Right-click tray icon → "Kill All Servers"
- Try → "Start All Services" again
- Still having issues? → "View Logs" for details
Access detailed logs via:
- Right-click tray icon → "View Logs"
- Use Clear to reset log view to current session
- Use Copy to share logs for troubleshooting
- JDK 21+
- Kotlin 2.0.0+
- Gradle 8.12+
- direnv (for environment variable management)
-
Install direnv
# macOS brew install direnv # Setup shell integration (add to your shell config) echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc # for zsh echo 'eval "$(direnv hook bash)"' >> ~/.bashrc # for bash
-
Create environment file
cp .envrc.template .envrc
-
Configure Java environment
The
.envrcfile automatically sets up the correct Java version:# Java Development Kit # Amazon Corretto JDK 21 setup with automatic detection if [ -d "/Library/Java/JavaVirtualMachines/amazon-corretto-21.jdk/Contents/Home" ]; then export JAVA_HOME="/Library/Java/JavaVirtualMachines/amazon-corretto-21.jdk/Contents/Home" export PATH="$JAVA_HOME/bin:$PATH" echo "✅ Amazon Corretto JDK 21 loaded" fi # Optional: Google Analytics (uncomment to enable) # export GOOGLE_ANALYTICS_ID="G-XXXXXXXXXX" # export GOOGLE_ANALYTICS_API_SECRET="your_api_secret_here"
[!NOTE] Java Version: This project requires JDK 21. The
.envrcfile automatically detects Amazon Corretto JDK 21 and sets up the environment. If you don't have JDK 21 installed, install it with:brew install --cask amazon-corretto -
Allow direnv
direnv allow
# Clone the repository
git clone https://github.com/FigmaAI/TalkToFigmaDesktop.git
cd TalkToFigmaDesktop
# Build the application
./gradlew build
# Run during development
./gradlew :app:run
# Create unsigned distributables
./gradlew packageDmg -PsigningEnabled=false # macOS (ARM64 by default)
./gradlew packageMsi packageExe # Windows
# Create Intel macOS build
./gradlew packageDmg -PsigningEnabled=false -Dcompose.desktop.mac.archs=x86_64Note
Release Builds: Tagged releases (e.g., v1.0.0) trigger automatic builds via GitHub Actions, creating unsigned distributables for both ARM64 and Intel macOS, plus Windows packages. See .github/workflows/build.yml for details.
cursor-talk-to-figma-mcp by @sonnylazuardi
| Original (TypeScript) | This Port (Kotlin) |
|---|---|
| Node.js server | JVM desktop application |
| Command-line interface | System tray GUI |
| Manual port management | Automatic port conflict resolution |
| Basic logging | Visual log viewer with filtering |
| Terminal-based config | GUI configuration dialogs |
Both implementations share the same core MCP protocol and Figma plugin compatibility.
We welcome contributions! Please see our Contributing Guidelines for details.
Tip
First Time Contributors: Start by checking our Issues page for beginner-friendly tasks labeled with good first issue. We also appreciate documentation improvements and bug reports!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This application is built using various open source libraries. The key dependencies are:
- Kotlin & Jetpack Compose: Modern UI toolkit (Apache 2.0)
- MCP Kotlin SDK: Model Context Protocol implementation (MIT)
- OkHttp: HTTP client library (Apache 2.0)
- Jackson: JSON processing (Apache 2.0)
- Logback: Logging framework (EPL 1.0, LGPL 2.1)
Note
License Compliance: All third-party libraries used in this project comply with their respective open source licenses. The complete list with versions and license details is available through the application's Open Source Licenses dialog.
Built with ❤️ using Kotlin and Compose for Desktop