返回市场
麦普-jfrog

麦普-jfrog

作者:jfrog110 星标更新:2025-11-18

项目介绍

JFrog MCP Server (🧪 实验性)

smithery 徽章

JFrog 平台 API 的 Model Context Protocol (MCP) 服务器,支持仓库管理、构建跟踪、发布生命周期管理和更多功能。

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

免责声明

这是一个实验项目,旨在展示 JFrog 在 MCP 方面的能力。它没有得到 JFrog 的正式支持或验证。

更新(2025):
JFrog 现在提供一个官方的、安全的、远程托管的 MCP 服务器,以便与 JFrog 平台无缝集成。
这个托管的 MCP 服务器由 JFrog 维护,并推荐用于生产环境,提供增强的安全性、可靠性和支持。

了解更多并开始使用:
👉 JFrog MCP 服务器文档

功能

  • 仓库管理:创建和管理本地、远程和虚拟仓库
  • 构建跟踪:列出和检索构建信息
  • 运行时监控:查看运行时集群和正在运行的容器镜像
  • 任务控制:查看关联的 JFrog 平台实例
  • 工件搜索:执行强大的 AQL 查询以搜索工件和构建
  • 目录和整理:访问包信息、版本、漏洞,并检查整理状态
  • Xray:访问扫描工件摘要,按工件严重性分组

工具

<details> <summary><strong>仓库管理</strong></summary>
  1. check_jfrog_availability

    • 检查 JFrog 平台是否准备好并正常工作
    • 返回:平台准备就绪状态
  2. create_local_repository

    • 在 Artifactory 中创建一个新的本地仓库
    • 输入:
      • key (字符串):仓库键
      • rclass (字符串):仓库类(必须是 "local")
      • packageType (字符串):仓库的包类型
      • description (可选字符串):仓库描述
      • projectKey (可选字符串):分配给仓库的项目键
      • environments (可选字符串数组):分配给仓库的环境
    • 返回:创建的仓库详情
  3. create_remote_repository

    • 在 Artifactory 中创建一个新的远程仓库,以代理外部包注册表
    • 输入:
      • key (字符串):仓库键
      • rclass (字符串):仓库类(必须是 "remote")
      • packageType (字符串):仓库的包类型
      • url (字符串):到远程仓库的 URL
      • username (可选字符串):远程仓库用户名
      • password (可选字符串):远程仓库密码
      • description (可选字符串):仓库描述
      • projectKey (可选字符串):分配给仓库的项目键
      • environments (可选字符串数组):分配给仓库的环境
      • 许多其他特定仓库配置的可选参数
    • 返回:创建的仓库详情
  4. create_virtual_repository

    • 在 Artifactory 中创建一个新的虚拟仓库,聚合多个仓库
    • 输入:
      • key (字符串):仓库键
      • rclass (字符串):仓库类(必须是 "virtual")
      • packageType (字符串):仓库的包类型
      • repositories (字符串数组):要包含在虚拟仓库中的仓库键列表
      • description (可选字符串):仓库描述
      • projectKey (可选字符串):分配给仓库的项目键
      • environments (可选字符串数组):分配给仓库的环境
      • 其他特定仓库配置的可选参数
    • 返回:创建的仓库详情
  5. list_repositories

    • 列出 Artifactory 中的所有仓库,可选过滤
    • 输入:
      • type (可选字符串):按类型过滤仓库(local, remote, virtual, federated, distribution)
      • packageType (可选字符串):按包类型过滤仓库
      • project (可选字符串):按项目键过滤仓库
    • 返回:匹配过滤条件的仓库列表
  6. set_folder_property

    • 在 Artifactory 中设置文件夹属性,可选递归应用
    • 输入:
      • folderPath (字符串):要设置属性的文件夹路径
      • properties (对象):要设置的属性键值对
      • recursive (可选布尔值):是否递归地将属性应用于子文件夹
    • 返回:操作结果
  7. execute_aql_query

    • 执行 Artifactory 查询语言 (AQL) 查询,以搜索 JFrog Artifactory 中的工件、构建或其他实体
    • 输入:
      • query (字符串):要执行的 AQL 查询。必须遵循 AQL 语法(例如,items.find({"repo":"my-repo"}).include("name","path"))
      • domain (可选字符串):要搜索的主要域(items, builds, archive.entries, build.promotions, releases)
      • transitive (可选布尔值):是否在远程仓库中搜索
      • limit (可选数字):返回的最大结果数
      • offset (可选数字):要跳过的结果数
      • include_fields (可选字符串数组):要在结果中包含的字段
      • sort_by (可选字符串):按哪个字段排序结果
      • sort_order (可选字符串):排序顺序(asc 或 desc)
    • 返回:带有元数据的搜索结果
