JFrog MCP Server

平台与服务

by jfrog

通过集成式 MCP server 管理 JFrog 仓库、追踪 builds 与发布生命周期,使用强大的 AQL 查询搜索 artifacts,并有效监控 runtime clusters。

把 JFrog 仓库管理、构建发布追踪和集群监控串成一条线,配合集成式 MCP Server 与 AQL 查询,制品治理效率明显更高。

什么是 JFrog MCP Server

通过集成式 MCP server 管理 JFrog 仓库、追踪 builds 与发布生命周期,使用强大的 AQL 查询搜索 artifacts,并有效监控 runtime clusters。

核心功能 (31 个工具)

jfrog_check_availability

Check if JFrog platform is ready and functioning or not

jfrog_create_local_repository

Create a new local repository in artifactroy

jfrog_create_remote_repository

Create a new remote repository in Artifactory to proxy external package registries

jfrog_create_virtual_repository

Create a new virtual repository in Artifactory that aggregates multiple repositories

jfrog_set_folder_property

Set properties on a folder in Artifactory, with optional recursive application

jfrog_list_repositories

List all repositories in Artifactory with optional filtering by type, package type, and project

jfrog_list_builds

return a list of all my build in the jfrog platform

jfrog_get_specific_build

Get details for a specific build by name, optionally scoped to a project

jfrog_list_runtime_clusters

return a list of all my runtime clusters in the jfrog platform

jfrog_get_runtime_specific_cluster

return a runtime cluster by id

jfrog_list_running_images

List all running container images across runtime clusters with their security and operational status

jfrog_list_environments

Get a list of all environments types (e.g. dev, prod, etc.) in the JFrog platform with their details

jfrog_list_projects

Get a list of all projects in the JFrog platform with their details

jfrog_create_project

Create a new project in the JFrog platform

jfrog_get_specific_project

Get detailed information about a specific project in the JFrog platform

jfrog_execute_aql_query

Execute an Artifactory Query Language (AQL) query to search for artifacts, builds, or other entities in JFrog Artifactory. AQL is a powerful query language for searching and filtering artifacts in Artifactory repositories. It supports complex criteria, sorting, pagination, and more.

jfrog_get_package_info

Useful for when you need to get publicly available information about a software package. it will provide you with the following information on it, if available in public sources: a short description of the package, its latest published version, the software license this software is distributed under, along with urls of its version control system, its homepage and whether it is known to be a malicious package (in any version).

jfrog_get_package_versions

Useful for when you need to get a list of versions of a publicly available package. it can tell you each version's publication date. Can also filter based on version vulnerability status.

jfrog_get_package_version_vulnerabilities

Useful for when you need the list of known vulnerabilities affecting a specific version of an open source package.

jfrog_get_vulnerability_info

Useful for when you need to get a specific vulnerability information, including its affected packages and versions.

jfrog_get_package_curation_status

Useful for checking the curation status of a specific package version. Returns one of the following statuses: approved, blocked, inconclusive.

jfrog_list_permission_targets

Get a list of all permission targets in the JFrog platform

jfrog_get_permission_target

Get detailed information about a specific permission target

jfrog_create_permission_target

Create a new permission target in the JFrog platform

jfrog_update_permission_target

Update an existing permission target in the JFrog platform

jfrog_delete_permission_target

Delete a permission target from the JFrog platform

jfrog_get_permission_resource

Get details of a specific resource type within a permission target

jfrog_update_permission_resource

Update a specific resource type within a permission target

jfrog_replace_permission_resource

Replace a specific resource type within a permission target

jfrog_delete_permission_resource

Delete a specific resource type from a permission target

jfrog_get_artifacts_summary

Get the summary of artifacts, one or many

README

JFrog MCP Server (🧪 Experimental)

smithery badge

Model Context Protocol (MCP) Server for the JFrog Platform API, enabling repository management, build tracking, release lifecycle management, and more.

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

Disclaimer

This is an experimental project intended to demonstrate JFrog's capabilities with MCP. It is not officially supported or verified by JFrog.

Update (2025):
JFrog now provides an official, secure, and remotely hosted MCP server for seamless integration with the JFrog Platform.
The managed MCP server is maintained by JFrog and is recommended for production use, offering enhanced security, reliability, and support.

