
Kitsune Mcp
io.github.kaiser-dataPublished by GitHub account kaiser-datav0.22.8Updated Nov 7, 2026
Hot-reload for MCP servers + mount any community server mid-session, Docker optional. No restarts.
Overview
Lets an assistant start, mount, call and hot-reload MCP servers mid-session, including community servers from several registries, without restarting the client.
- What you can do
- Start, reload and stop a local MCP server the assistant is developing, keeping the same session
- Mount a server's tools, all or a chosen subset, and drop them again when done
- Call mounted tools directly, or search, mount and call in one step
- Search seven registries for community servers, with optional Docker caging and version pins
- Set environment credentials or run an OAuth browser flow mid-session
- Inspect schemas, test quality, benchmark latency and check status with the extended tool profile
- When to use it
- Useful when you are building or debugging an MCP server and want an edit-reload-test loop without restarting the client, or when a task needs a server that is not in your config and you want to try it once rather than install it permanently. Less useful if you only run a few trusted servers or need sub-second first calls.
- Requirements
- Runs locally over stdio. Needs Python 3.12+ and uv; npm-based servers also need node/npx. Docker is optional and only used to cage community servers. An optional SMITHERY_API_KEY enables Smithery in registry search; other registries need no key.
Installation
In SourceWeft
- Open Kitsune Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
🦊 Kitsune MCP
Let your agent test the MCP server it's building.
Edit a tool, reload("dev"), call it again. No client restart.
⭐ Saved you a restart? Star it on GitHub so others find it.
AI agents installing this server (Cline, Claude Code, Cursor, …): follow llms-install.md. No clone or build needed. Add the
uvx kitsune-mcpentry to your MCP settings.
[GitHub stars] [PyPI] [npm] [PyPI downloads] [PyPI monthly] [npm monthly] [MCP Registry] [Python] [CI] [Coverage] [OpenSSF Scorecard] [License: MIT] [Glama] [Listed in Awesome MCP Servers]
[Claude Code connects a weather MCP server through Kitsune, gets 59°C for Berlin, fixes the Fahrenheit conversion, calls reload("dev") and gets 15°C in the same session]
One prompt: Claude finds the bug, fixes it, reloads, checks again. Real recording, 31 s.
Why
Your agent edits an MCP tool, but the client still runs the old process. Someone has to restart it before the agent can test the fix.
With Kitsune, connect, call and reload are tools. The agent runs the whole loop itself:
No Docker needed: connect() runs your own server as a plain local process, so the loop stays fast.
It also mounts any of 130,000+ servers from 7 registries mid-session. If Docker is installed, community packages run caged.
Try it: hot-reload tutorial · examples/demo-hot-reload/
Install
Claude Code
Any other client (Claude Desktop, Cursor, Windsurf, Cline, Zed, …):
Also on PyPI (pip install kitsune-mcp, then "command": "kitsune-mcp") and npm (npx kitsune-mcp, delegates to uvx).
Requirements: Python 3.12+ · uv · node/npx for npm-based servers · Docker optional: not used for hot-reload, only to cage community servers when installed.
Three things it does
Borrow a server you never configured
Try a community package, caged
Add credentials mid-session
Full live walkthrough: docs/demo-realtime.md.
When to use it, when not to
How it works
shapeshift(server_id) picks a transport (stdio, HTTP+SSE, WebSocket, Docker), connects, reads tools/list, and registers each tool as a native tool with the server's real schema. The client receives notifications/tools/list_changed and sees first-class tools, with no wrapper in between. shapeshift() with no argument removes them and closes the connection.
search() covers the official servers repo, the MCP Registry, Glama, npm, PyPI, GitHub (github:owner/repo) and Smithery (hosted servers, free API key).
Tools
Default profile: 9 tools. Standing cost: ~1,774 tokens/turn on clients that load every tool schema up front (measured with python examples/benchmark.py); ~70 tokens/turn on Claude Code with Tool Search, where schemas load only on first use (measured on Claude Code 2.1.319, 2026-11-06).
KITSUNE_TOOLS=all (or the kitsune-forge command) adds developer tools: inspect (schemas, credential check, token cost), test (quality score 0–100), bench (p50/p95 latency), compare, prewarm, craft, setup, and more. See docs/tools.md. Companion skills for Claude Code: kitsune-dev, kitsune-improve.
Safety, in short
- Community sources need consent. npm, PyPI and GitHub servers require
confirm=True. The model can set that flag itself, so real approval belongs in your client's tool-approval UI. connect()runs the command it is given, as your user, with no consent gate and no cage. It is meant for your own code. Approveconnectcalls in your client before the agent runs them.- Community packages run in a Docker cage by default when Docker is installed: no host filesystem,
--cap-drop ALL, read-only root, memory and PID limits. Credentials are passed by name, never in argv. - Version pins (TOFU). A later malicious publish doesn't silently replace a version you already ran.
- Opt-in action guard. A
~/.kitsune/policy.jsonchecks every downstream call against allow/ask/deny rules, path roots and a host allowlist.askgoes to you through MCP elicitation. - Install commands are validated and launched without a shell.
fetch()blocks private hosts and re-checks every redirect.
Don't run it unattended with production admin, billing or security credentials. The full model, including what it does not protect against: docs/safety.md.
More
- Configuration: env and
.envlookup, tool profiles, sandbox and trust settings, Smithery, GATEWAY, mount patterns - Performance: cold/warm latency and token cost compared with always-on servers
- Transports · Compatibility · Agent patterns · Worked scenarios
Why "Kitsune"?
In Japanese folklore the kitsune (狐) is known for what it can become: it borrows a form, uses that power, casts it off and returns to itself. That is the product loop.
I am not Japanese, and I use this name with the highest respect for the mythology and culture it comes from. The parallel felt too precise to ignore.
Contributing
Issues and PRs welcome: github.com/kaiser-data/kitsune-mcp · CHANGELOG.md
MIT License · Python 3.12+ · Built on FastMCP
Source: README.md at commit 8d6d23e
Tools
0Version history
9- v0.22.8LatestNov 7, 2026
- v0.22.7Oct 31, 2026
- v0.22.6Oct 31, 2026
- v0.22.5Oct 30, 2026
- v0.22.4Oct 19, 2026
- v0.22.3Oct 18, 2026
- v0.22.2Oct 12, 2026
- v0.22.1Oct 1, 2026
- v0.21.1Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts