@mushi-mushi/mcp 0.20.1 → 0.21.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 +21 -4
- package/dist/catalog.js +1 -1
- package/dist/{chunk-TP2QQWDJ.js → chunk-FNDGCFSJ.js} +31 -10
- package/dist/{chunk-ZSVRLSW5.js → chunk-XSL2FPLV.js} +1 -0
- package/dist/clients.d.ts +1 -1
- package/dist/clients.js +2 -2
- package/dist/feature-groups.js +1 -1
- package/dist/index.js +759 -284
- package/dist/server.d.ts +10 -2
- package/dist/server.js +612 -250
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -123,7 +123,7 @@ The server speaks stdio MCP transport by default; your client launches it as a s
|
|
|
123
123
|
|
|
124
124
|
### 5. Hosted Streamable HTTP (no subprocess)
|
|
125
125
|
|
|
126
|
-
The Mushi backend now exposes the same tool catalog over the **Streamable HTTP** transport
|
|
126
|
+
The Mushi backend now exposes the same tool catalog over the **Streamable HTTP** transport (dual-era: MCP 2024-11-05 … 2025-11-25 legacy and the current 2026-07-28 revision) at `/functions/v1/mcp`. Use this when you want to skip the local subprocess; typical for OpenAI Agents SDK, ChatGPT Agent, hosted CrewAI, or any orchestrator that talks remote MCP:
|
|
127
127
|
|
|
128
128
|
```jsonc
|
|
129
129
|
// .cursor/mcp.json — example (hosted HTTP)
|
|
@@ -146,7 +146,7 @@ The Mushi backend now exposes the same tool catalog over the **Streamable HTTP**
|
|
|
146
146
|
|
|
147
147
|
### Feature groups (`?features=` / `MUSHI_FEATURES`)
|
|
148
148
|
|
|
149
|
-
Full catalog is **
|
|
149
|
+
Full catalog is **73 tools** (stdio / `MUSHI_FEATURES=all`). The hosted HTTP
|
|
150
150
|
endpoint exposes a leaner subset filtered by feature groups (see
|
|
151
151
|
`mcp-hosted-tool-manifest.json`). New installs now default to the lean
|
|
152
152
|
`triage,fixes,inventory,setup,docs` set automatically (stdio: when
|
|
@@ -212,6 +212,7 @@ The endpoint accepts JSON-RPC 2.0 over POST (returns `application/json` or `text
|
|
|
212
212
|
| `get_blast_radius` | Graph traversal showing other components a bug group touches |
|
|
213
213
|
| `get_knowledge_graph` | Traverse the knowledge graph from a seed component or page |
|
|
214
214
|
| `diagnose_setup` | Setup health in one call: `mode=full` (default) runs ingest + dispatch preflight, `mode=ingest` / `mode=dispatch` narrow it. Returns the single best next action. Run first when a user says setup is broken |
|
|
215
|
+
| `check_sdk_version` | Compare a published `@mushi-mushi/*` pin to `GET /v1/sdk/latest-version`. Returns `{ package, current, latest, outdated }` and, when outdated, Sentry-style `suggestedActions` (max 1). Does not bump the pin. |
|
|
215
216
|
| `activation_status` | Unified activation posture for the active project: required steps, SDK heartbeat, dispatch preflight, and the next best action |
|
|
216
217
|
| `get_report_timeline` | Ordered report timeline: the reporter/admin comment thread (including verify/reopen signals) plus fix, QA, and status lanes. Use when triaging whether an end user still sees a bug as unfixed |
|
|
217
218
|
| `list_projects` | Discover all Mushi projects accessible to this API key. Returns project id, name, and created date |
|
|
@@ -390,7 +391,7 @@ Spawns `dist/index.js` with a dummy unreachable endpoint and confirms it adverti
|
|
|
390
391
|
pnpm --filter @mushi-mushi/mcp build
|
|
391
392
|
pnpm --filter @mushi-mushi/mcp test:smoke
|
|
392
393
|
# OK; prints live tool/resource/prompt counts from the catalog
|
|
393
|
-
# (see packages/mcp/src/catalog.ts — currently
|
|
394
|
+
# (see packages/mcp/src/catalog.ts — currently 73 tools / 8 resources / 4 prompts)
|
|
394
395
|
```
|
|
395
396
|
|
|
396
397
|
### Layer 3; Full localhost E2E (real binary + real backend behaviour)
|
|
@@ -480,8 +481,24 @@ Both are complementary; use Sentry for exception noise, Mushi for "the user says
|
|
|
480
481
|
|
|
481
482
|
MIT
|
|
482
483
|
|
|
484
|
+
## More from KENSAURUS
|
|
485
|
+
|
|
486
|
+
| | App | What it is |
|
|
487
|
+
|---|---|---|
|
|
488
|
+
| <img src="https://kensaur.us/glot-it/icon-512.png" width="28" height="28" alt=""> | [Glot It](https://kensaur.us/glot-it/?utm_source=github&utm_medium=readme) | Learn Thai — bite-size lessons, smart flashcards, and an AI tutor |
|
|
489
|
+
| <img src="https://kensaur.us/yen-yen/icon.svg" width="28" height="28" alt=""> | [yen-yen](https://kensaur.us/yen-yen/?utm_source=github&utm_medium=readme) | Where did the money go? Now you'll know. A kakeibo for households |
|
|
490
|
+
| <img src="https://kensaur.us/the-wanting-mind/pwa-512x512.png" width="28" height="28" alt=""> | [The Wanting Mind](https://kensaur.us/the-wanting-mind/?utm_source=github&utm_medium=readme) | How the Battle Between Extraction and Generation Is Reshaping Our World — a 147,000-word interactive webbook with 268 concepts, 242 citations, and original illustrations |
|
|
491
|
+
| <img src="https://kensaur.us/help-her-take-photo/assets/apple-touch-icon.png" width="28" height="28" alt=""> | [Help Her Take Photo](https://kensaur.us/help-her-take-photo/?utm_source=github&utm_medium=readme) | Pair phones, direct the pose, nail the photo |
|
|
492
|
+
| <img src="https://talk.kensaur.us/pwa-192.png" width="28" height="28" alt=""> | [How to Talk to Girls](https://talk.kensaur.us/?utm_source=github&utm_medium=readme) | BYOK Claude practice coach for sticky chats |
|
|
493
|
+
| <img src="https://solo-boss.kensaur.us/apple-touch-icon.png" width="28" height="28" alt=""> | [一人社長 Solo Boss](https://solo-boss.kensaur.us/?utm_source=github&utm_medium=readme) | Bookkeeping and tax-filing co-pilot for one-person companies in Japan |
|
|
494
|
+
| <img src="https://tsumagoi.kensaur.us/apple-touch-icon.png" width="28" height="28" alt=""> | [Tsumagoi Work&Camp 嬬恋牧場](https://tsumagoi.kensaur.us/?utm_source=github&utm_medium=readme) | Coworking camp at 1,444 m — [Instagram](https://www.instagram.com/tsumagoicamp/) · [Facebook](https://www.facebook.com/profile.php?id=61592113053042) · [Maps](https://maps.app.goo.gl/JCNnTfsdQVHCS1FA7) |
|
|
495
|
+
| <img src="https://github.com/kensaurus.png" width="28" height="28" alt=""> | [cursor-kenji](https://github.com/kensaurus/cursor-kenji) | Ready-made playbooks for your AI coding editor |
|
|
496
|
+
| <img src="https://kensaur.us/favicon.svg" width="28" height="28" alt=""> | [KENSAURUS](https://kensaur.us/?view=portfolio&utm_source=github&utm_medium=readme) | Everything else built under the same roof |
|
|
497
|
+
|
|
498
|
+
All apps live under [kensaur.us](https://kensaur.us).
|
|
499
|
+
|
|
483
500
|
|
|
484
501
|
<!-- mushi-readme-stats-footer -->
|
|
485
502
|
---
|
|
486
503
|
|
|
487
|
-
<sub>Monorepo scale (July 2026):
|
|
504
|
+
<sub>Monorepo scale (July 2026): 58 edge functions · 347 SQL migrations · 13 outbound plugins · 11 inbound adapters · 19 pipeline agents. Canonical counts: <a href="https://github.com/kensaurus/mushi-mushi/blob/master/docs/stats.md">docs/stats.md</a> · <code>pnpm docs-stats</code></sub>
|
package/dist/catalog.js
CHANGED
|
@@ -139,6 +139,14 @@ var TOOL_CATALOG = [
|
|
|
139
139
|
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
140
140
|
useCase: "Why is Mushi setup broken \u2014 one call, clear next step."
|
|
141
141
|
},
|
|
142
|
+
{
|
|
143
|
+
name: "check_sdk_version",
|
|
144
|
+
title: "Check SDK freshness",
|
|
145
|
+
description: "Compare a published @mushi-mushi/* package version against the catalog (GET /v1/sdk/latest-version). Returns { package, current, latest, outdated } and, when outdated, suggestedActions (Sentry-style, max 1) pointing at search_mushi_docs plus the mushi-sdk-upgrade skill. Read-only. Use when Dependabot or mushi upgrade --check reports a drift, or before dispatching a fix that assumes a current SDK. Does not bump the pin \u2014 that stays a human/Dependabot change.",
|
|
146
|
+
scope: "mcp:read",
|
|
147
|
+
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
148
|
+
useCase: "Is this project on the current Mushi SDK?"
|
|
149
|
+
},
|
|
142
150
|
{
|
|
143
151
|
name: "search_mushi_docs",
|
|
144
152
|
title: "Search Mushi documentation",
|
|
@@ -160,7 +168,7 @@ var TOOL_CATALOG = [
|
|
|
160
168
|
{
|
|
161
169
|
name: "dispatch_fix",
|
|
162
170
|
title: "Dispatch Mushi fix agent",
|
|
163
|
-
description: 'Start a Mushi fix agent for a classified report; it writes a branch and opens a signed draft PR. Set agent="cursor_cloud" to dispatch a Cursor Cloud Agent (default uses the in-repo worker). Requires GitHub connected + an LLM key (run diagnose_setup mode=dispatch first). Returns {
|
|
171
|
+
description: 'Start a Mushi fix agent for a classified report; it writes a branch and opens a signed draft PR. Set agent="cursor_cloud" to dispatch a Cursor Cloud Agent (default uses the in-repo worker). Requires GitHub connected + an LLM key (run diagnose_setup mode=dispatch first). Returns { fixId, status } (fixId is the dispatch id; get_fix_timeline accepts it immediately); poll get_fix_timeline for progress and merge_fix when CI is green. Write; pass the same idempotencyKey to retry safely \u2014 without it each call starts a new attempt. Report must be classified \u2014 run triage_issue if not.',
|
|
164
172
|
scope: "mcp:write",
|
|
165
173
|
hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
|
|
166
174
|
useCase: "Let the in-repo agent attempt this fix for me (or: dispatch a Cursor Cloud Agent)."
|
|
@@ -295,6 +303,14 @@ var TOOL_CATALOG = [
|
|
|
295
303
|
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
296
304
|
useCase: "Analyze this bug report end-to-end and tell me what to do."
|
|
297
305
|
},
|
|
306
|
+
{
|
|
307
|
+
name: "triage_next_steps",
|
|
308
|
+
title: "What should I work on now?",
|
|
309
|
+
description: 'Prioritised "do this next" list for the project: blocked auto-fixes first (with the unblock action), then in-flight fixes to shepherd to merge, then user-felt classified reports by severity, with robot/cron chores (dependency bumps) last. Returns { steps: [{ priority, action, reason, tool, args }], summary }. Read-only. Call this first when the user asks "what needs my attention / what should I triage or fix".',
|
|
310
|
+
scope: "mcp:read",
|
|
311
|
+
hints: { readOnly: true, idempotent: true, openWorld: true },
|
|
312
|
+
useCase: "What should I triage or fix right now?"
|
|
313
|
+
},
|
|
298
314
|
// ── Lessons / evolution loop ─────────────────────────────────────────────
|
|
299
315
|
{
|
|
300
316
|
name: "query_lessons",
|
|
@@ -620,24 +636,29 @@ var TDD_TOOL_CATALOG = [
|
|
|
620
636
|
}
|
|
621
637
|
];
|
|
622
638
|
var USE_MUSHI_INTENTS = {
|
|
639
|
+
// NOTE: every name below MUST be a registered TOOL (scopes.test.ts guards
|
|
640
|
+
// this). 2026-08-16 audit P0-3 found phantom names (get_report,
|
|
641
|
+
// get_dashboard, list_qa_stories) and prompts listed as tools
|
|
642
|
+
// (summarize_report_for_fix, mushi_setup) — agents routed here then
|
|
643
|
+
// failed the call and gave up.
|
|
623
644
|
fix: {
|
|
624
645
|
label: "Fix a bug",
|
|
625
646
|
tools: [
|
|
626
647
|
"get_recent_reports",
|
|
627
|
-
"
|
|
628
|
-
"
|
|
648
|
+
"get_report_detail",
|
|
649
|
+
"triage_issue",
|
|
629
650
|
"dispatch_fix",
|
|
630
651
|
"start_skill_pipeline",
|
|
631
652
|
"checkin_pipeline_step",
|
|
632
653
|
"get_pipeline_run"
|
|
633
654
|
],
|
|
634
|
-
hint: "Call get_recent_reports to find the top unresolved bug, then
|
|
655
|
+
hint: "Call get_recent_reports to find the top unresolved bug, then triage_issue before dispatching."
|
|
635
656
|
},
|
|
636
657
|
status: {
|
|
637
658
|
label: "Check project status",
|
|
638
659
|
tools: [
|
|
639
|
-
"get_dashboard",
|
|
640
660
|
"triage_next_steps",
|
|
661
|
+
"get_account_overview",
|
|
641
662
|
"get_usage",
|
|
642
663
|
"get_backend_health",
|
|
643
664
|
"activation_status"
|
|
@@ -647,7 +668,8 @@ var USE_MUSHI_INTENTS = {
|
|
|
647
668
|
setup: {
|
|
648
669
|
label: "Set up Mushi",
|
|
649
670
|
tools: [
|
|
650
|
-
"
|
|
671
|
+
"diagnose_setup",
|
|
672
|
+
"check_sdk_version",
|
|
651
673
|
"activation_status",
|
|
652
674
|
"get_backend_health",
|
|
653
675
|
"list_byok_keys",
|
|
@@ -655,12 +677,11 @@ var USE_MUSHI_INTENTS = {
|
|
|
655
677
|
"test_byok_key",
|
|
656
678
|
"remove_byok_key"
|
|
657
679
|
],
|
|
658
|
-
hint: "Call
|
|
680
|
+
hint: "Call diagnose_setup first \u2014 it diagnoses setup gaps and returns the next action to take."
|
|
659
681
|
},
|
|
660
682
|
qa: {
|
|
661
683
|
label: "Run / review QA tests",
|
|
662
684
|
tools: [
|
|
663
|
-
"list_qa_stories",
|
|
664
685
|
"run_qa_story",
|
|
665
686
|
"list_qa_story_runs",
|
|
666
687
|
"get_qa_story_run",
|
|
@@ -668,7 +689,7 @@ var USE_MUSHI_INTENTS = {
|
|
|
668
689
|
"approve_qa_story",
|
|
669
690
|
"improve_qa_story"
|
|
670
691
|
],
|
|
671
|
-
hint: "Call
|
|
692
|
+
hint: "Call list_qa_story_runs to see recent coverage and outcomes; run_qa_story to trigger a run."
|
|
672
693
|
},
|
|
673
694
|
pipeline: {
|
|
674
695
|
label: "Run an agent pipeline / skill",
|
|
@@ -683,7 +704,7 @@ var USE_MUSHI_INTENTS = {
|
|
|
683
704
|
},
|
|
684
705
|
audit: {
|
|
685
706
|
label: "Audit / health check",
|
|
686
|
-
tools: ["run_fullstack_audit", "get_backend_health", "
|
|
707
|
+
tools: ["run_fullstack_audit", "get_backend_health", "get_account_overview", "get_usage"],
|
|
687
708
|
hint: "Call run_fullstack_audit for a full-stack health scorecard."
|
|
688
709
|
}
|
|
689
710
|
};
|
package/dist/clients.d.ts
CHANGED
|
@@ -46,7 +46,7 @@ import { FeatureGroup } from './feature-groups.js';
|
|
|
46
46
|
* editor launch. Synced to package.json by `scripts/sync-mcp-pin.mjs` — never
|
|
47
47
|
* hand-edit the version.
|
|
48
48
|
*/
|
|
49
|
-
declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.
|
|
49
|
+
declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.21.0";
|
|
50
50
|
interface StdioConfig {
|
|
51
51
|
command: string;
|
|
52
52
|
args: string[];
|
package/dist/clients.js
CHANGED
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
DEFAULT_FEATURE_GROUPS,
|
|
6
6
|
appendFeaturesToUrl,
|
|
7
7
|
featuresQueryString
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XSL2FPLV.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.21.0";
|
|
12
12
|
function projectServerName(projectId, projectName) {
|
|
13
13
|
const nameSlug = projectName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 22);
|
|
14
14
|
const idSuffix = projectId.replace(/-/g, "").slice(0, 6);
|