Learn more and get started here:
👉 JFrog MCP Server Documentation

Features

  • Repository Management: Create and manage local, remote, and virtual repositories
  • Build Tracking: List and retrieve build information
  • Runtime Monitoring: View runtime clusters and running container images
  • Mission Control: View associated JFrog Platform instances
  • Artifact Search: Execute powerful AQL queries to search for artifacts and builds
  • Catalog and Curation: Access package information, versions, vulnerabilities, and check curation status
  • Xray: Access scan artifacts summary, group by severity per artifact

Tools

<details> <summary><strong>Repository Management</strong></summary>
  1. check_jfrog_availability

    • Check if JFrog platform is ready and functioning
    • Returns: Platform readiness status
  2. create_local_repository

    • Create a new local repository in Artifactory
    • Inputs:
      • key (string): Repository key
      • rclass (string): Repository class (must be "local")
      • packageType (string): Package type of the repository
      • description (optional string): Repository description
      • projectKey (optional string): Project key to assign the repository to
      • environments (optional string[]): Environments to assign the repository to
    • Returns: Created repository details
  3. create_remote_repository

    • Create a new remote repository in Artifactory to proxy external package registries
    • Inputs:
      • key (string): Repository key
      • rclass (string): Repository class (must be "remote")
      • packageType (string): Package type of the repository
      • url (string): URL to the remote repository
      • username (optional string): Remote repository username
      • password (optional string): Remote repository password
      • description (optional string): Repository description
      • projectKey (optional string): Project key to assign the repository to
      • environments (optional string[]): Environments to assign the repository to
      • Many other optional parameters for specific repository configurations
    • Returns: Created repository details
  4. create_virtual_repository

    • Create a new virtual repository in Artifactory that aggregates multiple repositories
    • Inputs:
      • key (string): Repository key
      • rclass (string): Repository class (must be "virtual")
      • packageType (string): Package type of the repository
      • repositories (string[]): List of repository keys to include in the virtual repository
      • description (optional string): Repository description
      • projectKey (optional string): Project key to assign the repository to
      • environments (optional string[]): Environments to assign the repository to
      • Other optional parameters for specific repository configurations
    • Returns: Created repository details
  5. list_repositories

    • List all repositories in Artifactory with optional filtering
    • Inputs:
      • type (optional string): Filter repositories by type (local, remote, virtual, federated, distribution)
      • packageType (optional string): Filter repositories by package type
      • project (optional string): Filter repositories by project key
    • Returns: List of repositories matching the filters
  6. set_folder_property

    • Set properties on a folder in Artifactory, with optional recursive application
    • Inputs:
      • folderPath (string): Path to the folder where properties should be set
      • properties (object): Key-value pairs of properties to set
      • recursive (optional boolean): Whether to apply properties recursively to sub-folders
    • Returns: Operation result
  7. execute_aql_query

    • Execute an Artifactory Query Language (AQL) query to search for artifacts, builds, or other entities in JFrog Artifactory
    • Inputs:
      • query (string): The AQL query to execute. Must follow AQL syntax (e.g., items.find({"repo":"my-repo"}).include("name","path"))
      • domain (optional string): The primary domain to search in (items, builds, archive.entries, build.promotions, releases)
      • transitive (optional boolean): Whether to search in remote repositories
      • limit (optional number): Maximum number of results to return
      • offset (optional number): Number of results to skip
      • include_fields (optional string[]): Fields to include in the results
      • sort_by (optional string): Field to sort results by
      • sort_order (optional string): Sort order (asc or desc)
    • Returns: Search results with metadata
</details> <details> <summary><strong>Build Management</strong></summary>
  1. list_jfrog_builds

    • Return a list of all builds in the JFrog platform
    • Returns: List of builds
  2. get_specific_build

    • Get details for a specific build by name
    • Inputs:
      • buildName (string): Name of the build to retrieve
      • project (optional string): Project key to scope the build search
    • Returns: Build details
