Skip to main content
Glama
README.md
# sl-mcp

MCP server for [Sapling](https://sapling-scm.com/) (`sl`). Gives LLMs structured access to Sapling repos with built-in safety guardrails.

## Prerequisites

- [Sapling](https://sapling-scm.com/) installed and on your PATH
- Node.js 18+

## Install

### Claude Code

```bash
claude mcp add --transport stdio sl -- npx -y sl-mcp
```

Restart Claude Code. Verify with `/mcp` — you should see the `sl` server listed.

### Other MCP clients

Add to your MCP config file (`.mcp.json`, `claude_desktop_config.json`, etc.):

```json
{
  "mcpServers": {
    "sl": {
      "command": "npx",
      "args": ["-y", "sl-mcp"]
    }
  }
}
```

## Tools

22 tools across three tiers:

| Tier | Tools | Confirmation |
|------|-------|-------------|
| **Read** | `sl_status` `sl_diff` `sl_log` `sl_show` `sl_blame` `sl_cat` `sl_root` `sl_smartlog` | None |
| **Write** | `sl_goto` `sl_commit` `sl_amend` `sl_rebase` `sl_shelve` `sl_unshelve` `sl_add` `sl_remove` `sl_forget` `sl_revert` `sl_undo` | Destructive ops warn LLM to confirm |
| **Remote** | `sl_pull` `sl_push` `sl_pr_submit` | Always confirm with user |

## Safety

- Force push to `main`/`master` is **blocked server-side** (not just a warning)
- Destructive tools (rebase, revert, goto --clean) include confirmation guidance in tool descriptions
- Remote tools always instruct the LLM to confirm before executing

## Configuration

| Env var | Default | Description |
|---------|---------|-------------|
| `SL_MCP_BINARY` | `sl` | Path to Sapling binary |
| `SL_MCP_TIMEOUT` | `30000` | Command timeout in ms |

## License

MIT