{"_id":"@cyberistic/jj-mcp-server","_rev":"3-f8b119712da5a845e7c1c055043f9a3b","name":"@cyberistic/jj-mcp-server","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@cyberistic/jj-mcp-server","version":"0.1.0","keywords":["jj","jujutsu","mcp","model-context-protocol","effect","vcs","jjcow","jjw","workspaces"],"license":"MIT","_id":"@cyberistic/jj-mcp-server@0.1.0","maintainers":[{"name":"cyberistic","email":"Cyb3ristic@gmail.com"}],"homepage":"https://github.com/Cyberistic/jj-mcp-server","bugs":{"url":"https://github.com/Cyberistic/jj-mcp-server/issues"},"bin":{"jj-mcp-server":"src/cli.ts"},"dist":{"shasum":"bd405999c07710b40422bb5257b4197ba4d494a1","tarball":"https://registry.npmjs.org/@cyberistic/jj-mcp-server/-/jj-mcp-server-0.1.0.tgz","fileCount":12,"integrity":"sha512-6N703T3tYWS02I+nTKdIeLbHgCHiMGv95w27nfIJ4CqXw5ybsCYl+7INqAGkmLMXfger5f6SS1/yfxLWR43f9g==","signatures":[{"sig":"MEUCIH1Tk/74MZMlEbISmL7q7QqEtbhAj1K5uA1G03i4ncWcAiEA+rFHpowgBm7PwQKsQwt24of1+KdZcNK7PGBUdjL8JTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48900},"type":"module","engines":{"node":">=22.18"},"gitHead":"8c1783fe35700d708c62b6748b013c73a267e562","scripts":{"fmt":"oxfmt .","lint":"oxlint .","build":"nub compile src/cli.ts","start":"nub src/cli.ts","prepare":"lefthook install","typecheck":"tsc --noEmit"},"_npmUser":{"name":"cyberistic","email":"Cyb3ristic@gmail.com"},"repository":{"url":"git+https://github.com/Cyberistic/jj-mcp-server.git","type":"git"},"_npmVersion":"9.6.6","description":"Model Context Protocol server for Jujutsu (jj) version control, built on Effect v4. Optional first-class support for jjCoW (jjw) workspaces.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"effect":"4.0.0-rc.112","@effect/platform-node":"4.0.0-rc.112"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.66.0","oxlint":"^1.81.0","lefthook":"^2.1.12","typescript":"^7","@types/node":"^26","@nubjs/types":">=0.4.13 <=0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/jj-mcp-server_0.1.0_1788753020902_0.3237060819043718","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cyberistic/jj-mcp-server","version":"0.1.1","keywords":["jj","jujutsu","mcp","model-context-protocol","effect","vcs","jjcow","jjw","workspaces"],"license":"MIT","_id":"@cyberistic/jj-mcp-server@0.1.1","maintainers":[{"name":"cyberistic","email":"Cyb3ristic@gmail.com"}],"homepage":"https://github.com/Cyberistic/jj-mcp-server","bugs":{"url":"https://github.com/Cyberistic/jj-mcp-server/issues"},"bin":{"jj-mcp-server":"dist/cli.cjs"},"dist":{"shasum":"525b2f6f83b8024ab45b17b72ddb7c52177b57b5","tarball":"https://registry.npmjs.org/@cyberistic/jj-mcp-server/-/jj-mcp-server-0.1.1.tgz","fileCount":4,"integrity":"sha512-No3roA2SZgdRkDsYC1LDlacjfpeMJjt5R9YudwHwFZSrjLOzQZt3aPGR0Othnas/WqYGg71VG4n6/ekeTKTStQ==","signatures":[{"sig":"MEUCIGyG6brDWhAng4ed3E5ECOlI6jgcqp4dMhwT6x8ZAsJgAiEAli8XB365/c75l3IHEyiVKapvL6C4gTvQEuLOkercgTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2144263},"type":"module","engines":{"node":">=22.18"},"gitHead":"66ccd28977359c63209b2463b4f16a3d7065d58d","scripts":{"fmt":"oxfmt .","lint":"oxlint .","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=cjs --banner:js=\"#!/usr/bin/env node\" --outfile=dist/cli.cjs","start":"node dist/cli.cjs","prepare":"lefthook install","typecheck":"tsc --noEmit","build:check":"node dist/cli.cjs < scripts/smoke.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"cyberistic","email":"Cyb3ristic@gmail.com"},"repository":{"url":"git+https://github.com/Cyberistic/jj-mcp-server.git","type":"git"},"_npmVersion":"9.6.6","description":"Model Context Protocol server for Jujutsu (jj) version control, built on Effect v4. Optional first-class support for jjCoW (jjw) workspaces.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"effect":"4.0.0-rc.112","@effect/platform-node":"4.0.0-rc.112"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.66.0","oxlint":"^1.81.0","esbuild":"^0.28.2","lefthook":"^2.1.12","typescript":"^7","@types/node":"^26","@nubjs/types":">=0.4.13 <=0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/jj-mcp-server_0.1.1_1788778825747_0.8511412415358826","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cyberistic/jj-mcp-server","version":"0.1.2","description":"Model Context Protocol server for Jujutsu (jj) version control, built on Effect v4. Optional first-class support for jjCoW (jjw) workspaces.","type":"module","license":"MIT","keywords":["jj","jujutsu","mcp","model-context-protocol","effect","vcs","jjcow","jjw","workspaces"],"bin":{"jj-mcp-server":"dist/cli.cjs"},"scripts":{"start":"node dist/cli.cjs","build":"node scripts/build.mjs","build:check":"node dist/cli.cjs < scripts/smoke.json","typecheck":"tsc --noEmit","lint":"oxlint .","fmt":"oxfmt .","prepare":"lefthook install","prepublishOnly":"npm run build"},"engines":{"node":">=22.18"},"dependencies":{"@effect/platform-node":"4.0.0-rc.112","effect":"4.0.0-rc.112"},"devDependencies":{"@nubjs/types":">=0.4.13 <=0.8.3","@types/node":"^26","esbuild":"^0.28.2","lefthook":"^2.1.12","oxfmt":"^0.66.0","oxlint":"^1.81.0","typescript":"^7"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/Cyberistic/jj-mcp-server.git"},"homepage":"https://github.com/Cyberistic/jj-mcp-server","bugs":{"url":"https://github.com/Cyberistic/jj-mcp-server/issues"},"gitHead":"e08a09552df4f05281bc789840d8187e884f59eb","_id":"@cyberistic/jj-mcp-server@0.1.2","_nodeVersion":"26.8.1","_npmVersion":"9.6.6","dist":{"integrity":"sha512-A9RL7ivcctH/cYIhbQ4ygaZYg8z0wSGXzv3sG7BgalD1TVsfdF33W7PYKvIojhVT9feRiU/s7WznkGkycQf3ig==","shasum":"7de98ad98ed9f634aed8e2ab8d25042747f764dd","tarball":"https://registry.npmjs.org/@cyberistic/jj-mcp-server/-/jj-mcp-server-0.1.2.tgz","fileCount":4,"unpackedSize":2144765,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBFR9NAd00MKsJgbXxGMBIljRN3P0RTPKBp25OcCOq7tAiAcuH2WUhfC7s1UfFBgExIyOXcueh+KAcwXd+bZJkvM6g=="}]},"_npmUser":{"name":"cyberistic","email":"Cyb3ristic@gmail.com"},"directories":{},"maintainers":[{"name":"cyberistic","email":"Cyb3ristic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jj-mcp-server_0.1.2_1788780748008_0.7131067133597335"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-07T03:50:20.775Z","modified":"2026-09-07T11:32:28.324Z","0.1.0":"2026-09-07T03:50:21.049Z","0.1.1":"2026-09-07T11:00:25.883Z","0.1.2":"2026-09-07T11:32:28.164Z"},"bugs":{"url":"https://github.com/Cyberistic/jj-mcp-server/issues"},"license":"MIT","homepage":"https://github.com/Cyberistic/jj-mcp-server","keywords":["jj","jujutsu","mcp","model-context-protocol","effect","vcs","jjcow","jjw","workspaces"],"repository":{"type":"git","url":"git+https://github.com/Cyberistic/jj-mcp-server.git"},"description":"Model Context Protocol server for Jujutsu (jj) version control, built on Effect v4. Optional first-class support for jjCoW (jjw) workspaces.","maintainers":[{"name":"cyberistic","email":"Cyb3ristic@gmail.com"}],"readme":"# jj-mcp-server\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server for\n[Jujutsu (`jj`)](https://github.com/jj-vcs/jj) version control, built on\n[Effect v4](https://effect.website). Optional first-class support for\n[`jjCoW`](https://github.com/Cyberistic/jjCoW) (clone-on-write workspace\nmanager, ~40× faster than `jj workspace add`).\n\n- **Typed end-to-end**: parameter schemas are `effect/Schema` (decoded at the\n  boundary, not coerced at runtime); results are typed; errors are\n  `Schema.TaggedError` so the caller can pattern-match on `_tag`.\n- **Effect-native**: `Effect.gen`, scoped resources, tagged errors,\n  `Layer.launch`. No `any`, no thrown exceptions.\n- **Curated**: 22 `jj` tools + 7 `jjcow` tools — the day-to-day operations an\n  agent actually reaches for. Not 40 hand-rolled `args.push` blocks.\n- **Stable tool surface**: `jjcow` tools are always registered and fail at\n  call time with a typed `JjCowNotInstalled` error when `jjw` is missing,\n  so clients never see a different schema across hosts.\n- **Tiny payload**: bundled to a single self-contained `dist/cli.cjs`\n  (CJS, Node 22 target). `npx -y @cyberistic/jj-mcp-server` works with no\n  build step, no `nub` required, no native dependencies.\n\n## Install\n\n```sh\n# npm\nnpm install -g @cyberistic/jj-mcp-server\n\n# pnpm\npnpm add -g @cyberistic/jj-mcp-server\n\n# bunx (no install)\nbunx @cyberistic/jj-mcp-server\n```\n\nThen point your MCP client at the `jj-mcp-server` bin. The exact\nconfiguration depends on the client; for [opencode](https://opencode.ai):\n\n```json\n{\n  \"mcp\": {\n    \"jj\": {\n      \"type\": \"local\",\n      \"command\": [\"jj-mcp-server\"],\n      \"enabled\": true\n    }\n  }\n}\n```\n\nopencode exposes the tools as `jj_status`, `jj_log`, `jj_workspace_create`,\netc. The server name (`jj`) and tool name (`status`) are combined.\n\n## Uninstall\n\n```sh\nnpm uninstall -g @cyberistic/jj-mcp-server\n# or\npnpm remove -g @cyberistic/jj-mcp-server\n```\n\nThen remove the `jj` entry from your MCP client's config.\n\n## Tools\n\nTool names are unprefixed; the MCP client prepends its own server-name\nprefix (e.g. opencode's `jj_status`). All 29 tools always register,\neven when `jjw` is missing.\n\n### Meta — call first\n\n| Name in code       | Wraps                                                                                       |\n| ------------------ | ------------------------------------------------------------------------------------------- |\n| `workflow`         | Returns the jj mental model + canonical workflow. Read this before any non-trivial jj op. |\n\n### Read-only `jj` tools (16)\n\n| Name in code     | Wraps                                                                |\n| ---------------- | -------------------------------------------------------------------- |\n| `status`         | `jj status`                                                          |\n| `log`            | `jj log [-r revisions] [-n limit] [-T template] [-G] [-p]`             |\n| `show`           | `jj show [revision] [-T template] [-p]`                               |\n| `diff`           | `jj diff [-r revset] [-f from] [-t to] [--context N] [--summary\\|--stat]` |\n| `files`          | `jj file list [-r revision] [paths] [-T template]`                   |\n| `bookmark_list`  | `jj bookmark list [--all-remotes] [--remote] [--tracked] [-T template]` |\n| `git_fetch`      | `jj git fetch [--all-remotes] [--remote R] [-b branch]`              |\n| `workspace_root` | `jj workspace root`                                                  |\n| `op_log`         | `jj op log [-n limit] [-T template] [-G] [-p]`                        |\n\n### Mutating `jj` tools (13)\n\n| Name in code       | Wraps                                                  |\n| ------------------ | ------------------------------------------------------ |\n| `describe`         | `jj describe -m message [revision]`                    |\n| `new`              | `jj new [revisions...] [-m message] [--no-edit]`       |\n| `abandon`          | `jj abandon [revisions...] [--retain-bookmarks]`       |\n| `rebase`           | `jj rebase [-s source] [-d destination]`               |\n| `squash`           | `jj squash [--from] [--into] [-k]`                     |\n| `duplicate`        | `jj duplicate [revs...] [-d destination] [-A after] [-B before]` |\n| `bookmark_create`  | `jj bookmark create <name> [-r revision]`              |\n| `bookmark_set`     | `jj bookmark set <name> -r revision [--allow-backwards]` |\n| `bookmark_delete`  | `jj bookmark delete <names...>`                        |\n| `git_push`         | `jj git push [--remote R] [-b bookmark] [--all] [--tracked]` |\n| `resolve`          | `jj resolve [-r revision] [--list]`                    |\n| `undo`             | `jj undo`                                              |\n\n### Optional `jjcow` tools (7) — always registered; fail with `JjCowNotInstalled` if `jjw` is missing\n\n| Name in code          | Wraps                                                    |\n| --------------------- | -------------------------------------------------------- |\n| `workspace_create`    | `jjw create <name> [-r revision] [-b bookmark] [--no-cow] [--lazy]` |\n| `workspace_delete`    | `jjw delete [name] [-f] [-k]`                            |\n| `workspace_list`      | `jjw list [-v]`                                          |\n| `workspace_cleanup`   | `jjw cleanup [-n] [-f] [-k]`                            |\n| `repo_root`            | `jjw root`                                               |\n| `cow_version`          | `jjw version` (jjCoW binary version)                     |\n| `workspace_init`       | `jjw init <shell>` for `zsh`/`bash`/`fish` shell integration |\n\nInstall [`jjCoW`](https://github.com/Cyberistic/jjCoW) to enable the\n`workspace_*` tools:\n\n```sh\ngit clone https://github.com/Cyberistic/jjCoW\ncd jjCoW\njust build && just install\n```\n\nThen `workspace_*` tools start working without any change to the MCP\nserver. If `jjw` is not on `$PATH`, the tools return a typed\n`JjCowNotInstalled` error explaining how to install it.\n\n### What's deliberately **not** exposed\n\nThe keanemind-style reference exposes 40+ tools. We keep the surface\nsmall. If an agent needs `bookmark-track`, `git-remote-add`,\n`file-annotate`, `evolog`, `interdiff`, `revert`, `restore`, `edit`, or\nany of the `operation-*` forensics commands, they can shell out to\n`jj` directly. This keeps the tool catalog fast to scan and the LLM\nprompt smaller.\n\n## Error taxonomy\n\nEvery failure is a `Schema.TaggedError` with a stable `_tag`:\n\n| `_tag`               | Meaning                                                                |\n| -------------------- | ---------------------------------------------------------------------- |\n| `JjError`            | Catch-all for runtime failures (e.g. spawn error when `jj` is missing). |\n| `CommandFailed`      | `jj` or `jjw` exited non-zero. Carries `exitCode` + `stderr`.          |\n| `NotARepository`     | The target `cwd` / `repoPath` isn't inside a jj repo.                  |\n| `JjCowNotInstalled`  | `jjw` isn't on `$PATH`. Install [jjCoW](https://github.com/Cyberistic/jjCoW). |\n\n## Library use\n\nThe bin is the canonical entry; this package also exports the underlying\n`Layer` and `Toolkit`s so an embedder can splice them into a richer\nlayer graph:\n\n```ts\nimport { MainLayer, JjToolkit, JjCowToolkit } from \"@cyberistic/jj-mcp-server\";\n```\n\n## Development\n\nThis package uses [nub](https://nubjs.com) for tooling.\n\n```sh\nnub install                # install deps\nnub run build              # esbuild src/cli.ts → dist/cli.cjs\nnub run build:check        # node dist/cli.cjs < scripts/smoke.json\nnub run typecheck          # tsc --noEmit\nnub run lint               # oxlint .\nnub run fmt                # oxfmt .\nnub scripts/smoke.ts       # print the tool catalogues\n```\n\n`lefthook` runs `oxfmt` + `oxlint` on pre-commit and `tsc --noEmit`\non pre-push (`LEFTHOOK=0` skips). `prepublishOnly` runs the build so\nthe bundled `dist/cli.cjs` matches the source before every publish.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}