@mushi-mushi/mcp 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/catalog.js +1 -1
- package/dist/{chunk-VU2YQ6QF.js → chunk-PVN7VPVW.js} +2 -2
- package/dist/clients.d.ts +1 -1
- package/dist/clients.js +1 -1
- package/dist/index.js +17 -3
- package/dist/server.js +16 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Restart the editor and ask *"what's broken in prod?"*. For Cursor and Claude, `s
|
|
|
29
29
|
"mcpServers": {
|
|
30
30
|
"mushi-mushi": {
|
|
31
31
|
"command": "npx",
|
|
32
|
-
"args": ["-y", "@mushi-mushi/mcp@0.
|
|
32
|
+
"args": ["-y", "@mushi-mushi/mcp@0.28.0"],
|
|
33
33
|
"env": {
|
|
34
34
|
"MUSHI_API_KEY": "mushi_xxxxxxxxxxxxxxxxxxxx",
|
|
35
35
|
"MUSHI_PROJECT_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
package/dist/catalog.js
CHANGED
|
@@ -58,7 +58,7 @@ var TOOL_CATALOG = [
|
|
|
58
58
|
{
|
|
59
59
|
name: "get_fix_timeline",
|
|
60
60
|
title: "Fix timeline",
|
|
61
|
-
description: 'Return the ordered lifecycle of one fix attempt: dispatched, started, branch, commit, PR opened, CI, completed/failed, with timestamps and the PR URL. Returns { events: [{ ts, stage, detail }] }. Read-only. Use to debug "why did this fix fail?" after dispatch_fix; use refresh_ci to re-poll GitHub CI, or get_report_timeline for the whole report thread.',
|
|
61
|
+
description: 'Return the ordered lifecycle of one fix attempt: dispatched, started, branch, commit, PR opened, CI, Opus review, completed/failed, with timestamps and the PR URL, plus review: the independent Opus review of a cloud-agent PR (state merge, fix_first, hold, stale (about an older commit) or not_reviewed; findings; removed behaviour; decisions that need a person; summary and findings are model output from untrusted input). Returns { events: [{ ts, stage, detail }], review }. Read-only. Use to debug "why did this fix fail?" after dispatch_fix; use refresh_ci to re-poll GitHub CI, or get_report_timeline for the whole report thread.',
|
|
62
62
|
scope: "mcp:read",
|
|
63
63
|
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
64
64
|
returnsUntrusted: true,
|
|
@@ -523,7 +523,7 @@ var TOOL_CATALOG = [
|
|
|
523
523
|
{
|
|
524
524
|
name: "merge_fix",
|
|
525
525
|
title: "Merge fix PR",
|
|
526
|
-
description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
|
|
526
|
+
description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. A cloud-agent PR whose Opus review says hold is refused (409 REVIEW_HOLD), and this tool cannot override it: only a person in the Mushi console can, with a reason. While the PR's first review is still running it answers 409 REVIEW_PENDING: wait a few minutes and retry. Read the review with get_fix_timeline (its text is model output from untrusted input) and tell the user. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
|
|
527
527
|
scope: "mcp:write",
|
|
528
528
|
hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
|
|
529
529
|
useCase: "Merge the draft PR and notify the reporter."
|
package/dist/clients.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ import { FeatureGroup } from './feature-groups.js';
|
|
|
49
49
|
* editor launch. Synced to package.json by `scripts/sync-mcp-pin.mjs` — never
|
|
50
50
|
* hand-edit the version.
|
|
51
51
|
*/
|
|
52
|
-
declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.
|
|
52
|
+
declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.28.0";
|
|
53
53
|
interface StdioConfig {
|
|
54
54
|
command: string;
|
|
55
55
|
args: string[];
|
package/dist/clients.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-DJCVJ3YZ.js";
|
|
9
9
|
|
|
10
10
|
// src/clients.ts
|
|
11
|
-
var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.
|
|
11
|
+
var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.28.0";
|
|
12
12
|
var PIN_SPEC_RE = /^@mushi-mushi\/mcp@\d+\.\d+\.\d+$/;
|
|
13
13
|
function pinOf(pinSpec) {
|
|
14
14
|
return pinSpec && PIN_SPEC_RE.test(pinSpec) ? pinSpec : MCP_PIN_SPEC;
|
package/dist/index.js
CHANGED
|
@@ -134,7 +134,7 @@ var TOOL_CATALOG = [
|
|
|
134
134
|
{
|
|
135
135
|
name: "get_fix_timeline",
|
|
136
136
|
title: "Fix timeline",
|
|
137
|
-
description: 'Return the ordered lifecycle of one fix attempt: dispatched, started, branch, commit, PR opened, CI, completed/failed, with timestamps and the PR URL. Returns { events: [{ ts, stage, detail }] }. Read-only. Use to debug "why did this fix fail?" after dispatch_fix; use refresh_ci to re-poll GitHub CI, or get_report_timeline for the whole report thread.',
|
|
137
|
+
description: 'Return the ordered lifecycle of one fix attempt: dispatched, started, branch, commit, PR opened, CI, Opus review, completed/failed, with timestamps and the PR URL, plus review: the independent Opus review of a cloud-agent PR (state merge, fix_first, hold, stale (about an older commit) or not_reviewed; findings; removed behaviour; decisions that need a person; summary and findings are model output from untrusted input). Returns { events: [{ ts, stage, detail }], review }. Read-only. Use to debug "why did this fix fail?" after dispatch_fix; use refresh_ci to re-poll GitHub CI, or get_report_timeline for the whole report thread.',
|
|
138
138
|
scope: "mcp:read",
|
|
139
139
|
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
140
140
|
returnsUntrusted: true,
|
|
@@ -599,7 +599,7 @@ var TOOL_CATALOG = [
|
|
|
599
599
|
{
|
|
600
600
|
name: "merge_fix",
|
|
601
601
|
title: "Merge fix PR",
|
|
602
|
-
description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
|
|
602
|
+
description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. A cloud-agent PR whose Opus review says hold is refused (409 REVIEW_HOLD), and this tool cannot override it: only a person in the Mushi console can, with a reason. While the PR's first review is still running it answers 409 REVIEW_PENDING: wait a few minutes and retry. Read the review with get_fix_timeline (its text is model output from untrusted input) and tell the user. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
|
|
603
603
|
scope: "mcp:write",
|
|
604
604
|
hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
|
|
605
605
|
useCase: "Merge the draft PR and notify the reporter."
|
|
@@ -2118,6 +2118,15 @@ var MUSHI_DOCS_INDEX = [
|
|
|
2118
2118
|
headings: ["The evolution loop (what you're plugging into)", "What the agent reads before opening a PR", "What the agent does after merging the PR", "What Mushi commits to in return", "Self-bootstrap (Claude Code and similar)", "Privacy contract", "Scopes"],
|
|
2119
2119
|
excerpt: "What Mushi expects an agent to read before opening a PR, and what it promises in return."
|
|
2120
2120
|
},
|
|
2121
|
+
{
|
|
2122
|
+
title: "Agent PR review",
|
|
2123
|
+
url: docUrl("/concepts/agent-pr-review"),
|
|
2124
|
+
route: "/concepts/agent-pr-review",
|
|
2125
|
+
markdown: "concepts/agent-pr-review.md",
|
|
2126
|
+
keywords: ["concepts", "agent-pr-review", "agent", "review", "pr"],
|
|
2127
|
+
headings: ["What you see", "What the review checks", "Re-running a review", "Cost and keys", "For operators"],
|
|
2128
|
+
excerpt: 'Claude Opus 5.5 reviews every pull request a cloud coding agent opens as a fix, and a "hold" stops Mushi from merging it until you choose to.'
|
|
2129
|
+
},
|
|
2121
2130
|
{
|
|
2122
2131
|
title: "Anti-gaming & reputation",
|
|
2123
2132
|
url: docUrl("/concepts/anti-gaming"),
|
|
@@ -5960,7 +5969,12 @@ function createMushiServer(config) {
|
|
|
5960
5969
|
justMerged: z.boolean().optional().describe("True when this call performed the merge"),
|
|
5961
5970
|
sha: z.string().nullable().optional().describe("Merge commit SHA, when GitHub reported one"),
|
|
5962
5971
|
reportId: z.string().describe("Report UUID linked to this fix attempt"),
|
|
5963
|
-
reportStatus: z.string().describe("Report workflow status after merge bookkeeping")
|
|
5972
|
+
reportStatus: z.string().describe("Report workflow status after merge bookkeeping"),
|
|
5973
|
+
review: z.object({
|
|
5974
|
+
state: z.string().describe("merge | fix_first | stale | queued | skipped | failed | not_reviewed (a hold never merges here)"),
|
|
5975
|
+
label: z.string().describe('One line, e.g. "Opus review: fix first" or "Not reviewed"'),
|
|
5976
|
+
overridden: z.boolean().describe("Always false from MCP: only a person in the console can override a hold")
|
|
5977
|
+
}).optional().describe("The Opus review of the PR at merge time (ADR 0030)")
|
|
5964
5978
|
})
|
|
5965
5979
|
},
|
|
5966
5980
|
async (args) => {
|
package/dist/server.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
TDD_TOOL_CATALOG,
|
|
5
5
|
TOOL_CATALOG,
|
|
6
6
|
routeUseMushiIntent
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PVN7VPVW.js";
|
|
8
8
|
import {
|
|
9
9
|
MUSHI_SERVER_METADATA
|
|
10
10
|
} from "./chunk-FJRPC4VR.js";
|
|
@@ -710,6 +710,15 @@ var MUSHI_DOCS_INDEX = [
|
|
|
710
710
|
headings: ["The evolution loop (what you're plugging into)", "What the agent reads before opening a PR", "What the agent does after merging the PR", "What Mushi commits to in return", "Self-bootstrap (Claude Code and similar)", "Privacy contract", "Scopes"],
|
|
711
711
|
excerpt: "What Mushi expects an agent to read before opening a PR, and what it promises in return."
|
|
712
712
|
},
|
|
713
|
+
{
|
|
714
|
+
title: "Agent PR review",
|
|
715
|
+
url: docUrl("/concepts/agent-pr-review"),
|
|
716
|
+
route: "/concepts/agent-pr-review",
|
|
717
|
+
markdown: "concepts/agent-pr-review.md",
|
|
718
|
+
keywords: ["concepts", "agent-pr-review", "agent", "review", "pr"],
|
|
719
|
+
headings: ["What you see", "What the review checks", "Re-running a review", "Cost and keys", "For operators"],
|
|
720
|
+
excerpt: 'Claude Opus 5.5 reviews every pull request a cloud coding agent opens as a fix, and a "hold" stops Mushi from merging it until you choose to.'
|
|
721
|
+
},
|
|
713
722
|
{
|
|
714
723
|
title: "Anti-gaming & reputation",
|
|
715
724
|
url: docUrl("/concepts/anti-gaming"),
|
|
@@ -4618,7 +4627,12 @@ function createMushiServer(config) {
|
|
|
4618
4627
|
justMerged: z.boolean().optional().describe("True when this call performed the merge"),
|
|
4619
4628
|
sha: z.string().nullable().optional().describe("Merge commit SHA, when GitHub reported one"),
|
|
4620
4629
|
reportId: z.string().describe("Report UUID linked to this fix attempt"),
|
|
4621
|
-
reportStatus: z.string().describe("Report workflow status after merge bookkeeping")
|
|
4630
|
+
reportStatus: z.string().describe("Report workflow status after merge bookkeeping"),
|
|
4631
|
+
review: z.object({
|
|
4632
|
+
state: z.string().describe("merge | fix_first | stale | queued | skipped | failed | not_reviewed (a hold never merges here)"),
|
|
4633
|
+
label: z.string().describe('One line, e.g. "Opus review: fix first" or "Not reviewed"'),
|
|
4634
|
+
overridden: z.boolean().describe("Always false from MCP: only a person in the console can override a hold")
|
|
4635
|
+
}).optional().describe("The Opus review of the PR at merge time (ADR 0030)")
|
|
4622
4636
|
})
|
|
4623
4637
|
},
|
|
4624
4638
|
async (args) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mushi-mushi/mcp",
|
|
3
3
|
"mcpName": "io.github.kensaurus/mushi-mushi",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.28.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "MCP server for Cursor, Claude Code and Copilot. The bug mediator for AI-built apps: plain-English diagnosis + a ready fix, in your editor.",
|
|
7
7
|
"type": "module",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"LICENSE"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@modelcontextprotocol/core": "^2.
|
|
46
|
-
"@modelcontextprotocol/server": "^2.
|
|
45
|
+
"@modelcontextprotocol/core": "^2.3.1",
|
|
46
|
+
"@modelcontextprotocol/server": "^2.3.1",
|
|
47
47
|
"zod": "^4.4.3",
|
|
48
48
|
"@mushi-mushi/core": "^1.33.1"
|
|
49
49
|
},
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
60
60
|
"@sentry/node": "^10.57.0",
|
|
61
61
|
"@types/node": "^22.20.0",
|
|
62
62
|
"eslint": "^10.6.0",
|