JFrog MCP 服务器(🧪 实验性)
JFrog 平台 API 的模型上下文协议 (MCP) 服务器,支持存储库管理、构建跟踪、发布生命周期管理等。
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
免责声明
这是一个实验项目,旨在展示 JFrog 使用 MCP 的功能。它尚未获得 JFrog 的官方支持或验证。
特征
存储库管理:创建和管理本地、远程和虚拟存储库
构建跟踪:列出并检索构建信息
运行时监控:查看运行时集群和正在运行的容器镜像
任务控制:查看关联的 JFrog 平台实例
工件搜索:执行强大的 AQL 查询来搜索工件和构建
目录和管理:访问软件包信息、版本、漏洞并检查管理状态
Xray :访问扫描工件摘要,按每个工件的严重程度分组
工具
check_jfrog_availability检查 JFrog 平台是否已准备就绪并正常运行
返回:平台就绪状态
create_local_repository在 Artifactory 中创建新的本地存储库
输入:
key(字符串):存储库键rclass(字符串):存储库类(必须是“本地”)packageType(字符串):存储库的包类型description(可选字符串):存储库描述projectKey(可选字符串):要分配存储库的项目键environments(可选 string[]):将存储库分配到的环境
返回:创建的存储库详细信息
create_remote_repository在 Artifactory 中创建一个新的远程存储库来代理外部包注册表
输入:
key(字符串):存储库键rclass(字符串):存储库类(必须是“远程”)packageType(字符串):存储库的包类型url(字符串):远程存储库的 URLusername(可选字符串):远程存储库用户名password(可选字符串):远程存储库密码description(可选字符串):存储库描述projectKey(可选字符串):要分配存储库的项目键environments(可选 string[]):将存储库分配到的环境特定存储库配置的许多其他可选参数
返回:创建的存储库详细信息
create_virtual_repository在 Artifactory 中创建一个聚合多个存储库的新虚拟存储库
输入:
key(字符串):存储库键rclass(字符串):存储库类(必须是“虚拟的”)packageType(字符串):存储库的包类型repositories(string[]):要包含在虚拟存储库中的存储库密钥列表description(可选字符串):存储库描述projectKey(可选字符串):要分配存储库的项目键environments(可选 string[]):将存储库分配到的环境特定存储库配置的其他可选参数
返回:创建的存储库详细信息
list_repositories列出 Artifactory 中的所有存储库,并可选择过滤
输入:
type(可选字符串):按类型过滤存储库(本地、远程、虚拟、联合、分发)packageType(可选字符串):按包类型过滤存储库project(可选字符串):按项目键过滤存储库
返回:符合过滤器的存储库列表
set_folder_property设置 Artifactory 中文件夹的属性,并可选择递归应用
输入:
folderPath(字符串):应设置属性的文件夹路径properties(对象):要设置的属性的键值对recursive(可选布尔值):是否将属性递归应用于子文件夹
返回:运算结果
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(可选 string[]):结果中包含的字段sort_by(可选字符串):对结果进行排序的字段sort_order(可选字符串):排序顺序(升序或降序)
返回:带有元数据的搜索结果
list_jfrog_builds返回 JFrog 平台中所有构建的列表
返回:构建列表
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(可选字符串):包的版本(默认值:“最新”)
返回:包信息,包括描述、最新版本、许可证和 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(可选字符串):包的版本(默认值:“最新”)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:
先决条件
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 Token 的信息,请参阅 JFrog 官方文档:
JFrog 网址 ( JFROG_URL )
您的 JFrog 平台实例 URL(例如https://acme.jfrog.io )
SSE 传输功能
SSE传输模式包括以下特点:
连接管理:每个 SSE 连接都使用唯一的 ID 进行跟踪,从而允许客户端在重新连接时保持状态。
结构化日志:带有时间戳、严重性级别和相关上下文信息的详细日志。
连接弹性:如果服务器启动失败,则使用指数退避自动重新连接尝试。
健康端点:返回服务器状态信息的
/health端点。连接跟踪:通过定期统计记录实时跟踪活动连接。
性能指标:工具操作和 HTTP 请求的执行时间跟踪。
使用 SSE 模式时:
客户端应该连接到
/sse端点,可选择提供connectionId查询参数以进行会话跟踪。客户端请求应使用相同的
connectionId作为查询参数发送到/messages端点。服务器将通过已建立的 SSE 连接以服务器发送的事件进行响应。
带有连接 ID 的客户端连接示例:
客户端请求示例:
如何构建
使用git clone将 repo 克隆到本地计算机并cd项目目录:
构建为 Docker 镜像:
构建为 npm 模块:
用法
npm
Docker
SSE 传输模式
要使用具有 SSE 传输模式的 JFrog MCP 服务器(对于 Cursor 的 webview 等 web 界面很有用):
注意:对于 SSE 模式,您需要添加指向您的 SSE 端点的serverUrl参数,并公开服务器使用的端口(-p 8080:8080)。
将以下内容添加到您的claude_desktop_config.json中:
Docker
npm
SSE 传输模式
对于具有 SSE 传输的 Claude Desktop:
Related MCP Servers
- Asecurity-licenseAqualityA Model Context Protocol server that integrates with Figma's API, allowing interaction with Figma files, comments, components, projects, and webhook management.Last updated -5581
- -security-license-qualityA Model Context Protocol server that enables interaction with Foundry tools through natural language, allowing users to create projects, build contracts, run tests, and manage Ethereum development environments.Last updated -1MIT License
- Asecurity-licenseAqualityA Model Context Protocol server that enables interaction with PostgreSQL databases for analyzing setups, debugging issues, managing schemas, migrating data, and monitoring performance.Last updated -111MIT License
MockLoop MCP Serverofficial
-security-license-qualityA Model Context Protocol server that generates and runs mock API servers from API documentation like OpenAPI/Swagger specs, enabling developers and AI assistants to quickly spin up mock backends for development and testing.Last updated -12MIT License