@mushi-mushi/mcp 0.21.0 → 0.22.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 +34 -42
- package/dist/branding.d.ts +8 -2
- package/dist/branding.js +1 -1
- package/dist/catalog.d.ts +41 -1
- package/dist/catalog.js +7 -3
- package/dist/{chunk-EANW5YTI.js → chunk-FJRPC4VR.js} +1 -1
- package/dist/{chunk-XSL2FPLV.js → chunk-LFSAKI6Z.js} +12 -15
- package/dist/{chunk-FNDGCFSJ.js → chunk-RPSPV4FC.js} +87 -21
- package/dist/clients.d.ts +1 -1
- package/dist/clients.js +3 -3
- package/dist/feature-groups.d.ts +14 -4
- package/dist/feature-groups.js +1 -1
- package/dist/index.js +3041 -512
- package/dist/server.d.ts +18 -5
- package/dist/server.js +2747 -392
- package/package.json +21 -19
- package/CODE_OF_CONDUCT.md +0 -51
- package/CONTRIBUTING.md +0 -226
- package/SECURITY.md +0 -359
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mushi-mushi/mcp",
|
|
3
3
|
"mcpName": "io.github.kensaurus/mushi-mushi",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.22.0",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"description": "MCP server for
|
|
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",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"types": "./dist/
|
|
11
|
-
"import": "./dist/
|
|
10
|
+
"types": "./dist/server.d.ts",
|
|
11
|
+
"import": "./dist/server.js"
|
|
12
12
|
},
|
|
13
13
|
"./catalog": {
|
|
14
14
|
"types": "./dist/catalog.d.ts",
|
|
@@ -31,28 +31,33 @@
|
|
|
31
31
|
"import": "./dist/clients.js"
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
|
-
"main": "./dist/
|
|
35
|
-
"types": "./dist/
|
|
34
|
+
"main": "./dist/server.js",
|
|
35
|
+
"types": "./dist/server.d.ts",
|
|
36
36
|
"bin": {
|
|
37
37
|
"mushi-mcp": "./dist/index.js"
|
|
38
38
|
},
|
|
39
39
|
"files": [
|
|
40
40
|
"dist",
|
|
41
41
|
"README.md",
|
|
42
|
-
"LICENSE"
|
|
43
|
-
"CONTRIBUTING.md",
|
|
44
|
-
"CODE_OF_CONDUCT.md",
|
|
45
|
-
"SECURITY.md"
|
|
42
|
+
"LICENSE"
|
|
46
43
|
],
|
|
47
44
|
"dependencies": {
|
|
48
45
|
"@modelcontextprotocol/core": "^2.0.0",
|
|
49
46
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
50
|
-
"@sentry/node": "^10.57.0",
|
|
51
47
|
"zod": "^4.4.3",
|
|
52
|
-
"@mushi-mushi/core": "^1.
|
|
48
|
+
"@mushi-mushi/core": "^1.29.0"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"@sentry/node": "^10.57.0"
|
|
52
|
+
},
|
|
53
|
+
"peerDependenciesMeta": {
|
|
54
|
+
"@sentry/node": {
|
|
55
|
+
"optional": true
|
|
56
|
+
}
|
|
53
57
|
},
|
|
54
58
|
"devDependencies": {
|
|
55
59
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
60
|
+
"@sentry/node": "^10.57.0",
|
|
56
61
|
"@types/node": "^22.20.0",
|
|
57
62
|
"eslint": "^10.6.0",
|
|
58
63
|
"tsup": "^8.5.1",
|
|
@@ -65,7 +70,7 @@
|
|
|
65
70
|
"url": "https://github.com/kensaurus/mushi-mushi.git",
|
|
66
71
|
"directory": "packages/mcp"
|
|
67
72
|
},
|
|
68
|
-
"author": "Kenji Sakuramoto (https://
|
|
73
|
+
"author": "Kenji Sakuramoto <kensaurus@gmail.com> (https://github.com/kensaurus)",
|
|
69
74
|
"homepage": "https://kensaur.us/mushi-mushi",
|
|
70
75
|
"bugs": {
|
|
71
76
|
"url": "https://github.com/kensaurus/mushi-mushi/issues"
|
|
@@ -96,14 +101,11 @@
|
|
|
96
101
|
"ai-agent",
|
|
97
102
|
"llm",
|
|
98
103
|
"observability",
|
|
99
|
-
"user-feedback"
|
|
104
|
+
"user-feedback",
|
|
105
|
+
"mushi"
|
|
100
106
|
],
|
|
101
107
|
"engines": {
|
|
102
|
-
"node": ">=20"
|
|
103
|
-
},
|
|
104
|
-
"funding": {
|
|
105
|
-
"type": "github",
|
|
106
|
-
"url": "https://github.com/sponsors/kensaurus"
|
|
108
|
+
"node": ">=20.19.0"
|
|
107
109
|
},
|
|
108
110
|
"scripts": {
|
|
109
111
|
"build": "tsup",
|
package/CODE_OF_CONDUCT.md
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
AUTO-SYNCED from repo root by scripts/sync-community-files.mjs.
|
|
3
|
-
Do not edit here — edit the canonical file at the repository root and
|
|
4
|
-
re-run `node scripts/sync-community-files.mjs` (pre-commit hook does this
|
|
5
|
-
automatically).
|
|
6
|
-
-->
|
|
7
|
-
|
|
8
|
-
# Contributor Covenant Code of Conduct
|
|
9
|
-
|
|
10
|
-
## Our Pledge
|
|
11
|
-
|
|
12
|
-
We as members, contributors, and leaders pledge to make participation in our
|
|
13
|
-
community a harassment-free experience for everyone, regardless of age, body
|
|
14
|
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
15
|
-
identity and expression, level of experience, education, socio-economic status,
|
|
16
|
-
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
17
|
-
identity and orientation.
|
|
18
|
-
|
|
19
|
-
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
20
|
-
diverse, inclusive, and healthy community.
|
|
21
|
-
|
|
22
|
-
## Our Standards
|
|
23
|
-
|
|
24
|
-
Examples of behavior that contributes to a positive environment:
|
|
25
|
-
|
|
26
|
-
- Using welcoming and inclusive language
|
|
27
|
-
- Being respectful of differing viewpoints and experiences
|
|
28
|
-
- Gracefully accepting constructive criticism
|
|
29
|
-
- Focusing on what is best for the community
|
|
30
|
-
- Showing empathy towards other community members
|
|
31
|
-
|
|
32
|
-
Examples of unacceptable behavior:
|
|
33
|
-
|
|
34
|
-
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
|
35
|
-
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
36
|
-
- Public or private harassment
|
|
37
|
-
- Publishing others' private information without explicit permission
|
|
38
|
-
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
39
|
-
|
|
40
|
-
## Enforcement
|
|
41
|
-
|
|
42
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
43
|
-
reported to the project team at **kensaurus@gmail.com**.
|
|
44
|
-
|
|
45
|
-
All complaints will be reviewed and investigated promptly and fairly.
|
|
46
|
-
|
|
47
|
-
## Attribution
|
|
48
|
-
|
|
49
|
-
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
|
|
50
|
-
version 2.1, available at
|
|
51
|
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
|
package/CONTRIBUTING.md
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
AUTO-SYNCED from repo root by scripts/sync-community-files.mjs.
|
|
3
|
-
Do not edit here — edit the canonical file at the repository root and
|
|
4
|
-
re-run `node scripts/sync-community-files.mjs` (pre-commit hook does this
|
|
5
|
-
automatically).
|
|
6
|
-
-->
|
|
7
|
-
|
|
8
|
-
# Contributing to Mushi Mushi
|
|
9
|
-
|
|
10
|
-
Thanks for wanting to help. Here's everything you need to get started.
|
|
11
|
-
|
|
12
|
-
## Prerequisites
|
|
13
|
-
|
|
14
|
-
- **Node.js >= 22** (see `.node-version`)
|
|
15
|
-
- **pnpm >= 10** — install with `corepack enable`
|
|
16
|
-
|
|
17
|
-
## Setup
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
git clone https://github.com/kensaurus/mushi-mushi.git
|
|
21
|
-
cd mushi-mushi
|
|
22
|
-
pnpm install
|
|
23
|
-
pnpm build
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Development
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
pnpm dev # Start all dev servers (admin on :6464)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
| Surface | URL |
|
|
33
|
-
| --- | --- |
|
|
34
|
-
| Admin console | http://localhost:6464 |
|
|
35
|
-
| Docs site | http://localhost:3000 |
|
|
36
|
-
| CLI console override | `MUSHI_CONSOLE_URL=http://localhost:6464` |
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
pnpm test # Run Vitest across all packages
|
|
40
|
-
pnpm typecheck # TypeScript checks
|
|
41
|
-
pnpm lint # ESLint
|
|
42
|
-
pnpm format # Prettier
|
|
43
|
-
pnpm smoke:cli-setup # Playwright: onboarding ?setup=cli + success panel (skips headless if unsigned)
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Set `CLI_SETUP_SMOKE_STRICT=1` to fail the smoke script when Playwright is not signed in (CI gate).
|
|
47
|
-
|
|
48
|
-
Ad-hoc screenshots captured during UI reviews can live temporarily at the repo
|
|
49
|
-
root, but root-level `*.png` files are intentionally ignored. Canonical
|
|
50
|
-
screenshots that should be versioned belong under `docs/screenshots/`.
|
|
51
|
-
|
|
52
|
-
### Working on a single package
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
cd packages/core
|
|
56
|
-
pnpm dev # Watch mode
|
|
57
|
-
pnpm test # Tests for this package only
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Project Structure
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
packages/
|
|
64
|
-
core/ Types, API client, offline queue (MIT)
|
|
65
|
-
web/ Browser SDK — widget, capture (MIT)
|
|
66
|
-
react/ React bindings (MIT)
|
|
67
|
-
vue/ Vue 3 plugin (MIT)
|
|
68
|
-
svelte/ Svelte SDK (MIT)
|
|
69
|
-
angular/ Angular SDK (MIT)
|
|
70
|
-
react-native/ React Native SDK (MIT)
|
|
71
|
-
cli/ CLI tool (MIT)
|
|
72
|
-
mcp/ MCP server for coding agents (MIT)
|
|
73
|
-
server/ Supabase Edge Functions (AGPLv3; ee/ is commercial)
|
|
74
|
-
agents/ Agentic fix pipeline (AGPLv3)
|
|
75
|
-
verify/ Fix verification (AGPLv3)
|
|
76
|
-
apps/
|
|
77
|
-
admin/ Admin dashboard (React + Tailwind)
|
|
78
|
-
docs/ Documentation site (Nextra — apps/docs)
|
|
79
|
-
testers/ Tester marketplace portal (Next.js)
|
|
80
|
-
tooling/
|
|
81
|
-
eslint-config/ Shared ESLint flat config
|
|
82
|
-
tsconfig/ Shared TypeScript configs
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## What we don't accept
|
|
86
|
-
|
|
87
|
-
Knowing this upfront saves everyone time.
|
|
88
|
-
|
|
89
|
-
- **Automated / bulk / AI-slop PRs** — any PR that was opened by a script, an LLM agent acting without meaningful human review, or as part of a parallel bounty-farming sweep is closed on sight. The commit history, branch name, or helper scripts included in the PR make this obvious.
|
|
90
|
-
- **PRs that target the wrong base** — all PRs must branch from and target `master`. PRs targeting `main` or any other branch are closed (and will show an inflated diff that is not your work).
|
|
91
|
-
- **One PR per issue, one issue per PR** — splitting or duplicating work just to collect acknowledgements isn't welcome.
|
|
92
|
-
- **Good-first-issues without claiming first** — comment on the issue to claim it before starting. If two people open PRs for the same issue, the one that commented first is prioritised.
|
|
93
|
-
- **Documentation-only PRs that merely duplicate existing content** — if the information already exists (e.g. in another file in this repo), adding a redundant copy adds noise without value.
|
|
94
|
-
|
|
95
|
-
If a PR violates these policies it will be closed with a brief explanation. No hard feelings — a genuine contribution on the same issue is always welcome.
|
|
96
|
-
|
|
97
|
-
## Making Changes
|
|
98
|
-
|
|
99
|
-
1. Create a feature branch from `master`
|
|
100
|
-
2. Make your changes
|
|
101
|
-
3. Add tests for new functionality
|
|
102
|
-
4. Run `pnpm typecheck && pnpm lint && pnpm test` to verify
|
|
103
|
-
5. Create a changeset if your change affects published packages:
|
|
104
|
-
```bash
|
|
105
|
-
pnpm changeset
|
|
106
|
-
```
|
|
107
|
-
6. Open a pull request
|
|
108
|
-
|
|
109
|
-
### Documentation (docs-as-code)
|
|
110
|
-
|
|
111
|
-
If your PR changes **user-visible SDK or CLI behavior**, update docs in the **same PR**:
|
|
112
|
-
|
|
113
|
-
| Surface | When to update |
|
|
114
|
-
| --- | --- |
|
|
115
|
-
| `packages/*/README.md` | npm-facing install/API/config changes for that package |
|
|
116
|
-
| `apps/docs/content/**/*.mdx` | Long-form guides, quickstarts, admin console docs |
|
|
117
|
-
| Root `README.md` | Marketing stats only when counts change — run `pnpm check:docs-stats` |
|
|
118
|
-
|
|
119
|
-
Guardrails (run locally before pushing):
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
pnpm check:docs-stats # root README stat badges + glance <sub> line
|
|
123
|
-
pnpm check:sdk-version-matrix # apps/docs/content/sdks/index.mdx versions
|
|
124
|
-
pnpm check:internal-doc-links # dead /foo links in MDX
|
|
125
|
-
pnpm check:onboarding-drift # phantom MCP env vars / stale tool names / native install coords
|
|
126
|
-
pnpm check:catalog-sync # MCP catalog ↔ admin counts ↔ prose "N tools"
|
|
127
|
-
pnpm check:mcp-tools-doc # mcp-tools.generated.mdx stale check
|
|
128
|
-
pnpm check:bundle-docs # @mushi-mushi/web size-limit vs README
|
|
129
|
-
pnpm check:docs-drift # versions + public docs links
|
|
130
|
-
pnpm gen:llms-txt # regenerate apps/docs/public/llms.txt after nav changes
|
|
131
|
-
pnpm gen:mcp-tools-doc # regenerate sdks/mcp-tools.generated.mdx from catalog.ts
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Same-PR rule:** if behavior, env vars, CLI commands, MCP tools, or install
|
|
135
|
-
coordinates change, update the matching docs in this PR and run
|
|
136
|
-
`pnpm check:docs-drift && pnpm check:onboarding-drift && pnpm check:catalog-sync`.
|
|
137
|
-
|
|
138
|
-
README changes on npm packages only appear on [npmjs.com](https://www.npmjs.com) after the next **Changesets publish**.
|
|
139
|
-
|
|
140
|
-
## Changesets
|
|
141
|
-
|
|
142
|
-
We use [Changesets](https://github.com/changesets/changesets) for versioning. If your PR modifies a published package (`core`, `web`, `react`, `vue`, `svelte`, `angular`, `react-native`, `cli`, `mcp`), add a changeset:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
pnpm changeset
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Select the affected packages, the semver bump type, and write a summary. The changeset file gets committed with your PR.
|
|
149
|
-
|
|
150
|
-
## Release flow
|
|
151
|
-
|
|
152
|
-
Releases are fully automated once the version PR is merged. Maintainers don't run
|
|
153
|
-
`npm publish` by hand for routine bumps. See **[`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md)**
|
|
154
|
-
for the full production runbook (edge functions, admin SPA, docs site, migrations).
|
|
155
|
-
|
|
156
|
-
1. PRs land on `master` with one or more changeset files in `.changeset/`.
|
|
157
|
-
Orphaned changesets (only ignored packages) fail `pnpm check:changeset-orphans`.
|
|
158
|
-
2. `release.yml` runs on every push to `master`. It opens (or updates) a
|
|
159
|
-
**`chore: version packages`** PR on `changeset-release/master` that bumps
|
|
160
|
-
affected `package.json` files, rolls up changelogs, and deletes consumed
|
|
161
|
-
changesets.
|
|
162
|
-
3. **Wait for CI on the version PR.** If checks don't appear (bot-branch
|
|
163
|
-
suppression), push an empty commit to `changeset-release/master`. If
|
|
164
|
-
`check:sdk-version-matrix` fails, run `pnpm gen:sdk-version-matrix` on that
|
|
165
|
-
branch and commit `apps/docs/content/sdks/index.mdx`.
|
|
166
|
-
4. Merge the version PR. The publish step uses **OIDC Trusted Publishers** +
|
|
167
|
-
Sigstore provenance (with `NPM_TOKEN` only for brand-new package bootstrap).
|
|
168
|
-
5. **Manually dispatch Release** unless a run starts within ~2 minutes:
|
|
169
|
-
**Actions → Release → Run workflow → `master`**. Squash-merges attributed to
|
|
170
|
-
`github-actions[bot]` usually suppress the auto `push` trigger — manual
|
|
171
|
-
dispatch is the normal path, not a fallback of last resort.
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
gh workflow run release.yml --ref master
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Adding a brand-new publishable package
|
|
178
|
-
|
|
179
|
-
Trusted Publisher bindings are configured **per package** on `npmjs.com` and require the package to already exist on the registry. New packages therefore need a one-time bootstrap before OIDC can take over.
|
|
180
|
-
|
|
181
|
-
1. Add the package under `packages/<name>/` with a real `version`, `files`, `publishConfig.access: "public"`, `LICENSE`, and the standard fields enforced by `pnpm check:publish-readiness`.
|
|
182
|
-
2. Build it locally: `pnpm install && pnpm -r build`.
|
|
183
|
-
3. Mint a short-lived granular access token at `https://www.npmjs.com/settings/<your-user>/tokens/granular-access-tokens/new` — **Bypass 2FA: ON**, **Read and write: All packages**, **Expiration: 7 days**.
|
|
184
|
-
4. Bootstrap-publish:
|
|
185
|
-
```bash
|
|
186
|
-
NPM_TOKEN=npm_xxx pnpm bootstrap:new-package
|
|
187
|
-
```
|
|
188
|
-
The script auto-detects which workspace packages are missing on npm and publishes them via `pnpm publish --no-provenance` (so `workspace:^` specifiers get rewritten to real semver in the tarball).
|
|
189
|
-
5. The script prints one URL per freshly-published package. Open each, click **GitHub Actions** under "Trusted Publisher", confirm the auto-filled fields (`<owner>` / `<repo>` / `release.yml`), and tap your security key.
|
|
190
|
-
6. Revoke the bootstrap token at `https://www.npmjs.com/settings/<your-user>/tokens`.
|
|
191
|
-
|
|
192
|
-
From the next changeset bump onward, that package publishes through the normal `release.yml` flow with full OIDC provenance — same as the rest.
|
|
193
|
-
|
|
194
|
-
## Code Style
|
|
195
|
-
|
|
196
|
-
- **TypeScript strict mode** — no `any` unless absolutely necessary
|
|
197
|
-
- **Prettier** formats everything — run `pnpm format` before committing
|
|
198
|
-
- **ESLint** catches bugs — `pnpm lint` must pass
|
|
199
|
-
- **No default exports** in library packages — use named exports
|
|
200
|
-
- **Dual ESM/CJS** builds via tsup for all SDK packages
|
|
201
|
-
|
|
202
|
-
## Commit Messages
|
|
203
|
-
|
|
204
|
-
Use conventional commits:
|
|
205
|
-
|
|
206
|
-
```
|
|
207
|
-
feat(core): add batch report submission
|
|
208
|
-
fix(web): prevent widget from opening during screenshot
|
|
209
|
-
docs(react): update provider usage example
|
|
210
|
-
chore: bump dependencies
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Tests
|
|
214
|
-
|
|
215
|
-
- **Framework:** Vitest
|
|
216
|
-
- **Location:** Co-located with source (`src/foo.test.ts`)
|
|
217
|
-
- **Coverage:** Required for `core`, `web`, `react` — encouraged for all packages
|
|
218
|
-
|
|
219
|
-
## License
|
|
220
|
-
|
|
221
|
-
- SDK packages are MIT — your contributions will be MIT-licensed
|
|
222
|
-
- Server/agents/verify are AGPLv3 — contributions to those packages fall under AGPLv3. A [commercial license](./COMMERCIAL-LICENSE.md) is available for hosted-SaaS use cases that cannot publish modifications. The `packages/server/ee/` directory is source-available but commercial (production use needs a license); contributions there are accepted under the same EE terms.
|
|
223
|
-
|
|
224
|
-
## Questions?
|
|
225
|
-
|
|
226
|
-
Open an issue or start a discussion. We're happy to help.
|