mcpField
L
letswork

letswork

Local
github.com/saicharanrajojuDeveloper Tools0Updated 19w ago

About letswork

letswork is an MCP server for two developers collaborating on one project through Claude Code. It combines file locks and host approval of guest edits with a Cloudflare tunnel for connectivity.

Key features

  1. 01Shared codebase for two developers
  2. 02File locking and unlocking
  3. 03Host approval for guest edits
  4. 04File and session status tools
  5. 05Cloudflare HTTPS tunnel

Use cases

  1. 01Edit project text files remotely together
  2. 02Review and decide on guest changes
  3. 03Check connected users and file locks

MCP support

It provides Claude Code with MCP tools for file operations, locking, and approvals. Guests connect to the host's MCP server through a stdio proxy.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"saicharanrajoju-letswork": {
"command": "uvx",
"args": [
"letswork"
]
}
}
}
Run commanduvx letswork

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypiletswork3.0.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

LetsWork

Real-time collaborative coding via Claude Code — two developers, one codebase, each using their own Claude subscription.

One developer hosts the session. The other joins from anywhere. Both get a live Claude Code window connected to the same project — with file locking and an approval system to prevent conflicts.


How It Works

  1. Host runs letswork start inside their project folder
  2. A secure HTTPS tunnel is created automatically via Cloudflare
  3. A one-time URL + guest token is generated and printed
  4. Host shares the join command with the guest
  5. Guest runs letswork join <url> --token <token> on their machine
  6. Both developers now have Claude Code connected to the same codebase

Requirements

RequirementmacOSWindows (WSL)
Python 3.10+brew install pythonComes with Ubuntu WSL
cloudflaredbrew install cloudflaredSee WSL section below
Claude Codenpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-code (inside WSL)
Node.jsbrew install nodesudo apt install nodejs npm (inside WSL)

macOS — Host Setup

The host is the developer who owns the project. You start the session and share the join command.

Step 1 — Install dependencies
brew install cloudflared
pip install letswork
Step 2 — Install Claude Code
npm install -g @anthropic-ai/claude-code
Step 3 — Start the session

Navigate to your project folder and run:

cd /path/to/your/project
letswork start

You will be asked for your display name, then a session box appears:

╔══════════════════════════════════════════════════════════════════════╗
║  🤝 LetsWork Session Active                                          ║
║                                                                      ║
║  Send this command to your collaborator:                             ║
║  letswork join https://abc123.trycloudflare.com --token a1b2c3d4    ║
║                                                                      ║
║  Press Ctrl+C to stop.                                               ║
╚══════════════════════════════════════════════════════════════════════╝

Copy the full letswork join ... command and send it to your collaborator.

Two new terminal windows open automatically:

  • Claude Code — already connected to LetsWork
  • A chat window to communicate with your collaborator
Step 4 — Approve guest changes

When the guest edits a file, you'll see a notification in Claude Code. Ask Claude:

get_pending_changes

Then approve or reject:

approve_change <id>
reject_change <id>
Step 5 — Stop the session

Press Ctrl+C in the terminal where you ran letswork start.


macOS — Guest Setup

The guest connects to the host's project. You need the join command from the host.

Step 1 — Install dependencies
brew install cloudflared
pip install letswork
Step 2 — Install Claude Code
npm install -g @anthropic-ai/claude-code
Step 3 — Join the session

Run the command the host sent you:

letswork join https://abc123.trycloudflare.com --token a1b2c3d4

You'll be asked for your display name. Then two windows open:

  • Claude Code — connected to the host's project
  • A chat window to communicate with the host
Step 4 — Edit files

Ask Claude to read and edit files normally. When you write a file, it goes into an approval queue — the host reviews it before it's written to disk. You'll get a notification when it's approved or rejected.


Windows — Guest Setup (WSL)

LetsWork runs inside WSL (Windows Subsystem for Linux). The guest experience is the same as macOS once WSL is set up.

Step 1 — Enable WSL and install Ubuntu

Open PowerShell as Administrator and run:

wsl --install

Restart your computer when prompted. Ubuntu will install automatically.

Open Ubuntu from the Start menu and set up your Linux username and password.

Step 2 — Install dependencies inside Ubuntu

Open Ubuntu and run these one by one:

# Update packages
sudo apt update && sudo apt upgrade -y

# Install Python
sudo apt install python3 python3-pip -y

# Install Node.js and npm
sudo apt install nodejs npm -y

# Install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/

# Install letswork
pip3 install letswork
Step 3 — Install Claude Code inside Ubuntu
npm install -g @anthropic-ai/claude-code
Step 4 — Join the session

Run the command the host sent you, inside Ubuntu:

letswork join https://abc123.trycloudflare.com --token a1b2c3d4

You'll be asked for your display name. Claude Code launches directly in the same terminal window.

Note for Windows users: Claude Code runs in the WSL terminal — not as a separate window. Everything else works identically to macOS.


MCP Tools Available

Both host and guest have access to these tools inside Claude Code:

ToolWho Can UseDescription
list_filesBothList files and directories with lock status
read_fileBothRead file contents (1MB limit, text files only)
write_fileBothSubmit a file change (guest changes need host approval)
lock_fileBothLock a file for exclusive editing
unlock_fileBothRelease your own file lock
get_statusBothShow session info, connected users, and active locks
get_notificationsBothQuick summary of what needs attention
pingBothVerify connection to the host MCP server
set_display_nameGuest onlySet your display name for the session
my_pending_changesGuest onlyView your submitted changes awaiting approval
get_pending_changesHost onlyView all changes awaiting approval with diffs
approve_changeHost onlyApprove a pending change and write it to disk
reject_changeHost onlyReject a pending change
force_unlockHost onlyForce-release a stuck file lock

Approval Flow

Guest file writes do not go directly to disk — they go through the host's approval queue:

  1. Guest asks Claude to edit a file → write_file submits the change
  2. Host sees: 📝 guest submitted change to server.py (ID: a1b2c3)
  3. Host asks Claude: get_pending_changes — sees a full diff
  4. Host approves: approve_change a1b2c3 → file is written to disk
  5. Or rejects: reject_change a1b2c3 → guest is notified

Security

  • Random Cloudflare subdomain — URL is unguessable
  • Cryptographic token — second auth layer on top of the URL
  • All traffic encrypted via HTTPS
  • Path traversal prevention — guest cannot access files outside the project root
  • File locks auto-expire after 30 minutes
  • No accounts, no signup, no persistent credentials — session ends when host stops

Constraints

  • Maximum 2 users per session (Host + 1 Guest)
  • Text files only — binary files not supported
  • 1MB file size limit per read/write operation
  • Guest has no shell access — file operations only
  • cloudflared must be installed on the host machine (guest does not need it on macOS, but WSL guests do)

CLI Reference

letswork start [--port PORT] [--debug]   # Start a session (default port: 8000)
letswork join <URL> --token <TOKEN>      # Join a session as guest

Architecture

Host Machine:
[Project Files] ← [MCP Server :8000] ← [Cloudflare Tunnel] ← HTTPS URL
                                                                    ↑
                                             Guest connects here
                                             via stdio proxy + secret token

The guest connects through a stdio proxy rather than directly over HTTP — this avoids Cloudflare SSE reliability issues and gives stable MCP connectivity.


License

MIT — see LICENSE


Built with the Model Context Protocol.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.