Harbor について
Harbor は、ローカル開発サーバーを整理・管理する macOS ネイティブアプリです。開発者はプロジェクトを起動してポート、ログ、リソース使用状況を確認でき、コーディングエージェントはローカル MCP サーバー経由で承認済みの操作を行えます。
主な機能
- 01プロジェクトのサービスと設定を検出
- 02プロジェクトの起動・停止・再起動
- 03サービスのポート割り当てと解決
- 04ログ、稼働状態、リソースの監視
- 05ローカル TCP リスナーの一覧表示
- 06クラッシュしたサービスの任意再起動
活用シーン
- 01プロジェクトと依存サービスの一括起動
- 02ローカルポートと重複の可能性を確認
- 03サービスのログとリソース使用量を確認
- 04Claude または Codex に承認済みプロジェクトを操作させる
MCP 対応
Harbor は loopback のみに接続する MCP サーバーを動かし、プロジェクトやサーバーの状態、ログ、登録済みプロジェクトの操作を公開します。Agent が作成した設定は、使用前にローカルでの承認が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://127.0.0.1:7777/mcpclaude mcp add --transport http harbor http://127.0.0.1:7777/mcp{"mcpServers":{"harbor":{"type":"http","url":"http://127.0.0.1:7777/mcp"}}}Cursor で開く{"servers":{"harbor":{"type":"http","url":"http://127.0.0.1:7777/mcp"}}}VS Code で開く{"mcpServers":{"harbor":{"type":"http","url":"http://127.0.0.1:7777/mcp"}}}{"mcpServers":{"harbor":{"serverUrl":"http://127.0.0.1:7777/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
http://127.0.0.1:7777/mcp認証が必要ツール
詳細
Harbor
実行中のものを把握。ポートの混乱を解消。
Harbor を使えば、Mac 上のローカルサーバーを把握できます。何が実行中なのか、どこから来たのか、どのコピーが重複しているように見えるのかを確認できます。ワンクリックでプロジェクト全体を起動するか、承認したプロジェクトを Claude や Codex に調査・操作させることができます。
ウェブサイト · Harbor をダウンロード · クイックスタート · AI エージェントを接続
macOS 11+ · Apple Silicon + Intel · 署名および公証済み · アカウント不要 · MIT
注記: Harbor は、コンテナレジストリの CNCF Harborとは無関係です。
Harbor を選ぶ理由
Mac ですでに実行中のサーバーを確認
Harbor は現在のユーザーの TCP リスナーを一覧表示し、ポート、プロセス、コマンド、作業フォルダー、HTTP レスポンス、推定されるフレームワークを表示します。確かな根拠がある場合はサーバーを登録済みプロジェクトに紐づけます。重複している可能性が高いプロジェクトの実行や、ネットワークからアクセス可能なバインドにはフラグを付け、判別できないリスナーも表示したままにします。
ターミナルをいくつも開くのではなく、プロジェクトを起動
フォルダーを追加すると、Harbor が検出したサービスを確認できます。依存関係を順番に起動し、ログをストリーミングし、ヘルスとリソースを監視し、プロジェクトのポートを解決します。別のコピーを起動する前に、プロジェクトに一致する、安全に再利用できるサーバーがすでに存在するかを確認します。
コーディングエージェントに同じ信頼できる情報源を提供
Harbor は、ライブのプロジェクトおよびサーバーの状態を、ループバック限定の MCP サーバーを通じて公開します。Claude と Codex はローカルリスナーを調査し、プロジェクトを検出し、ログを読み取り、登録済みプロジェクトを操作できます。エージェントが作成した設定は、Harbor でその設定を個別に承認するまで一時停止状態のままです。
インストール
アプリをダウンロード
最新リリースから**.dmg**をダウンロードして開き、Harbor を「アプリケーション」にドラッグします。
Homebrew でインストール
brew install --cask luke-fairbanks/tap/harbor
本番リリースには Faba Development による署名と Apple による公証が行われています。Harbor は Apple Silicon および Intel の Mac で macOS 11 Big Sur 以降をサポートしています。
v0.4.0 以降、Harbor は起動後すぐと、その後 6 時間ごとに署名済みアップデートを確認します。インストール前には必ず確認を求めます。プロジェクト設定 → Harbor のアップデートから手動で確認することもできます。Harbor のアップデートと再起動中も、管理対象のプロジェクトプロセスはオンライン状態を維持します。
クイックスタート
- Harbor を開き、プロジェクトを追加を選ぶか、プロジェクトフォルダーをウィンドウにドラッグします。
- 検出されたサービスとコマンドを確認し、Harbor に追加を選びます。
- プロジェクトを開き、プロジェクトを起動を選びます。
- ローカルサーバーを開くと、macOS のユーザーアカウントで実行中のほかのリスナーと並べて、そのポートを確認できます。
Harbor は、一般的な JavaScript フレームワークとパッケージマネージャー、Django、FastAPI、Flask、Go、Rails、および静的サイトを認識します。検出されない場合は、代わりに harbor.json 設定をインポートまたは編集できます。
保守的な設計
- 監視することは、所有することではありません。 サーバーをプロジェクトに関連付けても、Harbor にそのサーバーを停止する権限が与えられるわけではありません。
- 重複防止では確実性を優先します。 Harbor は強く一致するサーバーを再利用します。一致の判断が曖昧な場合は起動をブロックし、確認を求めます。
- クリーンアップでは識別情報を保護します。 停止が提示されるのは、分離された未追跡サーバーのみです。Harbor はプロセスにシグナルを送る前に、PID、プロセスの開始時刻、ポートを再確認し、ターミナル、IDE、コーディングエージェント、Harbor 自身は停止しません。「安全に停止可能」とは、プロセスが分離されていることを示すものであり、プロセスに未保存の作業があるかどうかを示すものではありません。
- エージェントが記述したコマンドには、ローカルでの承認が必要です。 承認は登録済みの正確な設定に適用されます。MCP 経由で設定を変更するには、新たな承認が必要です。
- MCP はローカルにとどまります。 サーバーは
127.0.0.1にバインドし、Harbor の起動ごとに新しいベアラートークンを使用します。macOS では、ディスクリプターと Harbor のアプリデータディレクトリへのアクセスは所有者のみに制限されます。また、ネイティブブリッジは認証情報を転送する前にリスナーの所有者を検証します。 - AI による修正は明示的な操作です。 実行すると、Harbor はサービスコマンド、作業パス、終了状態、最近のログを、インストール済みの Codex または Claude CLI に渡します。そのデータは、Harbor が呼び出すプロバイダーのプライバシー条件に従って処理されます。
Harbor が管理するもの
- 依存関係を考慮した起動、停止、再起動、およびワンクリックでのプロジェクト起動
- IPv4 と IPv6 に対応した、優先ポートから次の空きポートへの割り当て
- サービス間での
${PORT}と${services.<name>.port}の再設定 - ポートを独自に固定するコマンドの認識
- HTTP、TCP、ログパターン、プロセスの稼働状態による準備完了チェック
- 管理対象の各プロセスグループのリアルタイムログ、CPU 使用率、メモリ使用量
- 上限付きバックオフを用いた、オプトイン方式のクラッシュ時再起動
- アプリの再起動後も存続する、検証済み Harbor プロセスの再取り込み
- よく使うプロジェクト操作を行えるメニューバーのポップオーバー
- フレームワークを考慮したプロジェクト検出と編集可能な
harbor.json設定
ローカルサーバーのインベントリ
ローカルサーバービューでは、現在の macOS ユーザーが所有する TCP リスナーをスキャンします。プロセス、作業ディレクトリ、コマンド、ポート、および範囲を制限した HTTP の証拠を組み合わせて、各リスナーを不明、一致済み、Harbor 管理対象、または識別情報を安全に確認したクリーンアップの対象に分類します。
Harbor は、別のポートを割り当てる前に、サービスの優先ポートで強く一致するサーバーを認識できます。そのプロセスがターミナル、IDE、Claude、または Codex とグループを共有している場合、Harbor は監視のみを行い、ホストプロセスを停止しません。
Claude または Codex に接続する
AI connections を開き、Connect Claude Code、Connect Desktop、または Connect Codex を選択します。ガイド付きセットアップにより、Harbor の署名済みで所有者専用のネイティブブリッジがインストールされます。新しいクライアント設定に含まれるのは、安定したコマンドパスのみです。ベアラートークン、環境変数、Node.js のインストール、初回起動時のダウンロードは必要ありません。Harbor が終了している場合、ブリッジはバックグラウンドで静かに Harbor を起動します。初回接続後、新しいクライアントセッションを開始してください(または、すでに実行中のクライアントを完全に終了してから再起動してください)。これにより、新しいエントリが読み込まれます。
クライアントが所有する stdio プロセスは、Harbor の終了中も再起動中も接続を維持します。Harbor の保護されたエンドポイント記述子を再読み込みし、トークンとポートのローテーションに追従して、次のリクエストを転送する前に MCP バックエンドのライフサイクルを再生します。Harbor v0.4.2 のレガシーランチャーからアップグレードする場合は、クライアントの再起動が最後に一度必要です。その後は、通常の Harbor の再起動でクライアントを再起動する必要はありません。以降の Harbor アップデートでブリッジのバイナリ自体が置き換わる場合も、実行中のクライアントが新しいブリッジコードを使うには、クライアントの再起動が必要です。
Harbor では、保存された設定と、確認済みの Bridge running プロセスを区別します。後者はクライアントがブリッジを起動したことを意味します。カタログが受け入れられたことを最終的に確認するには、クライアント側の MCP ツール一覧を確認してください。
上級ユーザーは、Streamable HTTP 経由で直接接続できます。現在のポートとトークンは
~/Library/Application Support/com.harbor.desktop/mcp.json から確認してください。ポートは 7777 と異なる場合があり、トークンは Harbor の再起動ごとに変わります。
SETTINGS="$HOME/Library/Application Support/com.harbor.desktop/mcp.json"
PORT="$(plutil -extract port raw -o - "$SETTINGS")"
TOKEN="$(plutil -extract token raw -o - "$SETTINGS")"
claude mcp add harbor --scope user --transport http "http://127.0.0.1:${PORT}/mcp" \
--header "Authorization: Bearer ${TOKEN}"
次に、以下を試してください。
実行中のローカルサーバーを教えてください。重複しているように見えるものはありますか?
MCP ツール
| ツール | 用途 |
|---|---|
list_apps | 登録済みプロジェクトと現在の実行状態を一覧表示します |
app_status(app) | サービス、解決済みポート、ポートプランを確認します |
detect_app(path) | フォルダーをスキャンし、保存せずに設定案を提示します |
register_app(config) | 承認が必要な設定として、追加または置換します |
start_app(app, profile?) | 承認済みのプロジェクトまたはプロファイルを起動します |
stop_app(app) | プロジェクトの Harbor 管理サービスを停止します |
restart_app(app, profile?) | 承認済みのプロジェクトまたはプロファイルを再起動します |
get_logs(app, service, lines?) | 最近記録されたログを読み取ります |
list_local_servers | リスナー、照合結果、重複の可能性があるものを一覧表示します |
stop_local_server(pid, port, startedAt) | 分離されたサーバーの安全な識別に基づくクリーンアップをリクエストします |
open_app(app) | 実行中のプロジェクトのプライマリ URL を開きます |
ソースからビルドする
Harbor は、Rust コアと React 19 / Radix Themes インターフェースを備えた Tauri 2 を使用しています。
npm install
npm run prepare:bridge
npm run tauri dev
アップデーター成果物を含めずに、ローカルの本番ビルドを実行します。
npm run tauri:build:local
変更を検証する
npm run prepare:bridge
npm test
npm run build
npm run test:rust
cargo fmt --manifest-path src-tauri/Cargo.toml --all -- --check
cargo fmt --manifest-path src-tauri/mcp-bridge/Cargo.toml --all -- --check
cargo clippy --manifest-path src-tauri/Cargo.toml --locked --all-targets -- -D warnings
cargo clippy --manifest-path src-tauri/mcp-bridge/Cargo.toml --locked --all-targets -- -D warnings
cargo test --manifest-path src-tauri/mcp-bridge/Cargo.toml --locked
MCP スキーマ、トランスポート、認証、またはネイティブブリッジを変更した場合は、ワンクリックセットアップを少なくとも一度実行してからパッチ適用済みの Harbor ビルドを起動し、インストール済みの Claude/Codex ブリッジそのものを 90 秒間テストしてください。
node scripts/mcp-bridge-soak.mjs --restart-harbor --duration-ms 90000 --interval-ms 30000
ハーネスは Claude 互換の初期化を行い、公開されているすべてのツールスキーマを検証し、読み取り専用の list_apps ツールを繰り返し呼び出します。PASS で終了し、スキーマ、認証、トランスポート、再接続に関するエラーがないことが必要です。
リリース済みのアーキテクチャについては DESIGN.md、計画中の作業については ROADMAP.md、署名付きリリースの手順については DISTRIBUTING.md を参照してください。
フィードバックとコントリビューション
Harbor が誤認したリスナー、検出できなかったプロジェクト、または接続できなかった MCP クライアントを見つけましたか?ガイド付きの Issue を作成してください。ログやコマンドを投稿する前に、トークン、認証情報、.env の内容、プライベートなパスを削除してください。
Issue とプルリクエストを歓迎します。セキュリティ上の脆弱性は、GitHub のセキュリティアドバイザリーフォームから非公開で報告してください。
ライセンス
MIT © Luke Fairbanks
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。