by jfrog
Provides repository management, build tracking, runtime monitoring, security scanning, and package catalog capabilities for the JFrog Platform via Model Context Protocol.
Jfrog Mcp Server enables programmatic interaction with JFrog Artifactory, Xray, Distribution, and Runtime services. It exposes a rich set of tools that allow creation and management of repositories, retrieval of build and runtime information, execution of AQL searches, package catalog queries, and vulnerability summaries.
npx -y @jfrog/mcp-jfrog (or via Docker). Set the required environment variables JFROG_ACCESS_TOKEN and JFROG_URL.TRANSPORT=sse and expose the port (default 8080)./sse endpoint (SSE mode) or send JSON‑RPC messages to /messages.list_repositories, create_local_repository, jfrog_get_package_info) with the documented parameters.Q: Do I need a JFrog token?
A: Yes. Set JFROG_ACCESS_TOKEN with a token that has the required scopes for repository, build, and Xray APIs.
Q: Can I run the server in production? A: The project is experimental. For production workloads JFrog recommends the official managed MCP server.
Q: Which transport should I use?
A: STDIO works for CLI integrations; SSE (TRANSPORT=sse) is recommended for web‑based clients that need persistent connections.
Q: How do I limit the number of reconnection attempts?
A: Configure MAX_RECONNECT_ATTEMPTS and RECONNECT_DELAY_MS environment variables.
Q: Is Docker required? A: No. You can run the server directly with Node.js or via Docker if you prefer container isolation.
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.
Update (2025):
JFrog now provides an official, secure, and remotely hosted MCP server for seamless integration with the JFrog Platform.
This managed MCP server is maintained by JFrog and is recommended for production use, offering enhanced security, reliability, and support.
Learn more and get started here:
👉 JFrog MCP Server Documentation
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)list_jfrog_builds
get_specific_build
buildName (string): Name of the build to retrieveproject (optional string): Project key to scope the build searchlist_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 querylist_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)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 repositoryjfrog_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 identity 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 git@github.com: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
{
"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"
}
}
}
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": "<YOUR_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).
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": "<YOUR_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://<YOUR_JFROG_INSTANCE_URL>"
}
}
}
}
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": "<YOUR_TOKEN>",
"JFROG_URL": "https://your-instance.jfrog.io",
"serverUrl": "http://localhost:8080/sse"
}
}
}
}
</details>
## 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.
Please log in to share your review and rating for this MCP.
{
"mcpServers": {
"jfrog-mcp": {
"command": "npx",
"args": [
"-y",
"@jfrog/mcp-jfrog"
],
"env": {
"JFROG_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>",
"JFROG_URL": "<YOUR_JFROG_URL>"
}
}
}
}claude mcp add jfrog-mcp npx -y @jfrog/mcp-jfrogExplore related MCPs that share similar capabilities and solve comparable challenges
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.