
Cinch
io.github.yusufkadryPublished by GitHub account yusufkadryv0.1.1Updated Oct 24, 2026
Run AI-generated code safely. gVisor-isolated Python/JS sandboxes for any MCP client. Pay per run.
Overview
Lets an assistant run short Python or JavaScript programs in a remote gVisor-isolated sandbox and read back stdout, stderr, exit code, and duration.
- What you can do
- Exposes one tool, execute_code, which runs a self-contained Python or JavaScript program and returns stdout, stderr, exit code, and duration. Each call gets a clean, disposable sandbox on Cinch's infrastructure with no access to your machine, filesystem, or local network. The environment is deliberately minimal: Python 3.12 and Node 20, standard library only, no network, read-only root, a small writable /tmp, 256 MB memory, 0.5 CPU, and a 10-second limit. State does not persist between calls.
- When to use it
- Useful when you want an assistant to actually execute the code it writes and see real output, rather than handing you a snippet to run yourself. Fits small, self-contained calculations, parsing, or algorithm checks that need only the standard library. Not suitable for work needing third-party packages, network access, large memory, or long runtimes.
- Requirements
- A local Node.js runtime (Node 18 or newer) since it runs via npx as a stdio process. A Cinch API key supplied in the CINCH_API_KEY environment variable, obtained from cinch.codes. Network access to the Cinch API endpoint, overridable with CINCH_BASE_URL; optional client timeout via CINCH_TIMEOUT_MS. Desktop MCP clients only.
Installation
In SourceWeft
- Open Cinch in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@cinch-codes/mcp
MCP server for Cinch. Gives your AI assistant a real sandbox to run code in.
Without it, an assistant writes code and you run it yourself. With it, the assistant runs the code and reads the actual output — inside a gVisor-isolated container on Cinch's infrastructure, with no access to your machine, filesystem, or local network.
Pay per execution. No subscription floor.
Setup
Get an API key at cinch.codes, then add the server to your MCP client.
Claude Desktop — claude_desktop_config.json:
Claude Desktop on Windows — same file, but Windows can't spawn npx directly, so wrap it with cmd /c:
Claude Code (macOS/Linux):
Claude Code (Windows):
Cursor — .cursor/mcp.json, same shape as the Claude Desktop config above.
Restart the client. That's it — no install step, npx fetches it on first run.
What it exposes
execute_code
Runs a self-contained Python or JavaScript program and returns stdout, stderr, exit code, and duration.
Each call gets a clean sandbox. State does not persist between calls, so every snippet needs to stand on its own.
The sandbox environment
Deliberately minimal. Worth knowing before you wonder why an import failed:
The tool description tells the model all of this up front, so it writes stdlib-only code instead of reaching for numpy and failing on the first call.
Configuration
Troubleshooting
Windows: "Failed to connect" in claude mcp list — you're missing the cmd /c wrapper. Windows resolves npx to a batch script that can't be spawned directly; re-add the server using the Windows command above.
Windows: npm error ENOENT ... AppData\Roaming\npm — some Node installs never create npm's global folder, and npx refuses to run without it. Create it once and retry:
Server exits immediately with "CINCH_API_KEY is not set" — the env var didn't reach the server. In Claude Code, put -e CINCH_API_KEY=... before the server name in claude mcp add. In config files, check the env block is inside the cinch entry.
Debugging any connection failure — run the server directly to see the real error instead of a generic status:
Correct behavior is cinch-mcp ... ready followed by silence — an MCP server waits for a client. Anything else printed is the actual failure.
Why sandboxed execution
Code written by a model is untrusted code — nothing reviewed it before it ran. Executing it directly on your machine means handing it your filesystem, your network, and your credentials. Cinch runs it somewhere else entirely, in a disposable container with kernel-level isolation, and sends back only the output.
Notes
- Requires Node 18 or newer.
- Output is capped at 20,000 characters per stream to protect your context window; anything beyond that is truncated with a marker.
- Runs that time out or exit non-zero are returned as tool errors, so the assistant knows the code failed and can correct it.
- Out-of-credit responses are surfaced clearly and instruct the assistant not to retry, so a drained balance does not turn into a retry loop.
Links
- cinch.codes
- JS/TS SDK:
@cinch-codes/pangolin - Python SDK:
pangolin-sdk
MIT
Source: README.md at commit 2309d48
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.