JFrog MCP サーバー (🧪 実験的)
JFrog プラットフォーム API 用のモデル コンテキスト プロトコル (MCP) サーバー。リポジトリ管理、ビルド追跡、リリース ライフサイクル管理などを可能にします。
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
免責事項
これは、JFrog の MCP 機能を実証するための実験的なプロジェクトです。JFrog による公式のサポートや検証は行われていません。
Related MCP server: Foundry MCP Project
特徴
リポジトリ管理: ローカル、リモート、仮想リポジトリの作成と管理
ビルドトラッキング: ビルド情報の一覧表示と取得
ランタイムモニタリング: ランタイムクラスターと実行中のコンテナイメージを表示する
ミッションコントロール: 関連するJFrog Platformインスタンスを表示する
アーティファクト検索: 強力な AQL クエリを実行してアーティファクトとビルドを検索します
カタログとキュレーション: パッケージ情報、バージョン、脆弱性にアクセスし、キュレーションステータスを確認します
Xray : スキャンアーティファクトの概要にアクセスし、アーティファクトごとに重大度別にグループ化します
ツール
check_jfrog_availabilityJFrogプラットフォームが準備でき、機能しているかどうかを確認する
戻り値: プラットフォームの準備状況
create_local_repositoryArtifactoryで新しいローカルリポジトリを作成する
入力:
key(文字列): リポジトリキーrclass(文字列): リポジトリクラス (「local」である必要があります)packageType(文字列): リポジトリのパッケージタイプdescription(オプションの文字列): リポジトリの説明projectKey(オプションの文字列): リポジトリを割り当てるプロジェクトキーenvironments(オプションの文字列[]): リポジトリを割り当てる環境
戻り値: 作成されたリポジトリの詳細
create_remote_repositoryArtifactory で新しいリモート リポジトリを作成し、外部パッケージ レジストリをプロキシします。
入力:
key(文字列): リポジトリキーrclass(文字列): リポジトリクラス (「remote」である必要があります)packageType(文字列): リポジトリのパッケージタイプurl(文字列): リモートリポジトリへのURLusername(オプションの文字列):リモートリポジトリのユーザー名password(オプションの文字列):リモートリポジトリのパスワードdescription(オプションの文字列): リポジトリの説明projectKey(オプションの文字列): リポジトリを割り当てるプロジェクトキーenvironments(オプションの文字列[]): リポジトリを割り当てる環境特定のリポジトリ設定のための他の多くのオプションパラメータ
戻り値: 作成されたリポジトリの詳細
create_virtual_repositoryArtifactoryで複数のリポジトリを集約する新しい仮想リポジトリを作成する
入力:
key(文字列): リポジトリキーrclass(文字列): リポジトリクラス ("virtual" である必要があります)packageType(文字列): リポジトリのパッケージタイプrepositories(文字列[]): 仮想リポジトリに含めるリポジトリキーのリストdescription(オプションの文字列): リポジトリの説明projectKey(オプションの文字列): リポジトリを割り当てるプロジェクトキーenvironments(オプションの文字列[]): リポジトリを割り当てる環境特定のリポジトリ設定のためのその他のオプションパラメータ
戻り値: 作成されたリポジトリの詳細
list_repositoriesオプションのフィルタリングを使用して、Artifactory 内のすべてのリポジトリを一覧表示します。
入力:
type(オプションの文字列): リポジトリをタイプ (ローカル、リモート、仮想、フェデレーション、ディストリビューション) でフィルタリングします。packageType(オプションの文字列): パッケージの種類でリポジトリをフィルタリングしますproject(オプションの文字列): プロジェクトキーでリポジトリをフィルタリングする
戻り値: フィルターに一致するリポジトリのリスト
set_folder_propertyArtifactoryのフォルダのプロパティを設定する(オプションの再帰適用)
入力:
folderPath(文字列): プロパティを設定するフォルダへのパスproperties(オブジェクト): 設定するプロパティのキーと値のペアrecursive(オプションのブール値):サブフォルダにプロパティを再帰的に適用するかどうか
戻り値: 演算結果
execute_aql_queryArtifactory クエリ言語 (AQL) クエリを実行して、JFrog Artifactory 内の成果物、ビルド、またはその他のエンティティを検索します。
入力:
query(文字列): 実行するAQLクエリ。AQL構文に従う必要があります(例:items.find({"repo":"my-repo"}).include("name","path"))domain(オプションの文字列):検索対象となるプライマリドメイン(アイテム、ビルド、アーカイブエントリ、ビルドプロモーション、リリース)transitive(オプションのブール値):リモートリポジトリを検索するかどうかlimit(オプションの数値): 返される結果の最大数offset(オプションの数値):スキップする結果の数include_fields(オプションの文字列[]): 結果に含めるフィールドsort_by(オプションの文字列): 結果を並べ替えるフィールドsort_order(オプションの文字列): ソート順 (昇順または降順)
返されるもの: メタデータを含む検索結果
list_jfrog_buildsJFrogプラットフォーム内のすべてのビルドのリストを返します
戻り値: ビルドのリスト
get_specific_build名前で特定のビルドの詳細を取得する
入力:
buildName(文字列): 取得するビルドの名前project(オプションの文字列): ビルド検索のスコープを指定するプロジェクトキー
戻り値: ビルドの詳細
list_jfrog_runtime_clusters
JFrogプラットフォーム内のすべてのランタイムクラスタのリストを返します
入力:
limit(オプションの整数):返されるクラスターの最大数next_key(オプションの文字列):ページ区切りに使用する次のキー
戻り値: ランタイムクラスタのリスト
get_jfrog_runtime_specific_cluster
IDでランタイムクラスターを返す
入力:
clusterId(整数): 取得するクラスターのID
戻り値: クラスターの詳細
list_jfrog_running_images
ランタイム クラスター全体で実行中のすべてのコンテナ イメージとそのセキュリティおよび運用ステータスを一覧表示します。
入力:
filters(オプションの文字列):適用するフィルターnum_of_rows(オプションの整数): 返される行数page_num(オプションの整数): ページ番号statistics(オプションのブール値):統計を含めるかどうかtimePeriod(オプションの文字列): クエリする期間
戻り値: 実行中の画像のリスト
list_jfrog_environments
JFrogプラットフォーム内のすべての環境タイプとその詳細のリストを取得します
入力:
戻り値: 環境のリスト
list_jfrog_projects
JFrogプラットフォーム内のすべてのプロジェクトとその詳細のリストを取得します
入力:
戻り値: プロジェクトのリスト
get_specific_project
JFrogプラットフォームで特定のプロジェクトに関する詳細情報を取得する
入力:
project_key(文字列): 取得するプロジェクトの一意のキー
返品: プロジェクトの詳細
create_project
JFrogプラットフォームで新しいプロジェクトを作成する
入力:
project_key(文字列): プロジェクトの一意の識別子display_name(文字列): プロジェクトの表示名description(文字列): プロジェクトの説明admin_privileges(オブジェクト): プロジェクトの管理者権限storage_quota_bytes(数値): ストレージクォータ(バイト単位)(無制限の場合は -1)
戻り値: 作成されたプロジェクトの詳細
jfrog_get_package_info
ソフトウェアパッケージに関する公開情報を取得する
入力:
type(文字列): パッケージの種類 (pypi、npm、maven、golang、nuget、huggingface、rubygems)name(文字列): パッケージリポジトリに表示されるパッケージの名前version(オプションの文字列): パッケージのバージョン (デフォルト: "latest")
戻り値: 説明、最新バージョン、ライセンス、URL などのパッケージ情報
jfrog_get_package_versions
公開されているパッケージのバージョンと公開日のリストを取得します。
入力:
type(文字列): パッケージの種類 (pypi、npm、maven、golang、nuget、huggingface、rubygems)name(文字列): パッケージリポジトリに表示されるパッケージの名前
戻り値: 公開日を含むパッケージバージョンのリスト
jfrog_get_package_version_vulnerabilities
オープンソース パッケージの特定のバージョンに影響を及ぼす既知の脆弱性のリストを取得します。
入力:
type(文字列): パッケージの種類 (pypi、npm、maven、golang、nuget、huggingface、rubygems)name(文字列): パッケージリポジトリに表示されるパッケージの名前version(オプションの文字列): パッケージのバージョン (デフォルト: "latest")pageSize(オプションの数値):ページごとに返される脆弱性の数(デフォルト:10)pageCount(オプションの数値):返されるページ数(デフォルト:1)
戻り値: 指定されたパッケージバージョンに影響を与える脆弱性のリスト
jfrog_get_vulnerability_info
影響を受けるパッケージやバージョンなど、特定の脆弱性に関する詳細情報を取得します。
入力:
cve_id(文字列): 検索するCVE IDまたは脆弱性識別子pageSize(オプションの数値):ページごとに返される脆弱性の数(デフォルト:10)pageCount(オプションの数値):返されるページ数(デフォルト:1)
戻り値: 脆弱性の詳細情報と影響を受けるパッケージ
jfrog_get_package_curation_status
特定のパッケージバージョンのキュレーションステータスを確認する
入力:
packageType(文字列): パッケージの種類 (pypi、npm、maven、golang、nuget、huggingface、rubygems)packageName(文字列): パッケージリポジトリに表示されるパッケージの名前packageVersion(文字列): パッケージリポジトリに表示されるパッケージのバージョン
戻り値: キュレーションステータス (承認済み、ブロック済み、または未確定)
jfrog_get_artifacts_summary
リポジトリまたはビルド内のアーティファクトの問題の概要を取得し、重大度(低、中、高、重大、不明)別に分類してカウントします。
入力:
paths(文字列配列):要約を作成するアーティファクトへのパスの配列
戻り値: 指定された配列内の各アーティファクトの深刻度ごとの脆弱性数に基づく要約と、問題の合計
設定
Smithery経由でインストール
Smithery経由で Claude Desktop 用の mcp-jfrog を自動的にインストールするには:
npx -y @smithery/cli install @jfrog/mcp-jfrog --client claude前提条件
Node.js v18以上
Docker (Docker デプロイメントを使用する場合は、 を参照)
適切な権限を持つ有効なJFrogプラットフォームインスタンス
JFrog プラットフォームインスタンスでアクセストークンを作成および管理するためのアクセス権
環境変数
JFROG_ACCESS_TOKEN: JFrogアクセストークン(必須)JFROG_URL: JFrogプラットフォームのベースURL(必須)TRANSPORT: 使用するトランスポートモード。SSEトランスポートを有効にするには「sse」に設定します(デフォルト: stdio)PORT: SSEトランスポートに使用するポート番号(デフォルト: 8080)CORS_ORIGIN: SSE接続で許可されるCORSオリジン(デフォルト: '*')LOG_LEVEL: ログレベル: DEBUG、INFO、WARN、ERROR (デフォルト: INFO)MAX_RECONNECT_ATTEMPTS: SSEサーバーへの再接続試行の最大回数(デフォルト: 5)RECONNECT_DELAY_MS: 再接続試行間の基本遅延(ミリ秒)(デフォルト: 2000)
JFrog トークン ( JFROG_ACCESS_TOKEN )
この MCP サーバーを使用するには、JFrog アクセス トークンを作成するか、適切な権限を持つ Idenetity トークンを使用する必要があります。
JFrog トークンの作成方法については、JFrog の公式ドキュメントを参照してください。
JFrog URL ( JFROG_URL )
JFrog プラットフォームインスタンスの URL (例: https://acme.jfrog.io )
SSEトランスポート機能
SSE トランスポート モードには次の機能が含まれます。
接続管理: 各 SSE 接続は一意の ID で追跡され、クライアントは再接続後も状態を維持できます。
構造化ログ: タイムスタンプ、重大度レベル、関連するコンテキスト情報を含む詳細なログ。
接続の復元力: サーバーの起動に失敗した場合、指数バックオフによる自動再接続が試行されます。
ヘルス エンドポイント: サーバーのステータス情報を返す
/healthエンドポイント。接続追跡: 定期的な統計ログによるアクティブな接続のリアルタイム追跡。
パフォーマンス メトリック: ツール操作と HTTP リクエストの実行時間を追跡します。
SSE モードを使用する場合:
クライアントは、オプションでセッション追跡用の
connectionIdクエリ パラメータを指定して、/sseエンドポイントに接続する必要があります。クライアント要求は、クエリ パラメータと同じ
connectionIdを使用して/messagesエンドポイントに送信する必要があります。サーバーは、確立された SSE 接続を介してサーバー送信イベントで応答します。
接続 ID を持つクライアント接続の例:
GET /sse?connectionId=client123クライアントリクエストの例:
POST /messages?connectionId=client123
Content-Type: application/json
{
"jsonrpc": "2.0",
"method": "listTools",
"id": 1
}構築方法
git cloneを使用してリポジトリをローカル マシンにクローンし、プロジェクト ディレクトリにcdます。
git clone git@github.com:jfrog/mcp-jfrog.git
cd mcp-jfrogDocker イメージとしてビルドします。
docker build -t mcp/jfrog -f Dockerfile .npm モジュールとしてビルドします。
npm i && npm run build使用法
npm
{
"mcpServers": {
"MCP-JFrog": {
"command": "npm",
"args": [
"exec",
"-y",
"github:jfrog/mcp-jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "ACCESS_TOKEN",
"JFROG_URL": "https://<YOUR_JFROG_INSTANCE_URL>"
}
}
},
"mcp-local-dev":{
"command": "node",
"args": [
"/<ABSOLUT_PATH_TO>/mcp-jfrog/dist/index.js"
],
"env": {
"JFROG_ACCESS_TOKEN": "<ACCESS_TOKEN>>",
"JFROG_URL": "<JFROG_URL>"
}
}
}ドッカー
{
"mcpServers": {
"jfrog": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "<YOUR_TOKEN>",
"JFROG_URL": "https://your-instance.jfrog.io"
},
"serverUrl": "http://localhost:8080/sse"
}
}
}SSEトランスポートモード
JFrog MCP サーバーを SSE トランスポート モードで使用するには (Cursor の Webview などの Web インターフェースに便利です)、次の手順を実行します。
{
"mcpServers": {
"jfrog-sse": {
"command": "docker",
"args": [
"run",
"--rm",
"-p",
"8080:8080",
"-e",
"TRANSPORT=sse",
"-e",
"PORT=8080",
"-e",
"CORS_ORIGIN=*",
"-e",
"LOG_LEVEL=INFO",
"-e",
"MAX_RECONNECT_ATTEMPTS=5",
"-e",
"RECONNECT_DELAY_MS=2000",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "<YOUR_TOKEN>",
"JFROG_URL": "https://your-instance.jfrog.io",
"serverUrl": "http://localhost:8080/sse"
}
}
}
}注: SSE モードの場合、SSE エンドポイントを指すserverUrlパラメータを追加し、サーバーが使用するポートを公開する必要があります (-p 8080:8080)。
claude_desktop_config.jsonに以下を追加します。
ドッカー
{
"mcpServers": {
"jfrog": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "<YOUR_TOKEN>",
"JFROG_URL": "https://your-instance.jfrog.io" // Your JFrog platform URL
},
"serverUrl": "http://localhost:8080/sse"
}
}
}npm
{
"mcpServers": {
"MCP-JFrog": {
"command": "npm",
"args": [
"exec",
"-y",
"github:jfrog/mcp-jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "ACCESS_TOKEN",
"JFROG_URL": "https://<YOUR_JFROG_INSTANCE_URL>"
}
}
}
}SSEトランスポートモード
SSE トランスポートを備えた Claude Desktop の場合:
{
"mcpServers": {
"jfrog-sse": {
"command": "docker",
"args": [
"run",
"--rm",
"-p",
"8080:8080",
"-e",
"TRANSPORT=sse",
"-e",
"PORT=8080",
"-e",
"CORS_ORIGIN=*",
"-e",
"LOG_LEVEL=INFO",
"-e",
"MAX_RECONNECT_ATTEMPTS=5",
"-e",
"RECONNECT_DELAY_MS=2000",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "<YOUR_TOKEN>",
"JFROG_URL": "https://your-instance.jfrog.io",
"serverUrl": "http://localhost:8080/sse"
}
}
}
}</details>
## License
This MCP server is licensed under the Apache License 2.0. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the Apache License 2.0. For more details, please see the LICENSE.md file in the project repository.