mcpField
J
JFrog MCP Server (🧪 Experimental)

JFrog MCP Server (🧪 Experimental)

ローカル
github.com/jfrog開発ツール11816 週間前に更新

JFrog MCP Server (🧪 Experimental) について

JFrog MCP Server は、JFrog Platform API 向けの MCP サーバーで、リポジトリ管理、ビルド追跡、リリースのライフサイクル管理などを扱います。本プロジェクトは非推奨で保守も終了しており、README では JFrog 公式の MCP サーバーへの移行が案内されています。

主な機能

  1. 01ローカル、リモート、バーチャルリポジトリの作成と管理
  2. 02ビルド情報の一覧取得と参照
  3. 03AQL クエリによるアーティファクトの検索
  4. 04パッケージのバージョン、脆弱性、キュレーション状況の照会
  5. 05Xray によるアーティファクトの重大度別問題集計

活用シーン

  1. 01MCP クライアントから Artifactory のリポジトリやビルドを照会する
  2. 02オープンソースパッケージの既知の脆弱性とキュレーション結果を確認する

MCP 対応

本プロジェクトは MCP サーバーであり、JFrog Platform のリポジトリ、ビルド、ランタイム、プロジェクト、Xray の操作をツールとして MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"jfrog": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

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

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

⛔ 非推奨 — JFrog MCP Server(実験版)

注意

🚨 このプロジェクトは非推奨であり、メンテナンスされていません 🚨

新規または既存のインテグレーションに、このリポジトリを使用しないでください。

この実験版 MCP サーバーは、JFrog が構築、メンテナンス、サポートする公式 JFrog MCP Serverに置き換えられました。公式サーバーはセキュリティが確保され、リモートでホストされており、本番環境で使用できる状態で、継続的にアップデート、バグ修正、セキュリティパッチが提供されます。

👉 代わりに公式 JFrog MCP Server をご利用ください:
https://jfrog.com/help/r/jfrog-integrations-documentation/jfrog-mcp-server

このリポジトリには、今後機能追加、修正、セキュリティアップデートは提供されません。以下の内容は、履歴を参照する目的に限り保存されています。


smithery バッジ

JFrog Platform API 用の Model Context Protocol(MCP)サーバーです。リポジトリ管理、ビルドの追跡、リリースライフサイクル管理などを可能にします。

https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5

⚠️ 非推奨のお知らせ

このプロジェクトは非推奨であり、JFrog によるメンテナンスは終了しています。

このプロジェクトはもともと、MCP による JFrog の機能を実証するための実験プロジェクトとして作成されたもので、JFrog による公式サポートや検証を受けたことはありません。今後、アップデート、バグ修正、セキュリティパッチは提供されません。

JFrog は現在、JFrog Platform とシームレスに統合できる、公式のセキュアなリモート MCP サーバーを提供しています。このマネージド MCP サーバーは JFrog がメンテナンスしており、セキュリティ、信頼性、サポートが強化された、今後推奨される唯一のサポート対象オプションです。

公式サーバーに移行してください:

👉 JFrog MCP Server — 公式ドキュメント

機能

  • リポジトリ管理:ローカル、リモート、仮想リポジトリの作成と管理
  • ビルド追跡:ビルド情報の一覧表示と取得
  • ランタイム監視:ランタイムクラスターと実行中のコンテナーイメージの表示
  • Mission Control:関連付けられた JFrog Platform インスタンスの表示
  • アーティファクト検索:強力な AQL クエリを実行して、アーティファクトとビルドを検索
  • カタログとキュレーション:パッケージ情報、バージョン、脆弱性へのアクセス、キュレーションステータスの確認
  • Xray:スキャン対象アーティファクトの概要にアクセスし、アーティファクトごとに重大度でグループ化

ツール

リポジトリ管理
  1. check_jfrog_availability

    • JFrog プラットフォームが準備完了状態で、正常に動作しているか確認
    • 戻り値:プラットフォームの準備状況
  2. create_local_repository

    • Artifactory に新しいローカルリポジトリを作成
    • 入力:
      • key (string):リポジトリキー
      • rclass (string):リポジトリクラス("local" である必要があります)
      • packageType (string):リポジトリのパッケージタイプ
      • description (optional string):リポジトリの説明
      • projectKey (optional string):リポジトリの割り当て先プロジェクトキー
      • environments (optional string[]):リポジトリに割り当てる環境
    • 戻り値:作成されたリポジトリの詳細
  3. create_remote_repository

    • 外部パッケージレジストリをプロキシするために、Artifactory に新しいリモートリポジトリを作成します
    • 入力:
      • key(string):リポジトリキー
      • rclass(string):リポジトリクラス("remote" である必要があります)
      • packageType(string):リポジトリのパッケージタイプ
      • url(string):リモートリポジトリの URL
      • username(省略可能な string):リモートリポジトリのユーザー名
      • password(省略可能な string):リモートリポジトリのパスワード
      • description(省略可能な string):リポジトリの説明
      • projectKey(省略可能な string):リポジトリを割り当てるプロジェクトキー
      • environments(省略可能な string[]):リポジトリを割り当てる環境
      • 特定のリポジトリ設定に関するその他多くの省略可能なパラメーター
    • 戻り値:作成したリポジトリの詳細
  4. create_virtual_repository

    • 複数のリポジトリを集約するために、Artifactory に新しい仮想リポジトリを作成します
    • 入力:
      • key(string):リポジトリキー
      • rclass(string):リポジトリクラス("virtual" である必要があります)
      • packageType(string):リポジトリのパッケージタイプ
      • repositories(string[]):仮想リポジトリに含めるリポジトリキーの一覧
      • description(省略可能な string):リポジトリの説明
      • projectKey(省略可能な string):リポジトリを割り当てるプロジェクトキー
      • environments(省略可能な string[]):リポジトリを割り当てる環境
      • 特定のリポジトリ設定に関するその他の省略可能なパラメーター
    • 戻り値:作成したリポジトリの詳細
  5. list_repositories

    • オプションのフィルタリングを使用して、Artifactory 内のすべてのリポジトリを一覧表示します
    • 入力:
      • type(省略可能な string):リポジトリをタイプでフィルタリングします(local、remote、virtual、federated、distribution)
      • packageType(省略可能な string):リポジトリをパッケージタイプでフィルタリングします
      • project(省略可能な string):リポジトリをプロジェクトキーでフィルタリングします
    • 戻り値:フィルターに一致するリポジトリの一覧
  6. set_folder_property

    • Artifactory 内のフォルダーにプロパティを設定します。必要に応じて再帰的に適用できます
    • 入力:
      • folderPath(string):プロパティを設定するフォルダーのパス
      • properties(object):設定するプロパティのキーと値のペア
      • recursive(省略可能な boolean):サブフォルダーにもプロパティを再帰的に適用するかどうか
    • 戻り値:操作結果
  7. execute_aql_query

    • Artifactory Query Language(AQL)クエリを実行し、JFrog Artifactory 内のアーティファクト、ビルド、その他のエンティティを検索します
    • 入力:
      • query(string):実行する AQL クエリです。AQL 構文に従う必要があります(例:items.find({"repo":"my-repo"}).include("name","path"))
      • domain(省略可能な string):検索する主要なドメイン(items、builds、archive.entries、build.promotions、releases)
      • transitive(省略可能な boolean):リモートリポジトリも検索するかどうか
      • limit(省略可能な number):返す結果の最大数
      • offset(省略可能な number):スキップする結果の数
      • include_fields(省略可能な string[]):結果に含めるフィールド
      • sort_by(省略可能な string):結果の並べ替えに使用するフィールド
      • sort_order(省略可能な string):並べ替え順(asc または desc)
    • 戻り値:メタデータを含む検索結果
ビルド管理
  1. list_jfrog_builds

    • JFrog プラットフォーム内のすべてのビルドの一覧を返します
    • 戻り値:ビルドの一覧
  2. get_specific_build

    • 名前を指定して、特定のビルドの詳細を取得します
    • 入力:
      • buildName(string):取得するビルドの名前
      • project(省略可能な string):ビルド検索の対象を指定するプロジェクトキー
    • 戻り値:ビルドの詳細
