关于 Martin Kaiser
Kitsune MCP 是面向 MCP 服务开发者及需要动态工具集的 Agent 的枢纽,可在会话中连接、挂载、调用和重新加载服务。它还能搜索多个注册表,并在 Docker 可用时将社区软件包隔离运行。
主要功能
- 01热重载本地 MCP 服务
- 02搜索七个服务注册表
- 03挂载全部或指定工具
- 04通过多种传输方式连接
- 05用 Docker 隔离社区软件包
适用场景
- 01无需重启客户端测试服务修改
- 02临时使用无需永久配置的服务
- 03在容器中评估社区软件包
- 04在会话中添加凭据
MCP 相关
Kitsune 本身是 MCP 服务,提供连接、搜索、挂载、调用和重新加载其他 MCP 服务的工具。挂载的工具保留原始架构,并可在不结束客户端会话的情况下移除。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 是 | 关键词、能力描述或自然语言短语 |
| compare | boolean | 否 | 返回并排显示的令牌成本对比表 |
| registry | string | 否 |
详细介绍
🦊 Kitsune MCP
让你的 Agent 测试它正在构建的 MCP 服务。
编辑工具,reload("dev"),再次调用。无需重启客户端。
⭐ 帮你省下了一次重启?在 GitHub 上点个 Star,让更多人发现它。
只需一个提示词:Claude 找到错误、修复它、重新加载并再次检查。真实录屏,31 s。
为什么
你的 Agent 编辑了 MCP 工具,但客户端仍在运行旧进程。必须有人重启它,Agent 才能测试修复。
使用 Kitsune,connect、call 和 reload 都是工具。Agent 可以自行完成整个循环:
connect("uvx --from . my-mcp-server", name="dev") # start your server
shapeshift("dev") # its tools appear in the client
call("summarize", arguments={"url": "https://example.com"})
# … the agent (or you) edits the tool …
reload("dev") # restart on fresh code, remount
call("summarize", arguments={"url": "https://example.com"}) # new code, same session
它还可以在会话期间从 7 个注册表挂载 130,000 多个服务,并将它们关在 Docker 容器中。
试试看:热重载教程 · examples/demo-hot-reload/
安装
Claude Code
claude mcp add -s user kitsune -- uvx kitsune-mcp
任何其他客户端(Claude Desktop、Cursor、Windsurf、Cline、Zed 等):
{
"mcpServers": {
"kitsune": { "command": "uvx", "args": ["kitsune-mcp"] }
}
}
也可通过 PyPI 安装(pip install kitsune-mcp,然后设置 "command": "kitsune-mcp"),或通过 npm 安装(npx kitsune-mcp,会委托给 uvx)。
要求: Python 3.12+ · uv · 基于 npm 的服务需要 node/npx · Docker 可选,用于隔离社区服务。
它能做的三件事
| 循环 | 效果 | |
|---|---|---|
| MCP REPL | connect → shapeshift → 编辑 → reload → call | 迭代开发自己的服务,无需重启客户端 |
| 覆盖长尾需求 | search → shapeshift → call → shapeshift() | 即用即走,无需永久添加到配置中 |
| 先试用,再信任 | confirm=True + Docker 隔离 + 版本固定 | 在隔离环境中运行社区 npm/PyPI 代码,而非以你的用户身份运行 |
借用一个从未配置过的服务
search("web scraping")
shapeshift("firecrawl", tools=["scrape_url"]) # mount one tool, not the whole server
call("scrape_url", arguments={"url": "https://example.com"})
shapeshift() # drop it, session stays up
在隔离环境中试用社区包
search("pdf", registry="glama")
shapeshift("mcp-pdf-tools", confirm=True) # npm/PyPI run in hardened Docker when available
call("extract_text", arguments={"path": "report.pdf"})
shapeshift()
在会话期间添加凭据
auth("BRAVE_API_KEY", "sk-...") # saved to ~/.kitsune/.env, no restart
shapeshift("brave", tools=["brave_web_search"])
完整实时演示:docs/demo-realtime.md。
何时使用,何时不使用
| 在以下情况下使用 Kitsune… | 在以下情况下跳过… |
|---|---|
| 你正在构建 MCP 服务,并希望实现编辑/重新加载循环 | 你只使用 1–3 个可信服务(原生配置即可) |
| 某项任务需要一个配置中没有的服务 | 每一轮都会访问同一个服务(让它始终运行) |
| 你想评估社区 MCP 代码,但不想永久安装 | 你想减少 token 用量:基础开销约为 1,774 tokens/轮,而且现代客户端已会延迟加载工具架构 |
| 你的 MCP 配置过于拥挤(GATEWAY) | 你需要在不到 1 秒内完成首次调用(冷挂载需要约 1–15 秒) |
工作原理
shapeshift(server_id) 会选择一种传输方式(stdio、HTTP+SSE、WebSocket、Docker),建立连接,读取 tools/list,并将每个工具以原生工具的形式注册,使用服务端的真实架构。客户端会收到 notifications/tools/list_changed,并看到一等工具,中间没有包装层。无参数调用 shapeshift() 会移除这些工具并关闭连接。
search() 涵盖官方服务端仓库、MCP Registry、Glama、npm、PyPI、GitHub(github:owner/repo)和 Smithery(托管服务,提供免费 API 密钥)。
工具
默认配置:9 个工具,每轮约 1,774 tokens(使用 python examples/benchmark.py 测得)。
| 工具 | 作用 |
|---|---|
connect(command, name) | 启动持久运行的本地服务,例如你正在开发的服务 |
reload(name) | 释放服务、使用最新代码重启并重新挂载,一次调用即可完成 |
release(name) | 停止持久运行的服务 |
search(query, registry?) | 搜索 7 个注册表 |
shapeshift(server_id?, tools=[…]) | 挂载服务的工具(全部或部分);无参数则移除 |
call(tool_name, arguments) | 调用工具;已挂载时会自动推断所属服务 |
auth(var_or_server, value?) | 设置环境变量键,或启动 OAuth 2.1 浏览器授权流程 |
auto(task, server_hint=) | 一步完成搜索、挂载和调用 |
status() | 查看当前形态、连接池和会话统计信息 |
KITSUNE_TOOLS=all(或 kitsune-forge 命令)会添加开发者工具:inspect(架构、凭据检查、token 开销)、test(0–100 质量评分)、bench(p50/p95 延迟)、compare、prewarm、craft、setup 等。详见 docs/tools.md。Claude Code 的配套技能:kitsune-dev、kitsune-improve。
简而言之的安全说明
- 使用社区源需要征得同意。 npm、PyPI 和 GitHub 服务需要设置
confirm=True。模型可以自行设置此标志,因此真正的批准应由客户端的工具审批界面负责。 connect()会以你的用户身份运行传入的命令,不设同意关卡,也不设隔离环境。 它是为你自己的代码准备的。请在 Agent 运行前,通过客户端批准connect调用。- 默认情况下,社区软件包会在 Docker 隔离环境中运行(前提是已安装 Docker):无法访问主机文件系统、
--cap-drop ALL、根文件系统只读,并设有内存和 PID 限制。凭据按名称传递,不会放在 argv 中。 - 版本固定(TOFU)。 之后发布的恶意版本不会悄无声息地替换你已经运行过的版本。
- 可选的操作防护。
~/.kitsune/policy.json会根据允许/询问/拒绝规则、路径根目录和主机允许列表检查每个下游调用。ask会通过 MCP elicitation 向你询问。 - 安装命令会经过验证,并在不使用 shell 的情况下启动。
fetch()会拦截私有主机,并重新检查每次重定向。
请勿在无人值守的情况下使用生产环境管理员、计费或安全凭据运行它。完整的安全模型(包括它不提供的保护):docs/safety.md。
更多信息
- 配置:环境变量和
.env查找、工具配置文件、沙盒和信任设置、Smithery、GATEWAY、挂载模式 - 性能:与始终运行的服务相比,冷启动/热启动延迟和令牌成本
- 传输方式 · 兼容性 · Agent 模式 · 示例场景
为什么叫“Kitsune”?
在日本民间传说中,狐狸(狐)以其能够化身而闻名:它借用一种形态,运用那种力量,然后脱下这副形态,回归自身。这正是产品的运作方式。
我不是日本人,使用这个名字时,对其源自的神话和文化怀有最崇高的敬意。这个比喻实在太贴切,让人无法忽视。
参与贡献
make dev # install with dev dependencies
make test # pytest
make lint # ruff
欢迎提交问题和 PR:github.com/kaiser-data/kitsune-mcp · CHANGELOG.md
MIT 许可证 · Python 3.12+ · 基于 FastMCP 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。