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 服务器文档
check_jfrog_availability
create_local_repository
key (字符串):仓库键rclass (字符串):仓库类(必须是 "local")packageType (字符串):仓库的包类型description (可选字符串):仓库描述projectKey (可选字符串):分配给仓库的项目键environments (可选字符串数组):分配给仓库的环境create_remote_repository
key (字符串):仓库键rclass (字符串):仓库类(必须是 "remote")packageType (字符串):仓库的包类型url (字符串):到远程仓库的 URLusername (可选字符串):远程仓库用户名password (可选字符串):远程仓库密码description (可选字符串):仓库描述projectKey (可选字符串):分配给仓库的项目键environments (可选字符串数组):分配给仓库的环境create_virtual_repository
key (字符串):仓库键rclass (字符串):仓库类(必须是 "virtual")packageType (字符串):仓库的包类型repositories (字符串数组):要包含在虚拟仓库中的仓库键列表description (可选字符串):仓库描述projectKey (可选字符串):分配给仓库的项目键environments (可选字符串数组):分配给仓库的环境list_repositories
type (可选字符串):按类型过滤仓库(local, remote, virtual, federated, distribution)packageType (可选字符串):按包类型过滤仓库project (可选字符串):按项目键过滤仓库set_folder_property
folderPath (字符串):要设置属性的文件夹路径properties (对象):要设置的属性键值对recursive (可选布尔值):是否递归地将属性应用于子文件夹execute_aql_query
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)list_jfrog_builds
get_specific_build
buildName (字符串):要检索的构建名称project (可选字符串):限定构建搜索的项目键list_jfrog_runtime_clusters
limit (可选整数):要返回的最大集群数next_key (可选字符串):用于分页的下一个键get_jfrog_runtime_specific_cluster
clusterId (整数):要检索的集群 IDlist_jfrog_running_images
filters (可选字符串):要应用的过滤器num_of_rows (可选整数):要返回的行数page_num (可选整数):页码statistics (可选布尔值):是否包括统计信息timePeriod (可选字符串):要查询的时间段list_jfrog_environments
list_jfrog_projects
get_specific_project
project_key (字符串):要检索的项目的唯一键create_project
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 (可选字符串):包的版本(默认:"latest")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 (可选字符串):包的版本(默认:"latest")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 自动安装 mcp-jfrog 到 Claude Desktop:
npx -y @smithery/cli install @jfrog/mcp-jfrog --client claude
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_ACCESS_TOKEN)要使用此 MCP 服务器,您需要创建一个 JFrog 访问令牌或使用具有适当权限的身份令牌:
有关如何创建 JFrog 令牌的信息,请参考 JFrog 官方文档:
JFROG_URL)您的 JFrog 平台实例 URL(例如 https://acme.jfrog.io)
SSE 传输模式包括以下特性:
/health 端点,返回服务器状态信息。使用 SSE 模式时:
/sse 端点,可选地提供 connectionId 查询参数以进行会话跟踪。/messages 端点,带有相同的 connectionId 作为查询参数。客户端连接示例带连接 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
{
"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>"
}
}
}
{
"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"
}
}
}
要使用 JFrog MCP 服务器与 SSE 传输模式(适用于像 Cursor 的 webview 这样的 Web 接口):
{
"mcpServers": {
"jfrog-sse": {
"command": "docker",
"args": [
"run",
"--rm",
"-p",
"8080:8080",
"-e",
"TRANSPORT=sse