
JFrog MCP Server
一个实验性的模型上下文协议服务器,可以访问 JFrog 平台 API 的各项功能,包括仓库管理、构建跟踪、构件搜索和软件包安全分析。
README
JFrog MCP 服务器 (🧪 实验性)
用于 JFrog 平台 API 的模型上下文协议 (MCP) 服务器,支持仓库管理、构建跟踪、发布生命周期管理等。
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
免责声明
这是一个实验性项目,旨在演示 JFrog 在 MCP 方面的能力。 它未经 JFrog 官方支持或验证。
功能
- 仓库管理: 创建和管理本地、远程和虚拟仓库
- 构建跟踪: 列出和检索构建信息
- 运行时监控: 查看运行时集群和正在运行的容器镜像
- Mission Control: 查看关联的 JFrog 平台实例
- 制品搜索: 执行强大的 AQL 查询来搜索制品和构建
- 目录和管理: 访问软件包信息、版本、漏洞并检查管理状态
工具
<details> <summary><strong>仓库管理</strong></summary>
-
check_jfrog_availability
- 检查 JFrog 平台是否准备就绪并正常运行
- 返回:平台就绪状态
-
create_local_repository
- 在 Artifactory 中创建一个新的本地仓库
- 输入:
key
(string): 仓库键rclass
(string): 仓库类(必须为“local”)packageType
(string): 仓库的软件包类型description
(optional string): 仓库描述projectKey
(optional string): 将仓库分配到的项目键environments
(optional string[]): 将仓库分配到的环境
- 返回:已创建的仓库详细信息
-
create_remote_repository
- 在 Artifactory 中创建一个新的远程仓库,以代理外部软件包注册表
- 输入:
key
(string): 仓库键rclass
(string): 仓库类(必须为“remote”)packageType
(string): 仓库的软件包类型url
(string): 远程仓库的 URLusername
(optional string): 远程仓库用户名password
(optional string): 远程仓库密码description
(optional string): 仓库描述projectKey
(optional string): 将仓库分配到的项目键environments
(optional string[]): 将仓库分配到的环境- 许多其他可选参数用于特定仓库配置
- 返回:已创建的仓库详细信息
-
create_virtual_repository
- 在 Artifactory 中创建一个新的虚拟仓库,该仓库聚合多个仓库
- 输入:
key
(string): 仓库键rclass
(string): 仓库类(必须为“virtual”)packageType
(string): 仓库的软件包类型repositories
(string[]): 要包含在虚拟仓库中的仓库键列表description
(optional string): 仓库描述projectKey
(optional string): 将仓库分配到的项目键environments
(optional string[]): 将仓库分配到的环境- 其他可选参数用于特定仓库配置
- 返回:已创建的仓库详细信息
-
list_repositories
- 列出 Artifactory 中的所有仓库,并可选择进行过滤
- 输入:
type
(optional string): 按类型过滤仓库(local、remote、virtual、federated、distribution)packageType
(optional string): 按软件包类型过滤仓库project
(optional string): 按项目键过滤仓库
- 返回:与过滤器匹配的仓库列表
-
set_folder_property
- 在 Artifactory 的文件夹上设置属性,并可选择递归应用
- 输入:
folderPath
(string): 应设置属性的文件夹的路径properties
(object): 要设置的属性的键值对recursive
(optional boolean): 是否将属性递归应用于子文件夹
- 返回:操作结果
-
execute_aql_query
- 执行 Artifactory 查询语言 (AQL) 查询,以搜索 JFrog Artifactory 中的制品、构建或其他实体
- 输入:
query
(string): 要执行的 AQL 查询。 必须遵循 AQL 语法(例如,items.find({"repo":"my-repo"}).include("name","path"))domain
(optional string): 要搜索的主域(items、builds、archive.entries、build.promotions、releases)transitive
(optional boolean): 是否在远程仓库中搜索limit
(optional number): 要返回的最大结果数offset
(optional number): 要跳过的结果数include_fields
(optional string[]): 要包含在结果中的字段sort_by
(optional string): 用于对结果进行排序的字段sort_order
(optional string): 排序顺序(asc 或 desc)
- 返回:带有元数据的搜索结果 </details>
<details> <summary><strong>构建管理</strong></summary>
-
list_jfrog_builds
- 返回 JFrog 平台中所有构建的列表
- 返回:构建列表
-
get_specific_build
- 按名称获取特定构建的详细信息
- 输入:
buildName
(string): 要检索的构建的名称project
(optional string): 用于限定构建搜索范围的项目键
- 返回:构建详细信息 </details>
<details> <summary><strong>运行时管理</strong></summary>
-
list_jfrog_runtime_clusters
- 返回 JFrog 平台中所有运行时集群的列表
- 输入:
limit
(optional integer): 要返回的最大集群数next_key
(optional string): 用于分页的下一个键
- 返回:运行时集群列表
-
get_jfrog_runtime_specific_cluster
- 按 ID 返回运行时集群
- 输入:
clusterId
(integer): 要检索的集群的 ID
- 返回:集群详细信息
-
list_jfrog_running_images
- 列出跨运行时集群的所有正在运行的容器镜像及其安全和操作状态
- 输入:
filters
(optional string): 要应用的过滤器num_of_rows
(optional integer): 要返回的行数page_num
(optional integer): 页码statistics
(optional boolean): 是否包含统计信息timePeriod
(optional string): 要查询的时间段
- 返回:正在运行的镜像列表 </details>
<details> <summary><strong>访问控制</strong></summary>
-
list_jfrog_environments
- 获取 JFrog 平台中所有环境类型的列表及其详细信息
- 输入:
- 返回:环境列表
-
list_jfrog_projects
- 获取 JFrog 平台中所有项目的列表及其详细信息
- 输入:
- 返回:项目列表
-
get_specific_project
- 获取有关 JFrog 平台中特定项目的详细信息
- 输入:
project_key
(string): 要检索的项目的唯一键
- 返回:项目详细信息
-
create_project
- 在 JFrog 平台中创建一个新项目
- 输入:
project_key
(string): 项目的唯一标识符display_name
(string): 项目的显示名称description
(string): 项目的描述admin_privileges
(object): 项目的管理权限storage_quota_bytes
(number): 存储配额(以字节为单位)(-1 表示无限制)
- 返回:已创建的项目详细信息 </details>
<details> <summary><strong>目录和管理</strong></summary>
-
jfrog_get_package_info
- 获取有关软件程序包的公开可用信息
- 输入:
type
(string): 程序包的类型(pypi、npm、maven、golang、nuget、huggingface、rubygems)name
(string): 程序包的名称,如程序包仓库中所示version
(optional string): 程序包的版本(默认值:“latest”)
- 返回:程序包信息,包括描述、最新版本、许可证和 URL
-
jfrog_get_package_versions
- 获取具有发布日期的公开可用程序包的版本列表
- 输入:
type
(string): 程序包的类型(pypi、npm、maven、golang、nuget、huggingface、rubygems)name
(string): 程序包的名称,如程序包仓库中所示
- 返回:具有发布日期的程序包版本列表
-
jfrog_get_package_version_vulnerabilities
- 获取影响开源程序包特定版本的已知漏洞列表
- 输入:
type
(string): 程序包的类型(pypi、npm、maven、golang、nuget、huggingface、rubygems)name
(string): 程序包的名称,如程序包仓库中所示version
(optional string): 程序包的版本(默认值:“latest”)pageSize
(optional number): 每页返回的漏洞数(默认值:10)pageCount
(optional number): 要返回的页数(默认值:1)
- 返回:影响指定程序包版本的漏洞列表
-
jfrog_get_vulnerability_info
- 获取有关特定漏洞的详细信息,包括受影响的程序包和版本
- 输入:
cve_id
(string): 要查找的 CVE ID 或漏洞标识符pageSize
(optional number): 每页返回的漏洞数(默认值:10)pageCount
(optional number): 要返回的页数(默认值:1)
- 返回:详细的漏洞信息和受影响的程序包
-
jfrog_get_package_curation_status
- 检查特定程序包版本的管理状态
- 输入:
packageType
(string): 程序包的类型(pypi、npm、maven、golang、nuget、huggingface、rubygems)packageName
(string): 程序包的名称,如程序包仓库中所示packageVersion
(string): 程序包的版本,如程序包仓库中所示
- 返回:管理状态(已批准、已阻止或不确定) </details>
安装
通过 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(必需)
JFrog 令牌 (JFROG_ACCESS_TOKEN
)
要使用此 MCP 服务器,您需要创建一个 JFrog 访问令牌或使用具有适当权限的身份令牌:
有关如何创建 JFrog 令牌的信息,请参阅 JFrog 官方文档:
JFrog URL (JFROG_URL
)
您的 JFrog 平台实例 URL(例如 https://acme.jfrog.io)
如何构建
使用 git clone
将 repo 克隆到您的本地计算机,然后 cd
进入项目目录:
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" // Your JFrog platform URL
}
}
}
}
</details>
<details> <summary><strong>与 Claude Desktop 一起使用</strong></summary>
将以下内容添加到您的 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
}
}
}
}
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>"
}
}
}
}
</details>
许可证
此 MCP 服务器已获得 Apache License 2.0 许可。 这意味着您可以自由使用、修改和分发该软件,但须遵守 Apache License 2.0 的条款和条件。 有关更多详细信息,请参阅项目存储库中的 LICENSE.md 文件。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。