Martin Kaiser について
Kitsune MCPは、MCPサーバー開発者や動的なツールセットを必要とするエージェント向けのハブです。セッション中にサーバーの接続、マウント、呼び出し、再読み込みができ、Docker利用時はコミュニティパッケージを隔離して実行します。
主な機能
- 01ローカルMCPサーバーのホットリロード
- 027つのサーバーレジストリを検索
- 03全ツールまたは選択ツールをマウント
- 04複数のトランスポートで接続
- 05Dockerによるコミュニティパッケージの隔離
活用シーン
- 01クライアントを再起動せずに変更をテストする
- 02恒久的な設定なしでサーバーを使う
- 03コンテナ内でコミュニティパッケージを評価する
- 04セッション中に認証情報を追加する
MCP 対応
Kitsune自体がMCPサーバーであり、他のMCPサーバーへの接続、検索、マウント、呼び出し、再読み込みのツールを公開します。マウントしたツールは元のスキーマで登録され、クライアントセッションを終了せずに解除できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | |
| query | string | はい | キーワード、機能の説明、または自然言語のフレーズ |
| compare | boolean | いいえ | トークンコストの比較表を並べて返します |
| registry | string | いいえ |
詳細
🦊 Kitsune MCP
エージェントに、構築中の MCP サーバーをテストさせましょう。
ツールを編集し、reload("dev")を実行して、もう一度呼び出します。クライアントの再起動は不要です。
⭐ 再起動せずに済みましたか? GitHub でスターを付けて、ほかの人にも見つけてもらいましょう。
📖 ドキュメント · ホットリロードのチュートリアル · ツールのリファレンス
1 つのプロンプトで、Claude がバグを見つけて修正し、リロードして再確認します。実際の録画、31 秒。
その理由
エージェントが MCP ツールを編集しても、クライアントでは古いプロセスが動いたままです。エージェントが修正をテストするには、誰かが再起動する必要があります。
Kitsune では、connect、call、reloadがツールです。エージェント自身が一連の流れを実行します。
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
また、Docker で隔離した状態で、7 つのレジストリにある 130,000 個以上のサーバーのうち、任意のものをセッション中にマウントできます。
お試しください:ホットリロードのチュートリアル · 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 は任意で、コミュニティサーバーを隔離するために使用します。
できることは 3 つ
| 流れ | 得られること | |
|---|---|---|
| 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 コードを、恒久的にインストールせずに評価したい場合 | トークン使用量を減らしたい場合:基本コストは1ターンあたり約1,774トークンで、最新のクライアントはすでにツールのスキーマを必要に応じて読み込みます |
| MCP の設定が煩雑な場合(GATEWAY) | サブ秒での初回呼び出しが必要な場合(コールドマウントには約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ターンあたり約1,774トークン(python examples/benchmark.py で測定)。
| ツール | 役割 |
|---|---|
connect(command, name) | 永続的なローカルサーバーを起動します。たとえば、開発中のサーバーなどです |
reload(name) | 1回の呼び出しで解放し、新しいコードで再起動して再マウントします |
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=) | 検索、マウント、呼び出しを1ステップで行います |
status() | 現在の状態、接続プール、セッション統計を表示します |
KITSUNE_TOOLS=all(または kitsune-forge コマンド)を指定すると、開発者向けツールが追加されます。inspect(スキーマ、認証情報の確認、トークンコスト)、test(品質スコア0~100)、bench(p50/p95 レイテンシ)、compare、prewarm、craft、setup などが含まれます。詳しくは docs/tools.md をご覧ください。Claude Code 向けの関連スキル:kitsune-dev、kitsune-improve。
安全性の概要
- コミュニティソースには同意が必要です。 npm、PyPI、GitHub のサーバーでは
confirm=Trueが必要です。モデルはこのフラグを自分で設定できるため、実際の承認はクライアントのツール承認 UI で行ってください。 connect()は、与えられたコマンドを、同意を求める仕組みも制限環境もない状態で、ユーザー権限で実行します。 ご自身のコード向けです。エージェントが実行する前に、クライアントでconnectの呼び出しを承認してください。- コミュニティパッケージは、Docker がインストールされている場合、デフォルトで Docker の隔離環境で実行されます。 ホストのファイルシステムにはアクセスできず、
--cap-drop ALL、ルートファイルシステムの読み取り専用化、メモリと PID の制限が適用されます。認証情報は名前で渡され、argv には渡されません。 - バージョン固定(TOFU)。 後から悪意のあるパッケージが公開されても、すでに実行したバージョンがひそかに置き換えられることはありません。
- オプトインのアクションガード。
~/.kitsune/policy.jsonによって、すべての下流の呼び出しが許可/確認/拒否ルール、パスのルート、ホストの許可リストに照らしてチェックされます。askの場合は、MCP エリシテーションを通じて確認を求められます。 - インストールコマンドは検証されたうえでシェルを介さずに起動されます。
fetch()はプライベートホストへのアクセスをブロックし、リダイレクトのたびに再チェックします。
本番環境の管理者、課金、セキュリティ関連の認証情報を使って、無人で実行しないでください。保護対象と保護対象外を含む完全なモデルについては、docs/safety.md をご覧ください。
詳細
- 設定:環境変数と
.envの検索、ツールプロファイル、サンドボックスと信頼の設定、Smithery、GATEWAY、マウントパターン - パフォーマンス:常時稼働サーバーとのコールド/ウォーム時のレイテンシとトークンコストの比較
- トランスポート · 互換性 · エージェントのパターン · シナリオ例
「Kitsune」の由来
日本の民間伝承に登場するキツネ(狐)は、別のものに変化できる存在として知られています。姿を借りてその力を使い、それを手放して本来の姿に戻ります。これがこのプロダクトのサイクルです。
私は日本人ではありません。この名前は、その由来である神話と文化に最大限の敬意を払って使用しています。この類似性はあまりにも的確で、無視できませんでした。
貢献
make dev # install with dev dependencies
make test # pytest
make lint # ruff
Issue や PR を歓迎します:github.com/kaiser-data/kitsune-mcp · CHANGELOG.md
MIT License · Python 3.12+ · FastMCP を基盤として構築
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。