JFrog Ltd./mcp-jfrog
Built by Metorial, the integration platform for agentic AI.
JFrog Ltd./mcp-jfrog
Server Summary
Repository Management
Build Tracking
Runtime Monitoring
Artifact Search
Release Lifecycle Management
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
This is an experimental project intended to demonstrate JFrog's capabilities with MCP. It is not officially supported or verified by JFrog.
Repository Management
check_jfrog_availability
create_local_repository
key
(string): Repository keyrclass
(string): Repository class (must be "local")packageType
(string): Package type of the repositorydescription
(optional string): Repository descriptionprojectKey
(optional string): Project key to assign the repository toenvironments
(optional string[]): Environments to assign the repository tocreate_remote_repository
key
(string): Repository keyrclass
(string): Repository class (must be "remote")packageType
(string): Package type of the repositoryurl
(string): URL to the remote repositoryusername
(optional string): Remote repository usernamepassword
(optional string): Remote repository passworddescription
(optional string): Repository descriptionprojectKey
(optional string): Project key to assign the repository toenvironments
(optional string[]): Environments to assign the repository tocreate_virtual_repository
key
(string): Repository keyrclass
(string): Repository class (must be "virtual")packageType
(string): Package type of the repositoryrepositories
(string[]): List of repository keys to include in the virtual repositorydescription
(optional string): Repository descriptionprojectKey
(optional string): Project key to assign the repository toenvironments
(optional string[]): Environments to assign the repository tolist_repositories
type
(optional string): Filter repositories by type (local, remote, virtual, federated, distribution)packageType
(optional string): Filter repositories by package typeproject
(optional string): Filter repositories by project keyset_folder_property
folderPath
(string): Path to the folder where properties should be setproperties
(object): Key-value pairs of properties to setrecursive
(optional boolean): Whether to apply properties recursively to sub-foldersexecute_aql_query
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 repositorieslimit
(optional number): Maximum number of results to returnoffset
(optional number): Number of results to skipinclude_fields
(optional string[]): Fields to include in the resultssort_by
(optional string): Field to sort results bysort_order
(optional string): Sort order (asc or desc)Build Management
list_jfrog_builds
get_specific_build
buildName
(string): Name of the build to retrieveproject
(optional string): Project key to scope the build searchRuntime Management
list_jfrog_runtime_clusters
limit
(optional integer): The maximum number of clusters to returnnext_key
(optional string): The next key to use for paginationget_jfrog_runtime_specific_cluster
clusterId
(integer): The ID of the cluster to retrievelist_jfrog_running_images
filters
(optional string): Filters to applynum_of_rows
(optional integer): Number of rows to returnpage_num
(optional integer): Page numberstatistics
(optional boolean): Whether to include statisticstimePeriod
(optional string): Time period to queryAccess Control
list_jfrog_environments
list_jfrog_projects
get_specific_project
project_key
(string): The unique key of the project to retrievecreate_project
project_key
(string): Unique identifier for the projectdisplay_name
(string): Display name of the projectdescription
(string): Description of the projectadmin_privileges
(object): Administrative privileges for the projectstorage_quota_bytes
(number): Storage quota in bytes (-1 for unlimited)Catalog and Curation
jfrog_get_package_info
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 repositoryversion
(optional string): The version of the package (default: "latest")jfrog_get_package_versions
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 repositoryjfrog_get_package_version_vulnerabilities
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 repositoryversion
(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)jfrog_get_vulnerability_info
cve_id
(string): The CVE ID or vulnerability identifier to look uppageSize
(optional number): Number of vulnerabilities to return per page (default: 10)pageCount
(optional number): Number of pages to return (default: 1)jfrog_get_package_curation_status
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 repositorypackageVersion
(string): The version of the package, as it appears in the package repositoryXray
jfrog_get_artifacts_summary
paths
(string array): An array of paths to the artifacts from which to create the summary fromTo install mcp-jfrog for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @jfrog/mcp-jfrog --client claude
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_ACCESS_TOKEN
)To use this MCP server, you need to create a JFrog Access Token or use an Idenetity token with appropriate permissions:
For information on how to create a JFrog Token, please refer to the JFrog official documentations:
JFROG_URL
)Your JFrog platform instance URL (e.g. https://acme.jfrog.io)
The SSE transport mode includes the following features:
/health
endpoint that returns server status information.When using SSE mode:
/sse
endpoint, optionally providing a connectionId
query parameter for session tracking./messages
endpoint with the same connectionId
as a query parameter.Example client connection with connection ID:
GET /sse?connectionId=client123
Example client request:
POST /messages?connectionId=client123
Content-Type: application/json
{
"jsonrpc": "2.0",
"method": "listTools",
"id": 1
}
Clone the repo to your local machine using git clone
and cd
into the project directory:
git clone [email protected]:jfrog/mcp-jfrog.git
cd mcp-jfrog
Build as a Docker image:
docker build -t mcp/jfrog -f Dockerfile .
Build as an npm module:
npm i && npm run build
Use with Cursor
Add the following to your ~/.cursor/mcp.json
:
{
"mcpServers": {
"MCP-JFrog": {
"command": "npm",
"args": [
"exec",
"-y",
"github:jfrog/mcp-jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "ACCESS_TOKEN",
"JFROG_URL": "https://"
}
}
},
"mcp-local-dev":{
"command": "node",
"args": [
"//mcp-jfrog/dist/index.js"
],
"env": {
"JFROG_ACCESS_TOKEN": ">",
"JFROG_URL": ""
}
}
}
{
"mcpServers": {
"jfrog": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "",
"JFROG_URL": "https://your-instance.jfrog.io"
},
"serverUrl": "http://localhost:8080/sse"
}
}
}
To use the JFrog MCP Server with SSE transport mode (useful for web interfaces like Cursor's webview):
{
"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": "",
"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).
Use with Claude Desktop
Add the following to your claude_desktop_config.json
:
{
"mcpServers": {
"jfrog": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"JFROG_ACCESS_TOKEN",
"-e",
"JFROG_URL",
"mcp/jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "",
"JFROG_URL": "https://your-instance.jfrog.io" // Your JFrog platform URL
},
"serverUrl": "http://localhost:8080/sse"
}
}
}
{
"mcpServers": {
"MCP-JFrog": {
"command": "npm",
"args": [
"exec",
"-y",
"github:jfrog/mcp-jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "ACCESS_TOKEN",
"JFROG_URL": "https://"
}
}
}
}
For Claude Desktop with SSE transport:
{
"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": "",
"JFROG_URL": "https://your-instance.jfrog.io",
"serverUrl": "http://localhost:8080/sse"
}
}
}
}
## 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.