ランタイム管理 10. `list_jfrog_runtime_clusters` - JFrog プラットフォーム内のすべてのランタイムクラスターの一覧を返します - 入力: - `limit`(省略可能な整数):返すクラスターの最大数 - `next_key`(省略可能な文字列):ページネーションで使用する次のキー - 戻り値:ランタイムクラスターの一覧
  1. get_jfrog_runtime_specific_cluster

    • ID を指定してランタイムクラスターを返します
    • 入力:
      • clusterId(整数):取得するクラスターの ID
    • 戻り値:クラスターの詳細
  2. list_jfrog_running_images

    • ランタイムクラスター全体で実行中のすべてのコンテナイメージを、セキュリティと運用のステータスとともに一覧表示します
    • 入力:
      • filters(省略可能な文字列):適用するフィルター
      • num_of_rows(省略可能な整数):返す行数
      • page_num(省略可能な整数):ページ番号
      • statistics(省略可能なブール値):統計情報を含めるかどうか
      • timePeriod(省略可能な文字列):クエリする期間
    • 戻り値:実行中のイメージの一覧
アクセス制御
  1. list_jfrog_environments

    • JFrog プラットフォーム内のすべての環境タイプとその詳細の一覧を取得します
    • 入力:
    • 戻り値:環境の一覧
  2. list_jfrog_projects

    • JFrog プラットフォーム内のすべてのプロジェクトとその詳細の一覧を取得します
    • 入力:
    • 戻り値:プロジェクトの一覧
  3. get_specific_project

    • JFrog プラットフォーム内の特定のプロジェクトに関する詳細情報を取得します
    • 入力:
      • project_key(文字列):取得するプロジェクトの一意のキー
    • 戻り値:プロジェクトの詳細
  4. create_project

    • JFrog プラットフォームに新しいプロジェクトを作成します
    • 入力:
      • project_key(文字列):プロジェクトの一意の識別子
      • display_name(文字列):プロジェクトの表示名
      • description(文字列):プロジェクトの説明
      • admin_privileges(オブジェクト):プロジェクトの管理者権限
      • storage_quota_bytes(数値):バイト単位のストレージクォータ(無制限の場合は -1)
    • 戻り値:作成したプロジェクトの詳細
カタログとキュレーション
  1. jfrog_get_package_info

    • ソフトウェアパッケージに関する公開情報を取得します
    • 入力:
      • type(文字列):パッケージの種類(pypi、npm、maven、golang、nuget、huggingface、rubygems)
      • name(文字列):パッケージリポジトリに表示されるパッケージ名
      • version(省略可能な文字列):パッケージのバージョン(デフォルト:"latest")
    • 戻り値:説明、最新バージョン、ライセンス、URL を含むパッケージ情報
  2. jfrog_get_package_versions

    • 公開されているパッケージのバージョンと公開日の一覧を取得します
    • 入力:
      • type(文字列):パッケージの種類(pypi、npm、maven、golang、nuget、huggingface、rubygems)
      • name(文字列):パッケージリポジトリに表示されるパッケージ名
    • 戻り値:公開日を含むパッケージバージョンの一覧
  3. jfrog_get_package_version_vulnerabilities

    • オープンソースパッケージの特定のバージョンに影響する既知の脆弱性の一覧を取得します
    • 入力:
      • type(文字列):パッケージの種類(pypi、npm、maven、golang、nuget、huggingface、rubygems)
      • name(文字列):パッケージリポジトリに表示されるパッケージ名
      • version(省略可能な文字列):パッケージのバージョン(デフォルト:"latest")
      • pageSize(省略可能な数値):1 ページあたりに返す脆弱性の数(デフォルト:10)
      • pageCount(省略可能な数値):返すページ数(デフォルト:1)
    • 戻り値:指定したパッケージバージョンに影響する脆弱性の一覧
