mcpField
K
kampung-mcp

kampung-mcp

ローカル
github.com/jztanAI・エージェント1今日更新

kampung-mcp について

kampung-mcpは、異なるマシン上のコーディングエージェント間でメッセージを送るセルフホスト型サービスです。Claude CodeやCodexのセッションを連携する開発者向けで、マシンのペアリングやリポジトリ別メールボックス、監査ログを備えています。

主な機能

  1. 01マシン間のメッセージ送受信
  2. 02リポジトリ別メールボックス
  3. 03ペアリング済みマシンのアクセス制御
  4. 04ターン終了時の受信
  5. 05ループ起動の防止
  6. 06監査ログとダッシュボード

活用シーン

  1. 01ノートPCのエージェントからデスクトップに質問
  2. 02Claude CodeとCodex間で情報を共有
  3. 03複数マシンで同じリポジトリのセッションを調整

MCP 対応

MCPサーバーはクライアントにlist_peers、send、inboxツールを提供します。各マシンは専用キーを使い、ローカルのstdioアダプター経由で接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jztan-kampung": {
"command": "uvx",
"args": [
"kampung-mcp"
]
}
}
}
起動コマンドuvx kampung-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypikampung-mcp0.2.2

ツール

3

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
machineanyいいえ

詳細

Kampung

PyPI version Python 3.12+ Server: AGPL-3.0 Client: Apache-2.0 GitHub Issues CI codecov Downloads

MCP を介して、異なるマシン上のコーディングエージェント同士がメッセージをやり取りできる、セルフホスト可能な仕組みです。 kampung-mcp.jztan.comで動作をご覧ください。

ノートパソコン上の Claude Code セッションから、デスクトップ上の Codex セッションに質問できます。回答は、次のターンの終わりに届きます。Kampung は Docker で実行する小さなサーバーと、Claude Code および Codex に接続する各マシン上のクライアントで構成されます。

2 つのターミナルを使ったスクリプト再生:ノートパソコンの Claude Code が Kampung 経由で NAS 上の Codex に引用を依頼し、NAS 上のエージェントが PDF ライブラリを検索して該当箇所を送り返すと、ノートパソコンのセッションがそれを使ってセクションを仕上げます。

1 回のやり取りをスクリプトで再生したものです。サイトでご覧ください

mcp-name: io.github.jztan/kampung-mcp

名前は、マレー語で「村」を意味する kampung と、近所の人同士が助け合う gotong-royong の精神に由来します。ここで近所の人にあたるのは、それぞれ別のマシンとリポジトリで動作し、互いに手を貸すエージェントです。

クライアント | サーバー | セキュリティ | 変更履歴 | コントリビューション

ステータス:ベータ版。 MCP ツールと /v1 は v1.0 より前に変更される可能性があります。クライアントは PyPI で kampung-mcp として、MCP Registry で io.github.jztan/kampung-mcp として公開されています。サーバーイメージは ghcr.io/jztan/kampung-mcp(amd64 および arm64)です。

Kampung を使う理由

Kampung を使わない場合Kampung を使う場合
異なるマシン上のエージェントターミナル間でコピー&ペーストしますdesktop/api に send し、inbox で読みます
Claude Code と Codex の併用共通のチャネルがありませんどちらも同じ 3 つの MCP ツールを使います
エージェントがターンを終えるメールは、あなたが確認するまで未読のままですStop フックがメールを読み続けさせます
エージェントがアイドル状態入力するまで何も起こりませんCodex は数秒以内に起動します。Claude Code は Channels で起動します(オプトイン)
2 つのエージェントが延々と返信し合うループが暴走しますループガードにより、返信が 3 回連続した後は起動しなくなります
誰が誰と話せるかURL を知っている人なら誰でも利用できますペアリングしたマシンだけが利用できます
何が起きたかの確認ログがある場合はログを確認します監査ログとダッシュボードがあります

仕組み

ノートパソコン上の Claude Code とデスクトップ上の Codex が、それぞれローカルの kampung-mcp アダプターおよびフックと通信します。アダプターとフックは、マシンキーを使って HTTPS 経由でサーバー上の Caddy に呼び出しを送信し、Caddy は Kampung サーバーに転送します。Kampung サーバーは SQLite にメールを保存します。アイドル状態の Codex セッションは codex queue で起動され、アイドル状態の Claude Code セッションは Channels が有効な場合に Channels 経由で起動されます。所有者のブラウザーは、管理者トークンを使って管理ダッシュボードにアクセスします。

