{"_id":"@cubyts/mcp","_rev":"4-0ff1944e49942599a920b913aac922a0","name":"@cubyts/mcp","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@cubyts/mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","cubyts","code-review","cursor","claude-code"],"license":"UNLICENSED","_id":"@cubyts/mcp@0.1.0","maintainers":[{"name":"infracubyts","email":"infra@cubyts.com"},{"name":"yadhucubyts","email":"yadhu@cubyts.com"}],"homepage":"https://cubyts.com","bin":{"cubyts-mcp":"bin/cubyts-mcp.js"},"dist":{"shasum":"8f95ffcca38e842a2df6391156fabe3c960efea2","tarball":"https://registry.npmjs.org/@cubyts/mcp/-/mcp-0.1.0.tgz","fileCount":10,"integrity":"sha512-WUi/0c93pBmfcRk1sxJXY29Z8uE9VT/8iSKW9RuQ9rFoQvrCC+vtAo0rhMHwv43SNqUshTVN1mmBLG60EtyQrQ==","signatures":[{"sig":"MEYCIQCpDzVft4X1L/JjyhV2Qc9QZJaHAO/yuhvTGwjr665sDAIhAKmODmK/npdj9XPq8uaUATHGQyEKuoUyO/oBlzz1uoqh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37407},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"7db365c15f15e40c7fbc722b9db564f74550ee43","scripts":{"start":"node bin/cubyts-mcp.js"},"_npmUser":{"name":"infracubyts","email":"infra@cubyts.com"},"_npmVersion":"10.8.2","description":"Local MCP server for Cubyts code-review context. Forwards to the Cubyts backend.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^4.4.1","simple-git":"^3.27.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1779365458322_0.6423190580640166","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cubyts/mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","cubyts","code-review","cursor","claude-code"],"license":"UNLICENSED","_id":"@cubyts/mcp@0.1.1","maintainers":[{"name":"amol.cubyts","email":"amol@cubyts.com"},{"name":"infracubyts","email":"infra@cubyts.com"},{"name":"yadhucubyts","email":"yadhu@cubyts.com"}],"homepage":"https://cubyts.com","bin":{"cubyts-mcp":"bin/cubyts-mcp.js"},"dist":{"shasum":"b73c1d55d2315ea329d38d97b47fe3039c1b5eb7","tarball":"https://registry.npmjs.org/@cubyts/mcp/-/mcp-0.1.1.tgz","fileCount":11,"integrity":"sha512-EUp6XN8amkEMcdgLSvdgAgSCsH1b7yB/ofQE8GMUkVVm784ryeb0m0Jkt6FoyfOCTVKOh/nMllAV/fxPSVYnOg==","signatures":[{"sig":"MEUCIGeDbUNaG6KBGw1XkwGQLdt7LII0A4ys1crkQmlS4NoNAiEA46uuRusWas/a7qUxAvnyJI+Xlr8f7wU5xmRaa9yxYYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44328},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"2079ebac0d253ecea427d5584afedc90c67b7458","scripts":{"start":"node bin/cubyts-mcp.js"},"_npmUser":{"name":"amol.cubyts","email":"amol@cubyts.com"},"_npmVersion":"10.8.2","description":"Local MCP server for Cubyts code-review context. Forwards to the Cubyts backend.","directories":{},"_nodeVersion":"20.19.1","dependencies":{"zod":"^4.4.1","simple-git":"^3.27.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.1_1781686706709_0.08667260284498512","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@cubyts/mcp","version":"1.0.0","description":"Local MCP server for Cubyts code-review context. Forwards to the Cubyts backend.","license":"UNLICENSED","publishConfig":{"access":"public"},"homepage":"https://cubyts.com","keywords":["mcp","model-context-protocol","cubyts","code-review","cursor","claude-code"],"engines":{"node":">=18.0.0"},"main":"src/server.js","bin":{"cubyts-mcp":"bin/cubyts-mcp.js"},"scripts":{"start":"node bin/cubyts-mcp.js"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","simple-git":"^3.27.0","zod":"^4.4.1"},"_id":"@cubyts/mcp@1.0.0","gitHead":"93aae2d910c52de4dce7fa103d4657d0e83b9a58","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"integrity":"sha512-HthIz5qKcJ0veA1SX22lRAlvKjN1VqOmvcXDBNZMQdbOZMiNiddi3ka7t0/3ZKHZnNws8guimSMAaLVeD1zzlQ==","shasum":"9237000182b7fa2ac14e3467b9b40f5721002617","tarball":"https://registry.npmjs.org/@cubyts/mcp/-/mcp-1.0.0.tgz","fileCount":11,"unpackedSize":43206,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHfqv8vvi6u2TNSs37HjdY0cTklh6XCIekOSZlv8tzuyAiEAusCEL59tCzbpVPWLWSOr7KX06CSU20CyL9Ym/Zg8Qxs="}]},"_npmUser":{"name":"infracubyts","email":"infra@cubyts.com"},"directories":{},"maintainers":[{"name":"amol.cubyts","email":"amol@cubyts.com"},{"name":"infracubyts","email":"infra@cubyts.com"},{"name":"yadhucubyts","email":"yadhu@cubyts.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.0.0_1782638579797_0.38456170129866596"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-21T12:10:58.116Z","modified":"2026-06-28T09:23:00.153Z","0.1.0":"2026-05-21T12:10:58.448Z","0.1.1":"2026-06-17T08:58:26.866Z","1.0.0":"2026-06-28T09:22:59.940Z"},"license":"UNLICENSED","homepage":"https://cubyts.com","keywords":["mcp","model-context-protocol","cubyts","code-review","cursor","claude-code"],"description":"Local MCP server for Cubyts code-review context. Forwards to the Cubyts backend.","maintainers":[{"name":"amol.cubyts","email":"amol@cubyts.com"},{"name":"infracubyts","email":"infra@cubyts.com"},{"name":"yadhucubyts","email":"yadhu@cubyts.com"}],"readme":"# @cubyts/mcp\n\nLocal MCP (Model Context Protocol) server for Cubyts code review.\n\nRuns as a stdio process spawned by your AI coding agent (Cursor, Claude Code, etc.). Gathers your local repo state — diff, changed files, base commit — and forwards to the Cubyts backend, which returns assembled review context.\n\n## Install\n\n```bash\nnpm install -g @cubyts/mcp\n```\n\nRequires Node.js 18+.\n\n## Configure\n\nSet two environment variables:\n\n```bash\nexport CUBYTS_MCP_TOKEN=\"<your-token>\"\nexport CUBYTS_API_URL=\"https://your-cubyts-server.example.com\"\n```\n\n- `CUBYTS_MCP_TOKEN` — JWT issued by your Cubyts admin (use the `/v3/mcp-token` endpoint or the admin UI).\n- `CUBYTS_API_URL` — Base URL of your Cubyts server. Defaults to `http://localhost:3030`.\n\nOptional:\n- `CUBYTS_BASE_BRANCH` — Override default-branch detection (e.g. `develop` if your repo uses something other than `main`/`master`).\n\n## Connect to your agent\n\n### Cursor\n\nEdit `~/.cursor/mcp.json` (or per-project `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"cubyts\": {\n      \"command\": \"cubyts-mcp\",\n      \"env\": {\n        \"CUBYTS_MCP_TOKEN\": \"...\",\n        \"CUBYTS_API_URL\": \"https://your-cubyts-server.example.com\"\n      }\n    }\n  }\n}\n```\n\nRestart Cursor. The `cubyts_review` and `cubyts_bugfix` tools will appear.\n\n### Claude Code\n\nEdit `~/.config/claude/claude_desktop_config.json` (location varies by OS):\n\n```json\n{\n  \"mcpServers\": {\n    \"cubyts\": {\n      \"command\": \"cubyts-mcp\",\n      \"env\": {\n        \"CUBYTS_MCP_TOKEN\": \"...\",\n        \"CUBYTS_API_URL\": \"https://your-cubyts-server.example.com\"\n      }\n    }\n  }\n}\n```\n\n## Tools\n\n### `cubyts_review`\nAssembles code review context for the current feature branch. Working state is gathered automatically — no arguments required.\n\nOptional arguments:\n- `ticket_id` — pin the review to a specific Jira/ADO ticket\n- `instruction` — verbatim developer prompt\n- `mode` — `focused` / `standard` / `deep`\n- `constraints` — `file_filter`, `exclude`, `method_filter`, `focus_area`, `priority_hint`\n\n### `cubyts_bugfix`\nBugfix context for a linked ticket. Currently a stub — returns guidance to proceed normally. Real implementation lands later.\n\n### `cubyts_store_findings`\nCalled by the agent after review/bugfix completes (driven by the `findings_callback` instruction in every payload). Persists findings server-side for analytics.\n\n## How it works\n\n```\nYour agent (Cursor/Claude Code)\n        │ stdio MCP\n        ▼\ncubyts-mcp (local Node process)\n        │ git + filesystem (gather working state)\n        │ HTTPS POST /v3/mcp/cubyts-review\n        ▼\nCubyts backend\n        │ JIT ingest, story resolution, blast radius, ...\n        ▼\nReturns assembled review context\n```\n\nWorking state collected on each `cubyts_review` invocation:\n- Repo identity (provider, owner, name, URL).\n- Current branch.\n- Base commit (merge-base with default branch, or `HEAD~1` fallback).\n- Head commit (or `null` if uncommitted changes exist).\n- Changed files: committed (base..HEAD) plus uncommitted (working tree).\n- Local overrides for files with both committed and uncommitted changes.\n- Raw unified diff.\n\nFiles >1 MiB and binary files are skipped (status preserved, content elided).\n\n## Troubleshooting\n\n**`CUBYTS_MCP_TOKEN env var is required`**\nSet the token before launching your agent — agents typically don't reload env after start.\n\n**`not inside a git repository`**\nOpen your project's repo as the workspace before invoking the tool.\n\n**`no \"origin\" remote configured`**\nThe repo has no remote. Add one (`git remote add origin <url>`) or use a different repo.\n\n**`could not resolve a base commit`**\nThe repo has no `main`/`master`/`develop` and no parent commit. Set `CUBYTS_BASE_BRANCH` to a ref that exists.\n\n**HTTP 401 from server**\nToken expired or wrong workspace. Generate a fresh token from your Cubyts admin.\n\n**HTTP 5xx from server**\nServer-side failure. Check Cubyts server logs and Langfuse traces.\n\n## License\n\nUNLICENSED — internal Cubyts package.","readmeFilename":"README.md"}