MCPハーバー
MCP Harborは、Harborコンテナレジストリと連携するためのModel Context Protocol(MCP)サーバーを提供するNode.jsアプリケーションです。また、Harbor操作用のREST APIも含まれています。
目次
Related MCP server: Hedera MCP Server
特徴
MCP サーバー: モデルコンテキストプロトコルを介して Harbor と対話するためのツールを公開します。
REST API : Harbor操作用のRESTfulエンドポイントを提供します
Harbor Operations : プロジェクト、リポジトリ、タグ、Helm チャートの操作をサポートします
TypeScript : 型安全性と開発者エクスペリエンスを向上させるために TypeScript で記述されています
自動テスト: 信頼性の高い機能のための包括的なテストスイート
前提条件
MCP Harbor をインストールする前に、次のものを用意してください。
Node.js 18.x 以上
npm 8.x以上
Harborレジストリインスタンスへのアクセス
Git(リポジトリのクローン作成用)
インストール
リポジトリをクローンします。
git clone https://github.com/nomagicln/mcp-harbor.gitプロジェクト ディレクトリに移動します。
cd mcp-harbor依存関係をインストールします:
npm installプロジェクトをビルドします。
npm run buildアプリケーションを起動します。
npm start
構成
環境変数
次の変数を含む.envファイルをルート ディレクトリに作成します。
# Required
HARBOR_URL=https://your-harbor-instance.com
HARBOR_USERNAME=your_username
HARBOR_PASSWORD=your_password
# Optional
PORT=3000 # Server port (default: 3000)
LOG_LEVEL=info # Logging level (default: info)
ENABLE_HTTPS=false # Enable HTTPS (default: false)
SSL_CERT_PATH=/path/to/cert.pem # Required if ENABLE_HTTPS=true
SSL_KEY_PATH=/path/to/key.pem # Required if ENABLE_HTTPS=true設定ファイル
追加の構成オプションはsrc/config/harbor.config.tsで設定できます。
{
timeout: 30000, // API request timeout in milliseconds
retryAttempts: 3, // Number of retry attempts for failed requests
cacheEnabled: true, // Enable response caching
cacheTTL: 300 // Cache TTL in seconds
}APIエンドポイント
プロジェクト
GET /projects- すべてのプロジェクトを一覧表示するGET /projects/:id- プロジェクトの詳細を取得するPOST /projects- 新しいプロジェクトを作成するDELETE /projects/:id- プロジェクトを削除する
リポジトリ
GET /projects/:projectId/repositories- プロジェクト内のリポジトリを一覧表示するDELETE /projects/:projectId/repositories/:repositoryName- リポジトリを削除する
タグ
GET /projects/:projectId/repositories/:repositoryName/tags- リポジトリ内のタグを一覧表示するDELETE /projects/:projectId/repositories/:repositoryName/tags/:tag- タグを削除する
Helmチャート
GET /projects/:projectId/charts- プロジェクト内のHelmチャート一覧を取得するGET /projects/:projectId/charts/:chartName/versions- Helm チャートのバージョンを一覧表示するDELETE /projects/:projectId/charts/:chartName/versions/:version- Helm チャートのバージョンを削除します
MCPツール
MCP サーバーは次のツールを公開します。
ツール名 | 説明 | パラメータ |
| Harborのすべてのプロジェクトを一覧表示する | なし |
| IDでプロジェクトの詳細を取得する |
|
| 新しいプロジェクトを作成する |
|
| プロジェクトを削除する |
|
| プロジェクト内のリポジトリを一覧表示する |
|
| リポジトリを削除する |
|
| リポジトリ内のタグを一覧表示する |
|
| タグを削除する |
|
| Helm チャートの一覧表示 |
|
| チャートのバージョンを一覧表示する |
|
| チャートのバージョンを削除 |
|
発達
開発モードで実行
npm run devテストの実行
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run specific test file
npm test -- test/harbor.test.tsデバッグツール
プロジェクトには、 toolsディレクトリにデバッグ ツールが含まれています。
# Test Harbor connection
npm run test:connection
# Start debug server
npm run debug:serverプロジェクト構造
mcp-harbor
├── src
│ ├── app.ts # Main application entry point (MCP server)
│ ├── config
│ │ └── harbor.config.ts # Harbor configuration
│ ├── controllers
│ │ └── harbor.controller.ts # REST API controllers
│ ├── services
│ │ └── harbor.service.ts # Harbor service implementation
│ ├── models
│ │ └── harbor.model.ts # Data models
│ ├── routes
│ │ └── harbor.routes.ts # API route definitions
│ └── types
│ └── index.ts # TypeScript type definitions
├── test
│ └── harbor.test.ts # Tests for Harbor service
├── tools
│ ├── debug-server.ts # Debug server implementation
│ └── test-connection.ts # Connection testing utility
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentationトラブルシューティング
よくある問題
接続に失敗しました
Error: Unable to connect to Harbor instanceHARBOR_URLが正しくアクセス可能であることを確認してください
ネットワーク接続を確認する
Harborインスタンスが実行中であることを確認する
認証に失敗しました
Error: Invalid credentialsHARBOR_USERNAMEとHARBOR_PASSWORDが正しいことを確認してください
ユーザーに必要な権限があるかどうかを確認する
ビルドエラー
Error: TypeScript compilation failednpm install実行して、すべての依存関係がインストールされていることを確認します。TypeScriptバージョンの互換性を確認する
distディレクトリをクリアして再構築する
デバッグモード
次の設定によりデバッグ ログを有効にします。
LOG_LEVEL=debugサポート
さらに詳しいヘルプについては、以下をご覧ください。
DEBUG.mdファイルを確認する
接続テストを実行します:
npm run test:connectionlogs/ディレクトリ内のアプリケーションログを確認する
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。