hands
Provides Cloudflare tunnel integration to expose the local MCP server publicly, including quick tunnels, token-based tunnels, and named tunnels with stable hostnames.
Offers git tools for version control operations within the workspace, allowing agents to inspect and manage repository state alongside other local development tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@handsrun the test suite and summarize any failures"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hands-mcp
hands is an MCP CLI and local daemon that gives ChatGPT, Claude, Cursor, Cloud Code, and any MCP-capable chat real tools on your machine: read, search, edit, run commands, git, browser automation, and human-in-the-loop approvals.
The chat app is the brain. Hands is the hands. There is no LLM inside the daemon—it exposes Model Context Protocol over HTTP at /mcp.
Demo

Related MCP server: my-pi
Works with
ChatGPT — remote MCP / connector settings (URL + bearer token)
Claude — Desktop and apps with MCP support
Cursor — MCP server config
Cloud Code chat — custom MCP URL + bearer in your product’s MCP settings
Any MCP client —
hands connect --client generic
Step-by-step for each client: docs/CONNECTORS.md.
How it works
flowchart LR
subgraph chats [AI_chats]
ChatGPT[ChatGPT]
Claude[Claude]
Cursor[Cursor]
Other[Any_MCP_client]
end
subgraph hands [hands_on_your_machine]
MCP["HTTP /mcp"]
UI["Approval UI :4877"]
Tools[Host_tools]
end
Tunnel[Cloudflare_tunnel_optional]
chats -->|Bearer_token| Tunnel
Tunnel --> MCP
chats -->|localhost| MCP
MCP --> Tools
UI --> ToolsRequirements
Node.js 20+
pnpm 10.x
Optional: cloudflared for public URLs (docs/TUNNEL.md)
Optional: Chromium for browser tools (
npx playwright install chromium)
Install
git clone https://github.com/abhinavshyju/hands-mcp.git
cd hands-mcp
pnpm install
pnpm run install:globalAdd ~/.local/bin to your PATH if needed:
export PATH="$HOME/.local/bin:$PATH"Run
From any project directory:
hands .This creates ~/.hands, writes .hands/config.json in the project if missing, registers the workspace, starts the MCP server, and opens the interactive approval console.
Open the observe-and-approve UI at http://127.0.0.1:4877 (file tree, Monaco, diffs, audit log, terminal, checkpoints).
Headless or step-by-step:
hands init
hands workspace add .
hands start --no-tunnel
hands review # approvals in another terminalInside this repo you can use pnpm hands -- …; elsewhere use the global hands binary.
Enable Tab completion: eval "$(hands completion bash)" (see docs/CLI.md).
Connect your chat (~60 seconds)
Start the daemon (if not already running):
hands .Choose auth (default
nonefor local use; use bearer or oauth before a public tunnel):hands auth mode bearer # or: none | oauth hands token new my-laptop # when using bearerPrint the MCP URL:
hands connect --client generic # or: hands connect --client claude # or: hands connect --client cursorIn your chat product’s MCP / Connectors settings, add:
URL:
http://127.0.0.1:4877/mcp(or your tunneledhttps://…/mcp)Auth:
Authorization: Bearer YOUR_TOKENwhenauth.modeisbearer, or OAuth discovery whenauth.modeisoauth(see docs/CONNECTORS.md)
For a temporary public URL (no Cloudflare account):
hands tunnel quick
# or: hands . --tunnel-quickFull recipes: docs/CONNECTORS.md. Stable hostname: docs/TUNNEL.md.
Why Hands
Safety modes —
readonly,review(approve edits/shell),auto(still jailed and denylisted)Path jail — workspace-only paths; blocks secrets and sensitive dotfiles
Shadow-git checkpoints — restore file snapshots without touching your repo
HEADRich tools — read/search/edit, processes, git, quality helpers, Playwright browser tools
Custom plugins — drop tools in
~/.hands/tools/(docs/PLUGINS.md)
Details: docs/SAFETY.md, docs/THREAT-MODEL.md.
Tools
See docs/TOOLS.md for the full tool reference.
Documentation
Doc | Topic |
All | |
ChatGPT, Claude, Cursor, Cloud Code, generic MCP | |
Cloudflare quick, token, and named tunnels | |
MCP tool catalog | |
Modes, jail, approvals, checkpoints | |
Custom tools | |
Common issues | |
Default branch and repo settings | |
MCP IDE fork integration | |
Security notes |
Repository layout
packages/shared zod schemas
packages/core jail, edits, checkpoints, search, processes, approvals, tunnel
packages/tools MCP tool implementations + plugin loader
packages/server Fastify + MCP Streamable HTTP + control API
packages/cli hands binary
apps/ui React approval UIDevelopment
pnpm check # lint, format check, typecheck, test
pnpm format # Prettier (also on save if you use the recommended VS Code extension)
pnpm test
pnpm buildOpen the repo in Cursor/VS Code and install the recommended Prettier extension (.vscode/extensions.json) for format-on-save.
CI runs on push/PR to main via .github/workflows/ci.yml.
Contributions welcome—see CONTRIBUTING.md and run pnpm check before opening a PR.
Upgrading from editer
If you used the previous editer CLI and ~/.editer layout:
Stop any running daemon (
editer stopor kill the old process).Install the new binary:
pnpm run install:global(provideshands).On first run, Hands renames
~/.editer→~/.handsand project.editer→.handswhen the new paths do not exist yet.Re-paste MCP settings from
hands connect(connector JSON key is nowhands, notediter).Remove the old shim at
~/.local/bin/editerif you no longer need it.
License
Related
hands-mcp can be embedded as a git submodule in MCP IDE (a Code-OSS workbench that supervises the daemon). See docs/MCP-IDE.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLocal MCP server bridging ChatGPT Web to local tools for file, shell, git, test, and process management with secure policy controls.MIT
- AlicenseCqualityBmaintenanceLocal-first MCP runtime for coding agents with bounded workspace access, content-preconditioned writes, AST search, LSP navigation and diagnostics, and Git status/diff. Designed to give coding agents useful repository access without treating unrestricted shell access as the default integration boundary.133MIT
- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT and other MCP clients to browse, search, edit and upload files, run commands and interactive terminals, inspect Git history and worktrees, dispatch coding agents, and install composable plugins within locally registered workspaces. Requests execute under the user's own machine with per-request approval or auto-approval, keeping files, tasks and results local unless explicitly returned.1MIT
- AlicenseNot gradedqualityAmaintenanceConnects ChatGPT and MCP clients to authorized local development environments, enabling secure file access, shell execution, persistent tasks, browser/desktop control, and remote management of projects.17MIT