mcpField
M
Martin Kaiser

Martin Kaiser

本地服务
kaiser-data.github.io开发工具2今天更新

关于 Martin Kaiser

Kitsune MCP 是面向 MCP 服务开发者及需要动态工具集的 Agent 的枢纽,可在会话中连接、挂载、调用和重新加载服务。它还能搜索多个注册表,并在 Docker 可用时将社区软件包隔离运行。

主要功能

  1. 01热重载本地 MCP 服务
  2. 02搜索七个服务注册表
  3. 03挂载全部或指定工具
  4. 04通过多种传输方式连接
  5. 05用 Docker 隔离社区软件包

适用场景

  1. 01无需重启客户端测试服务修改
  2. 02临时使用无需永久配置的服务
  3. 03在容器中评估社区软件包
  4. 04在会话中添加凭据

MCP 相关

Kitsune 本身是 MCP 服务,提供连接、搜索、挂载、调用和重新加载其他 MCP 服务的工具。挂载的工具保留原始架构,并可在不结束客户端会话的情况下移除。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kitsune": {
"command": "npx",
"args": [
"-y",
"kitsune-mcp"
],
"env": {
"SMITHERY_API_KEY": "<SMITHERY_API_KEY>"
}
}
}
}
启动命令npx -y kitsune-mcp
需要配置的环境变量
SMITHERY_API_KEY密钥Smithery API key for accessing 3,000+ verified MCP servers. Get yours at smithery.ai/account/api-keys

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmkitsune-mcp0.22.4
pypikitsune-mcp0.22.4

工具

9

收录的工具列表 · 更新于 3 周前

参数类型必填说明
limitinteger否
querystring是关键词、能力描述或自然语言短语
compareboolean否返回并排显示的令牌成本对比表
registrystring否

详细介绍

Kitsune MCP

🦊 Kitsune MCP

让你的 Agent 测试它正在构建的 MCP 服务。
编辑工具,reload("dev"),再次调用。无需重启客户端。

⭐ 帮你省下了一次重启?在 GitHub 上点个 Star,让更多人发现它。

📖 文档 · 热重载教程 · 工具参考

GitHub stars PyPI npm MCP Registry Python CI Coverage License: MIT Glama

Claude Code 通过 Kitsune 连接天气 MCP 服务,获取柏林 59°C 的天气,修复华氏度转换,调用 reload("dev"),并在同一会话中获取 15°C
只需一个提示词: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 REPLconnect → 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() 会移除这些工具并关闭连接。

Kitsune MCP 架构图

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。

更多信息

为什么叫“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 构建

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。