MCP server
Ask your editor what broke. Over MCP (the standard way AI editors connect to outside tools), Mushi Mushi sends back the report, the plain-English read and a fix brief, without you leaving the window.Connect in three steps
Add the Mushi Mushi server
One click: pick your editor on the Connect page . No signup needed for the read-only demo. Or run one command:
# Claude Code
claude mcp add --transport http mushi "https://kensaur.us/mushi-mushi/hosted-mcp/"
# Cursor (writes .cursor/mcp.json)
npx mushi-mushi setup --ide cursorSign in
The first time your editor calls Mushi Mushi, your browser opens. Sign in, pick which
projects it may see, and click Approve. In Claude Code, run claude mcp login mushi
(or /mcp) to start it.
Ask your editor
Try “list mushi tools”, then “Get the latest Mushi Mushi report and fix it.”
The rest of this page is detail: how sign-in works, manual config files, the hosted transport for headless agents, and the tool list.
How sign-in works (OAuth, no keys to copy)
The hosted MCP endpoint speaks the standard MCP OAuth flow (authorization code + PKCE), so clients that support MCP login connect with zero manual credentials:
# Claude Code
claude mcp add --transport http mushi "https://kensaur.us/mushi-mushi/hosted-mcp/"
claude mcp login mushi # or run /mcp inside a session and pick "mushi"Your browser opens the console consent page. Sign in, choose what the connection reaches, and click Approve:
| Choice | What the client gets | Revoke it from |
|---|---|---|
| All my projects (default with several projects) | An account key that reaches every project you can reach, now and later | Editor agents → Account keys |
| Only the projects I pick | An account key limited to the ticked projects | Editor agents → Account keys |
| One project | A project key (label mcp-oauth); needs owner or admin | Manage apps (the app’s key list) |
- An account key does in each project only what your role there allows. The
agent calls
list_projectsand passesprojectIdto project tools. - To keep one connection on a single project, add
?project=<project-id>to the server URL, for examplehttps://kensaur.us/mushi-mushi/hosted-mcp/?project=<project-id>. - A pinned connection, or one limited to picked projects, leaves out the organization-wide tools (portfolio, connectors, spend, accounts register).
- Cursor and VS Code follow the same flow when you add the hosted URL as a
remote MCP server. Do not set an
Authorizationheader if you want the login flow: a static header tells the client that OAuth isn’t needed.
Use the kensaur.us/mushi-mushi/hosted-mcp/ URL for the login flow. Clients
look for the OAuth metadata at the root of the server’s host
(/.well-known/oauth-protected-resource/…), and only that host serves it; on
the supabase.co URL the lookup fails with an HTTP 404. With an API key
header (below), either URL works.
Self-hosted on your own <ref>.supabase.co? Point Claude Code at the
function’s own metadata document with its authServerMetadataUrl override
(npx mushi-mushi setup --ide claude writes this for you):
{
"mcpServers": {
"mushi": {
"type": "http",
"url": "https://<ref>.supabase.co/functions/v1/mcp",
"oauth": {
"authServerMetadataUrl": "https://<ref>.supabase.co/functions/v1/mcp/.well-known/oauth-authorization-server"
}
}
}
}One-liner setup (recommended)
npx mushi-mushi setup --ide cursor
# or: npx mushi-mushi setup --ide claudeFor Cursor and Claude Code this writes the hosted MCP URL with OAuth login
by default. No API key lands in your repo, the entry is safe to commit and
share with your team, and each teammate signs in from the IDE on first use.
Pass --stdio (or --ci in headless environments) for the previous local
subprocess entry with a key.
It reads CLI config at ~/.config/mushi/config.json, or %APPDATA%\mushi\config.json on Windows (full order; written by mushi login; legacy ~/.mushirc auto-migrates on first load), detects the IDE config path, and writes the mcpServers block for you. Restart the IDE and ask the agent: “list mushi tools”.
Claude Code plugin
One command installs the hosted MCP hookup plus a mushi-debugger subagent
(report triage → fix context → implement → close the loop):
/plugin marketplace add kensaurus/mushi-mushi
/plugin install mushi-debugger@mushi-mushiThen: /mcp → pick mushi → sign in via the browser. Ask Claude to
“use mushi-debugger to fix the top report”.
Hosted MCP
The hosted server speaks Streamable HTTP at
https://kensaur.us/mushi-mushi/hosted-mcp/. The server card at
https://kensaur.us/mushi-mushi/hosted-mcp/.well-known/mcp/server-card.json
lists every tool for directory scanners.
Run npx mushi-mushi project create on a brand-new machine to sign up,
mint a project, and write .env.local + .cursor/mcp.json in one flow.
Manual setup: Cursor
Add to .cursor/mcp.json in your repo root:
{
"mcpServers": {
"mushi": {
"command": "npx",
"args": ["-y", "@mushi-mushi/mcp@0.30.7"],
"env": {
"MUSHI_PROJECT_ID": "YOUR_PROJECT_ID",
"MUSHI_API_KEY": "mushi_..."
}
}
}
}This local setup is the one that needs a key. Mint it on Manage apps →
Generate API key (preset MCP read-only or MCP read + write), or use
Connect → Add to Cursor. The card that shows a new key once also offers a
ready-made .cursor/mcp.json snippet. If you signed in through the browser
(the three steps at the top), you need no key at all.
Self-hosting? Add one more line to env, pointing at your own server:
"MUSHI_API_ENDPOINT": "https://<your-ref>.supabase.co/functions/v1/api".
On Mushi Mushi Cloud, leave it out.
Manual setup: Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mushi": {
"command": "npx",
"args": ["-y", "@mushi-mushi/mcp@0.30.7"],
"env": {
"MUSHI_PROJECT_ID": "YOUR_PROJECT_ID",
"MUSHI_API_KEY": "mushi_..."
}
}
}
}As above, add MUSHI_API_ENDPOINT only when you self-host.
Hosted Streamable HTTP transport (no subprocess)
Skip the local subprocess: use the hosted MCP endpoint when you’re running OpenAI Agents SDK, ChatGPT Agent, CrewAI, or any remote orchestrator. Headless orchestrators can’t drive the browser OAuth flow, so this is the one place a static API key header is the right tool:
{
"mcpServers": {
"mushi-hosted": {
"url": "https://kensaur.us/mushi-mushi/hosted-mcp/",
"headers": {
"X-Mushi-Api-Key": "mushi_…",
"X-Mushi-Project-Id": "YOUR_PROJECT_ID"
}
}
}
}Available tools
| Tool | Purpose |
|---|---|
get_recent_reports | Filter by status, severity, component |
get_report_detail | Full detail incl. screenshot + classification |
get_fix_context | One-shot fix brief: root cause, blast radius, repro and a paste-ready fixPrompt |
search_reports | Semantic + keyword search across reports |
dispatch_fix | Start the Mushi Mushi fix agent for a report (needs GitHub connected and Automatic fixes on) |
triage_next_steps | ”What should I fix next?”: a prioritised list of next actions |
get_similar_bugs | Ask “have we seen this before?” (similar reports) |
run_nl_query | Natural-language → SQL questions about your data |
The MCP server speaks JSON-RPC 2.0 with tools/call semantics, and the
agent surface is also discoverable via the
A2A Agent Card at
/.well-known/agent-card.json on the API.
Cursor rules hook (optional)
After setup, run:
npx mushi-mushi setup --ide cursor --with-rulesThis writes a .cursorrules file that tells Cursor to call get_fix_context
before writing a fix and submit_fix_result after, closing the loop from
inside the editor. Download the template:
cursor.cursorrules
Troubleshooting
Not seeing what you expected?
Native builds bake Mushi Mushi env vars at compile time. Open Admin → Connect → Native app CI secrets and sync the missing vars, or run scripts/check-mushi-env.mjs in your prebuild.
Check that your project ID and SDK key match the console. Run mushi ping, then press Send test report on the Set up page (Test it tab). Use the SDK key, not the key your editor uses.
Restart Cursor after editing .cursor/mcp.json. If you signed in through the browser, you need no key: open Cursor's MCP settings and sign in to mushi again. Only the local setup (a command with MUSHI_API_KEY) needs a key and MUSHI_PROJECT_ID in env; mint that key on Manage apps.
On Mushi Mushi Cloud you need no AI key: open Billing and check whether this app has reached its diagnoses for the month. Self-hosters: add your Anthropic or OpenAI key under Settings → AI keys, and confirm migrations are applied and the classify worker is deployed.
Run npx mushi-mushi setup --ide cursor again to rewrite the config, then restart Cursor and sign in when the browser opens. If you use the local setup with a key instead, check on Manage apps that the key is still active.
Your editor saved an old sign-in for the server and keeps reusing it. Clear it: in Claude Code run /mcp, pick mushi, and choose to clear authentication (or remove the server and add it again). Then sign in once more.