20. `jfrog_get_vulnerability_info` - 特定の脆弱性に関する詳細情報(影響を受けるパッケージやバージョンなど)を取得します - 入力: - `cve_id` (string):検索する CVE ID または脆弱性識別子 - `pageSize` (optional number):1 ページあたりに返す脆弱性の数(デフォルト:10) - `pageCount` (optional number):返すページ数(デフォルト:1) - 戻り値:脆弱性の詳細情報と影響を受けるパッケージ
  1. jfrog_get_package_curation_status
    • 特定のパッケージバージョンのキュレーションステータスを確認します
    • 入力:
      • packageType (string):パッケージの種類(pypi、npm、maven、golang、nuget、huggingface、rubygems)
      • packageName (string):パッケージリポジトリ上での表記どおりのパッケージ名
      • packageVersion (string):パッケージリポジトリ上での表記どおりのパッケージバージョン
    • 戻り値:キュレーションステータス(承認、ブロック、または判定不能)
Xray
  1. jfrog_get_artifacts_summary
    • リポジトリまたはビルド内のアーティファクトの問題を、重大度(低、中、高、重大、不明)ごとに分類して件数をまとめます
    • 入力:
      • paths (string array):集計対象のアーティファクトのパスの配列
    • 戻り値:指定された配列内の各アーティファクトについて、重大度ごとの脆弱性件数に基づく概要と、問題の合計件数

セットアップ

Smithery 経由でインストールする

Smithery 経由で Claude Desktop に mcp-jfrog を自動的にインストールするには:

npx -y @smithery/cli install @jfrog/mcp-jfrog --client claude
前提条件
  • Node.js v18 以降
  • Docker(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 アクセストークンを作成するか、適切な権限を持つ ID トークンを使用する必要があります。

JFrog トークンの作成方法については、JFrog の公式ドキュメントを参照してください。

JFrog URL(JFROG_URL)

JFrog プラットフォームインスタンスの URL(例:https://acme.jfrog.io)

SSE トランスポートの機能

SSE トランスポートモードには、次の機能があります。

  • 接続管理:各 SSE 接続は一意の ID で追跡されるため、クライアントは再接続を試みる際にも状態を維持できます。
  • 構造化ログ:タイムスタンプ、重要度レベル、関連するコンテキスト情報を含む詳細なログを記録します。
  • 接続の回復性:サーバーの起動に失敗した場合、指数バックオフで自動的に再接続を試みます。
  • ヘルスエンドポイント:サーバーのステータス情報を返す /health エンドポイント。
  • 接続追跡:アクティブな接続をリアルタイムで追跡し、統計情報を定期的にログに記録します。
  • パフォーマンス指標:ツール操作と HTTP リクエストの実行時間を追跡します。

SSE モードを使用する場合:

  1. クライアントは /sse エンドポイントに接続します。セッションを追跡するには、必要に応じて connectionId クエリパラメーターを指定します。
  2. クライアントのリクエストは、同じ connectionId をクエリパラメーターとして指定し、/messages エンドポイントに送信します。
  3. サーバーは、確立された SSE 接続を通じてサーバー送信イベントで応答します。

接続 ID を指定したクライアント接続の例:

GET /sse?connectionId=client123

クライアントリクエストの例:

POST /messages?connectionId=client123
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "method": "listTools",
  "id": 1
}
ビルド方法

git clone を使用してリポジトリをローカルマシンにクローンし、プロジェクトディレクトリに移動します。

git clone [email protected]:jfrog/mcp-jfrog.git

cd mcp-jfrog

Docker イメージとしてビルドします。

docker build -t mcp/jfrog -f Dockerfile .

npm モジュールとしてビルドします。

npm i && npm run build

使用方法

Cursor で使用する `~/.cursor/mcp.json` に次の内容を追加します。
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>"
      }
    }
}
Docker
{
  "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 トランスポートモード

SSE トランスポートモードで JFrog MCP Server を使用する場合(Cursor のウェブビューなどのウェブインターフェースに便利です):

{
  "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 で使用する

claude_desktop_config.json に次の内容を追加します。

Docker
{
  "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.

コメント

MCP は初めてですか?

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

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