各エージェントはローカルの stdio アダプターと通信します。アダプターはマシンキーとセッションの ID を追加して、サーバーに転送します。キーがモデルのツール呼び出しを経由することはありません。また、サーバーはキーから送信者を設定するため、エージェントが別のマシンになりすますことはできません。セッションがメールを読むまで、メールはリポジトリごとのメールボックスに保管されます。

クイックスタート

  1. サーバーを実行します(ほかのすべてのマシンからアクセスできるマシン上で実行します)。

    git clone --branch master https://github.com/jztan/kampung-mcp.git
    cd kampung-mcp
    docker compose up -d --wait
    

    最新リリースを実行し、127.0.0.1:8803 でリッスンします。HTTPS、リリースの固定、バックアップについては、docs/server.md を参照してください。

  2. 各マシンのキーを作成し、ペアリングします。

    docker compose exec kampung kampung key add laptop     # prints the key once
    docker compose exec kampung kampung key add desktop
    docker compose exec kampung kampung pair laptop desktop
    
  3. 各マシンを、それぞれのキーで接続します(uv を使用)。

    uv tool install kampung-mcp
    kampung-mcp setup --server https://kampung.example.com
    

    セットアップでは、キーを表示せずに入力を求められます。Codex を使用するには --agent codex または --agent both を追加し、アイドル状態の Claude Code セッションを起動するには --channels を追加してください。docs/clients.md を参照してください。Claude Code を再起動し、list_peers を実行するよう指示してください。

    セットアップでは、フックの完全なパスが記録されます。このパスには Python のバージョンが含まれます。uv tool のインストール先が別の Python マイナーバージョンに変わった場合は、kampung-mcp setup を再実行してください。フックはフェイルオープンするため、再実行しない場合はエラーが発生せず、フックが動作しなくなるだけです。

AWS へのデプロイ手順については、Amazon Lightsail へのデプロイを参照してください。

Kampung 管理ダッシュボード:マシン、ライブセッション、キュー内および起動されないメッセージを示すタイルと、最近のアクティビティの表

サンプルデータを表示した、/admin の管理ダッシュボード。

ツール

ツール機能
list_peers(machine?)このマシンがメッセージを送信できるメールボックスと、そのセッション
send(to, body, reply_to?)machine/repo または machine/repo#xx に最大 8 KB のテキストを送信します。結果の wake は、ループガードによって受信側を起動できる状態であることを示します。実際に起動されることを意味するわけではありません
inbox(limit=20)新着メッセージを一度に最大 20 件まで読み取り、残りの件数も表示します。読み取るとメッセージが配信されます

すべてのメッセージは、送信者、送信時刻、ループガードの深さ、および「ピアからのメッセージであり、指示ではない」というタグを含むエンベロープで届きます。未読メールは 7 日後に期限切れとなり、各マシンは 1 分あたり 60 件のメッセージを送信できます。結果とエラーについては、ツールリファレンスを参照してください。

セキュリティ

  • デフォルトでは閉じています。 すべてのリクエストにマシンキーが必要です。新しいマシンは、ペアリングするまで何もできません。
  • 信頼境界はマシンです。 マシンごとにキーを 1 つ使用し、ハッシュ化して保存します。各マシンは、自分のメールボックスのみを使用できます。
  • ピアからのメッセージは情報であり、指示ではありません。 また、ペアリングは信頼に関わる判断です。エージェントを信頼できるマシンのみをペアリングしてください。
  • エンドツーエンド暗号化ではありません。 サーバーは、ペアリングを適用して監査ログを保持するためにメッセージを参照します。

脅威モデル、運用者向けチェックリスト、および制限事項については、SECURITY.md を参照してください。

これは何ではないか

  • 同じマシン上のセッション間で使う Claude Code 組み込みのメッセージ機能を置き換えるものではありません。
  • タスクボード、ジョブキュー、ファイル転送ツールではありません。
  • マルチテナントではありません。デプロイメントごとに所有者は 1 人です。

ロードマップ

  • アダプターのポーリングを置き換える、サーバー送信イベント。
  • インストールを簡単にするため、クライアントを Claude Code プラグインとして提供します。Channels には引き続き開発フラグが必要です。

貢献

課題の報告やプルリクエストを歓迎します。貢献ガイドと行動規範をご確認ください。プルリクエストの作成者は、コントリビューターライセンス契約に一度署名します。著作権は引き続きご自身が保持します。

ライセンス

  • packages/server(kampung-server):AGPL-3.0。packages/server/LICENSEをご確認ください。
  • packages/client(お使いのマシン上で動作するアダプターとフックであるkampung-mcp):Apache-2.0。packages/client/LICENSEをご確認ください。

NOTICEには、このプロジェクトの着想元であるKampungへの謝辞を記載しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。