</details> <details> <summary><strong>Runtime Management</strong></summary>
  1. list_jfrog_runtime_clusters

    • Return a list of all runtime clusters in the JFrog platform
    • Inputs:
      • limit (optional integer): The maximum number of clusters to return
      • next_key (optional string): The next key to use for pagination
    • Returns: List of runtime clusters
  2. get_jfrog_runtime_specific_cluster

    • Return a runtime cluster by ID
    • Inputs:
      • clusterId (integer): The ID of the cluster to retrieve
    • Returns: Cluster details
  3. list_jfrog_running_images

    • List all running container images across runtime clusters with their security and operational status
    • Inputs:
      • filters (optional string): Filters to apply
      • num_of_rows (optional integer): Number of rows to return
      • page_num (optional integer): Page number
      • statistics (optional boolean): Whether to include statistics
      • timePeriod (optional string): Time period to query
    • Returns: List of running images
</details> <details> <summary><strong>Access Control</strong></summary>
  1. list_jfrog_environments

    • Get a list of all environments types in the JFrog platform with their details
    • Inputs:
    • Returns: List of environments
  2. list_jfrog_projects

    • Get a list of all projects in the JFrog platform with their details
    • Inputs:
    • Returns: List of projects
  3. get_specific_project

    • Get detailed information about a specific project in the JFrog platform
    • Inputs:
      • project_key (string): The unique key of the project to retrieve
    • Returns: Project details
  4. create_project

    • Create a new project in the JFrog platform
    • Inputs:
      • project_key (string): Unique identifier for the project
      • display_name (string): Display name of the project
      • description (string): Description of the project
      • admin_privileges (object): Administrative privileges for the project
      • storage_quota_bytes (number): Storage quota in bytes (-1 for unlimited)
    • Returns: Created project details
</details> <details> <summary><strong>Catalog and Curation</strong></summary>
  1. jfrog_get_package_info

    • Get publicly available information about a software package
    • Inputs:
      • type (string): The type of package (pypi, npm, maven, golang, nuget, huggingface, rubygems)
      • name (string): The name of the package, as it appears in the package repository
      • version (optional string): The version of the package (default: "latest")
    • Returns: Package information including description, latest version, license, and URLs
  2. jfrog_get_package_versions

    • Get a list of versions of a publicly available package with publication dates
    • Inputs:
      • type (string): The type of package (pypi, npm, maven, golang, nuget, huggingface, rubygems)
      • name (string): The name of the package, as it appears in the package repository
    • Returns: List of package versions with publication dates
  3. jfrog_get_package_version_vulnerabilities

    • Get a list of known vulnerabilities affecting a specific version of an open source package
    • Inputs:
      • type (string): The type of package (pypi, npm, maven, golang, nuget, huggingface, rubygems)
      • name (string): The name of the package, as it appears in the package repository
      • version (optional string): The version of the package (default: "latest")
      • pageSize (optional number): Number of vulnerabilities to return per page (default: 10)
      • pageCount (optional number): Number of pages to return (default: 1)
    • Returns: List of vulnerabilities affecting the specified package version
  4. jfrog_get_vulnerability_info

    • Get detailed information about a specific vulnerability, including affected packages and versions
    • Inputs:
      • cve_id (string): The CVE ID or vulnerability identifier to look up
      • pageSize (optional number): Number of vulnerabilities to return per page (default: 10)
      • pageCount (optional number): Number of pages to return (default: 1)
    • Returns: Detailed vulnerability information and affected packages
  5. jfrog_get_package_curation_status

    • Check the curation status of a specific package version
    • Inputs:
      • packageType (string): The type of package (pypi, npm, maven, golang, nuget, huggingface, rubygems)
      • packageName (string): The name of the package, as it appears in the package repository
      • packageVersion (string): The version of the package, as it appears in the package repository
    • Returns: Curation status (approved, blocked, or inconclusive)
</details> <details> <summary><strong>Xray</strong></summary>
  1. jfrog_get_artifacts_summary
    • Get artifacts issues summary in a repository or build, categorized and counted by severity (Low, Medium, High, Critical, Unkown)
    • Inputs:
      • paths (string array): An array of paths to the artifacts from which to create the summary from
    • Returns: A summary based on vulnerability count per severity for each artifact in the provided array plus the total issues
</details>

Setup

Installing via Smithery

To install mcp-jfrog for Claude Desktop automatically via Smithery:

bash
npx -y @smithery/cli install @jfrog/mcp-jfrog --client claude

Prerequisites

  • Node.js v18 or higher
  • Docker (if using Docker deployment, See Docker Deployment )
  • A valid JFrog platform instance with appropriate permissions
  • Access to create and manage access tokens in your JFrog platform instance