</details> <details> <summary><strong>构建管理</strong></summary>
  1. list_jfrog_builds

    • 返回 JFrog 平台中的所有构建列表
    • 返回:构建列表
  2. get_specific_build

    • 根据名称获取特定构建的详细信息
    • 输入:
      • buildName (字符串):要检索的构建名称
      • project (可选字符串):限定构建搜索的项目键
    • 返回:构建详细信息
</details> <details> <summary><strong>运行时管理</strong></summary>
  1. list_jfrog_runtime_clusters

    • 返回 JFrog 平台中的所有运行时集群列表
    • 输入:
      • limit (可选整数):要返回的最大集群数
      • next_key (可选字符串):用于分页的下一个键
    • 返回:运行时集群列表
  2. get_jfrog_runtime_specific_cluster

    • 根据 ID 返回运行时集群
    • 输入:
      • clusterId (整数):要检索的集群 ID
    • 返回:集群详细信息
  3. list_jfrog_running_images

    • 列出跨运行时集群的所有正在运行的容器镜像及其安全和操作状态
    • 输入:
      • filters (可选字符串):要应用的过滤器
      • num_of_rows (可选整数):要返回的行数
      • page_num (可选整数):页码
      • statistics (可选布尔值):是否包括统计信息
      • timePeriod (可选字符串):要查询的时间段
    • 返回:正在运行的镜像列表
</details> <details> <summary><strong>访问控制</strong></summary>
  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 表示无限制)
    • 返回:创建的项目详细信息
</details> <details> <summary><strong>目录和整理</strong></summary>
  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 (可选数字):每页返回的漏洞数量(默认:10)
      • pageCount (可选数字):返回的页数(默认:1)
    • 返回:影响指定包版本的漏洞列表
  4. jfrog_get_vulnerability_info

    • 获取特定漏洞的详细信息,包括受影响的包和版本
    • 输入:
      • cve_id (字符串):要查找的 CVE ID 或漏洞标识符
      • pageSize (可选数字):每页返回的漏洞数量(默认:10)
      • pageCount (可选数字):返回的页数(默认:1)
    • 返回:详细的漏洞信息和受影响的包
  5. jfrog_get_package_curation_status

    • 检查特定包版本的整理状态
    • 输入:
      • packageType (字符串):包的类型(pypi, npm, maven, golang, nuget, huggingface, rubygems)
      • packageName (字符串):包在包注册表中的名称
      • packageVersion (字符串):包在包注册表中的版本
    • 返回:整理状态(批准、阻止或不确定)
</details> <details> <summary><strong>Xray</strong></summary>
  1. jfrog_get_artifacts_summary
    • 获取仓库或构建中的工件问题摘要,按严重性分类和计数(低、中、高、关键、未知)
    • 输入:
      • paths (字符串数组):从这些工件路径生成摘要的数组
    • 返回:基于每个提供的数组中工件的漏洞计数按严重性分类的摘要以及总问题数
</details>

安装

通过 Smithery 安装

要通过 Smithery 自动安装 mcp-jfrog 到 Claude Desktop:

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 访问令牌或使用具有适当权限的身份令牌:

有关如何创建 JFrog 令牌的信息,请参考 JFrog 官方文档:

JFrog URL (JFROG_URL)

您的 JFrog 平台实例 URL(例如 https://acme.jfrog.io)

SSE 传输特性

SSE 传输模式包括以下特性:

  • 连接管理:每个 SSE 连接都用唯一的 ID 跟踪,允许客户端在重新连接尝试之间维护状态。
  • 结构化日志:带有时间戳、严重级别和相关上下文信息的详细日志。
  • 连接弹性:如果服务器无法启动,自动进行指数退避的重新连接尝试。
  • 健康端点:一个 /health 端点,返回服务器状态信息。
  • 连接跟踪:实时跟踪活动连接,并定期记录统计信息。
  • 性能指标:工具操作和 HTTP 请求的执行时间跟踪。

使用 SSE 模式时:

  1. 客户端应连接到 /sse 端点,可选地提供 connectionId 查询参数以进行会话跟踪。
  2. 客户端请求应发送到 /messages 端点,带有相同的 connectionId 作为查询参数。
  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@github.com:jfrog/mcp-jfrog.git

cd mcp-jfrog

构建为 Docker 镜像:

docker build -t mcp/jfrog -f Dockerfile .

构建为 npm 模块:

npm i && npm run build

使用方法

<details> <summary><strong>与 Cursor 一起使用</strong></summary> 在您的 `~/.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 传输模式

要使用 JFrog MCP 服务器与 SSE 传输模式(适用于像 Cursor 的 webview 这样的 Web 接口):

{
  "mcpServers": { 
    "jfrog-sse": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-p",
        "8080:8080",
        "-e",
        "TRANSPORT=sse