Kitsune Mcp

io.github.kaiser-data由 GitHub 帳號 kaiser-data 發布v0.23.0更新於 Nov 8, 2026

Hot-reload for MCP servers + mount any community server mid-session, Docker optional. No restarts.

已驗證STDIO僅桌面開發者工具AI 與機器學習

概覽

AI 產生的概覽

讓助理在工作階段中啟動、掛載、呼叫並熱重載 MCP 伺服器(含多個登錄檔的社群伺服器),不必重啟用戶端。

可以做什麼
  • 啟動、重載與停止正在開發的本機 MCP 伺服器,工作階段維持不變
  • 掛載某個伺服器的全部或部分工具,用完後再卸載
  • 直接呼叫已掛載的工具,或一步完成搜尋、掛載與呼叫
  • 在七個登錄檔中搜尋社群伺服器,可選用 Docker 隔離與版本鎖定
  • 在工作階段中設定環境憑證或執行 OAuth 瀏覽器授權流程
  • 在擴充工具設定下檢視結構定義、評估品質、測試延遲並查看狀態
適用情境
適合在開發或除錯 MCP 伺服器時建立「改程式—重載—再測試」的循環而不重啟用戶端,也適合臨時借用設定中沒有的伺服器試用一次,而非長期安裝。若只使用少數可信伺服器,或需要亞秒級的首次呼叫,則不太必要。
執行需求
以 stdio 在本機執行。需要 Python 3.12+ 與 uv;npm 類伺服器另需 node/npx。Docker 為選用,僅用於隔離社群伺服器。選用的 SMITHERY_API_KEY 可在登錄檔搜尋中啟用 Smithery,其他登錄檔不需金鑰。
安裝前請注意
connect 會以你的使用者身分執行所給命令,沒有確認關卡也沒有隔離,應在用戶端中核准這類呼叫。社群 npm、PyPI 與 GitHub 伺服器需要 confirm=True,但模型可自行設定該旗標。透過 auth 設定的憑證會存到本機 .env 檔案。不要在生产管理、計費或安全憑證環境下無人看管執行。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Kitsune Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Kitsune MCP]

🦊 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.

📖 Documentation · Hot-reload tutorial · Tools reference

AI agents installing this server (Cline, Claude Code, Cursor, …): follow llms-install.md. No clone or build needed. Add the uvx kitsune-mcp entry 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:

python
connect("uv run my-mcp-server", name="dev")  # start your servershapeshift("dev")  # its tools appear in the clientcall("summarize", arguments={"url": "https://example.com"})
# … the agent (or you) edits the tool …
reload("dev")  # restart on fresh code, remountcall("summarize", arguments={"url": "https://example.com"})  # new code, same session

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

bash
claude mcp add -s user kitsune -- uvx kitsune-mcp

Any other client (Claude Desktop, Cursor, Windsurf, Cline, Zed, …):

json
{  "mcpServers": {    "kitsune": { "command": "uvx", "args": ["kitsune-mcp"] }  }}

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

LoopWhat you get
MCP REPLconnect → shapeshift → edit → reload → callIterate on your own server without restarting the client
Long-tail reachsearch → shapeshift → call → shapeshift()Use a server once without adding it to your config forever
Try before you trustconfirm=True + Docker cage + version pinsRun community npm/PyPI code contained, not as your user

Borrow a server you never configured

python
search("web scraping")shapeshift("firecrawl", tools=["scrape_url"])  # mount one tool, not the whole servercall("scrape_url", arguments={"url": "https://example.com"})shapeshift()  # drop it, session stays up

Try a community package, caged

python
search("pdf", registry="glama")shapeshift("mcp-pdf-tools", confirm=True)  # npm/PyPI run in hardened Docker when availablecall("extract_text", arguments={"path": "report.pdf"})shapeshift()

Add credentials mid-session

python
auth("BRAVE_API_KEY", "sk-...")  # saved to ~/.kitsune/.env, no restartshapeshift("brave", tools=["brave_web_search"])

Full live walkthrough: docs/demo-realtime.md.

When to use it, when not to

Use Kitsune when…Skip it when…
You're building an MCP server and want an edit/reload loopYou only use 1–3 trusted servers (configure them natively)
A task needs a server that isn't in your configEvery turn hits the same server (keep it always-on)
You want to evaluate community MCP code without installing it for goodYou want lower token use: modern clients already defer tool schemas, so most configured servers cost little up front
Your MCP config is crowded (GATEWAY)You need a sub-second first call (cold mount takes ~1–15 s)

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).

ToolRole
connect(command, name)Start a persistent local server, e.g. the one you're developing
reload(name)Release, restart on fresh code, remount, in one call
release(name)Stop a persistent server
search(query, registry?)Search 7 registries
shapeshift(server_id?, tools=[…])Mount a server's tools (all or a subset); no argument drops them
call(tool_name, arguments)Call a tool; the server is inferred when mounted
auth(var_or_server, value?)Set an env key or run an OAuth 2.1 browser flow
auto(task, server_hint=)Search, mount and call in one step
status()Current form, connection pool, session stats

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. Approve connect calls 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.json checks every downstream call against allow/ask/deny rules, path roots and a host allowlist. ask goes 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

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

bash
make dev     # install with dev dependenciesmake test    # pytestmake lint    # ruff

Issues and PRs welcome: github.com/kaiser-data/kitsune-mcp · CHANGELOG.md


MIT License · Python 3.12+ · Built on FastMCP

來源:README.md,提交 8d6d23e

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:伺服器未在限時內回應。

版本歷史

9
  1. v0.22.8Nov 7, 2026
  2. v0.22.7Oct 31, 2026
  3. v0.22.6Oct 31, 2026
  4. v0.22.5Oct 30, 2026
  5. v0.22.4Oct 19, 2026
  6. v0.22.3Oct 18, 2026
  7. v0.22.2Oct 12, 2026
  8. v0.22.1Oct 1, 2026
  9. v0.21.1Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分