Environment Variables

  • JFROG_ACCESS_TOKEN: Your JFrog access token (required)
  • JFROG_URL: Base URL for your JFrog platform (required)
  • TRANSPORT: Transport mode to use, set to 'sse' to enable SSE transport (default: stdio)
  • PORT: Port number to use for SSE transport (default: 8080)
  • CORS_ORIGIN: CORS origin allowed for SSE connections (default: '*')
  • LOG_LEVEL: Logging level: DEBUG, INFO, WARN, ERROR (default: INFO)
  • MAX_RECONNECT_ATTEMPTS: Maximum number of reconnection attempts for SSE server (default: 5)
  • RECONNECT_DELAY_MS: Base delay in milliseconds between reconnection attempts (default: 2000)

JFrog Token (JFROG_ACCESS_TOKEN)

To use this MCP server, you need to create a JFrog Access Token or use an identity token with appropriate permissions:

For information on how to create a JFrog Token, please refer to the JFrog official documentations:

JFrog URL (JFROG_URL)

Your JFrog platform instance URL (e.g. https://acme.jfrog.io)

SSE Transport Features

The SSE transport mode includes the following features:

  • Connection Management: Each SSE connection is tracked with a unique ID, allowing clients to maintain state across reconnection attempts.
  • Structured Logging: Detailed logs with timestamps, severity levels, and relevant contextual information.
  • Connection Resilience: Automatic reconnection attempts with exponential backoff if the server fails to start.
  • Health Endpoint: A /health endpoint that returns server status information.
  • Connection Tracking: Real-time tracking of active connections with periodic statistics logging.
  • Performance Metrics: Execution time tracking for tool operations and HTTP requests.

When using SSE mode:

  1. Clients should connect to the /sse endpoint, optionally providing a connectionId query parameter for session tracking.
  2. Client requests should be sent to the /messages endpoint with the same connectionId as a query parameter.
  3. The server will respond with server-sent events through the established SSE connection.

Example client connection with connection ID:

code
GET /sse?connectionId=client123

Example client request:

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

{
  "jsonrpc": "2.0",
  "method": "listTools",
  "id": 1
}

How to build

Clone the repo to your local machine using git clone and cd into the project directory:

bash
git clone git@github.com:jfrog/mcp-jfrog.git

cd mcp-jfrog

Build as a Docker image:

bash
docker build -t mcp/jfrog -f Dockerfile .

Build as an npm module:

bash
npm i && npm run build

Usage

<details> <summary><strong>Use with Cursor</strong></summary> Add the following to your `~/.cursor/mcp.json`:

npm

json
{
  "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

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"
      },
      "serverUrl": "http://localhost:8080/sse"
    }
  }
}

SSE Transport Mode

To use the JFrog MCP Server with SSE transport mode (useful for web interfaces like Cursor's webview):

json
{
  "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"
      }
    }
  }
}

Note: For SSE mode, you need to add the serverUrl parameter pointing to your SSE endpoint, and expose the port used by the server (-p 8080:8080).

</details> <details> <summary><strong>Use with Claude Desktop</strong></summary>

Add the following to your claude_desktop_config.json:

Docker

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

json
{
"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 Transport Mode

For Claude Desktop with SSE transport:

json
{
  "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"
      }
    }
  }
}
code
</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.

常见问题

JFrog MCP Server 是什么?

通过集成式 MCP server 管理 JFrog 仓库、追踪 builds 与发布生命周期,使用强大的 AQL 查询搜索 artifacts,并有效监控 runtime clusters。

JFrog MCP Server 提供哪些工具?

提供 31 个工具,包括 jfrog_check_availability、jfrog_create_local_repository、jfrog_create_remote_repository

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描109.6k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描109.6k

接口设计评审

by alirezarezvani

Universal
热门

审查 REST API 设计是否符合行业规范,自动检查命名、HTTP 方法、状态码与文档覆盖,识别破坏性变更并给出设计评分,适合评审接口方案和版本迭代前把关。

做API和架构方案时,它能帮你提前揪出接口设计问题并对齐最佳实践,评审视角系统,团队协作更省心。

平台与服务
未扫描9.0k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
82.9k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
78.3k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
34.5k

评论