Servidor MCP de JFrog (🧪 Experimental)
Servidor de Protocolo de contexto de modelo (MCP) para la API de la plataforma JFrog, que permite la gestión de repositorios, el seguimiento de compilaciones, la gestión del ciclo de vida de las versiones y más.
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
Descargo de responsabilidad
Este es un proyecto experimental que busca demostrar las capacidades de JFrog con MCP. No cuenta con soporte ni verificación oficial de JFrog.
Características
Gestión de repositorios : cree y administre repositorios locales, remotos y virtuales
Seguimiento de compilación : enumerar y recuperar información de compilación
Monitoreo en tiempo de ejecución : vea clústeres en tiempo de ejecución e imágenes de contenedores en ejecución
Control de misión : Ver instancias de la plataforma JFrog asociadas
Búsqueda de artefactos : ejecute potentes consultas AQL para buscar artefactos y compilaciones
Catálogo y curación : acceda a información de paquetes, versiones, vulnerabilidades y verifique el estado de curación
Rayos X : Resumen de artefactos de escaneo de acceso, agrupados por gravedad por artefacto
Herramientas
check_jfrog_availabilityCompruebe si la plataforma JFrog está lista y funcionando
Devoluciones: Estado de preparación de la plataforma
create_local_repositoryCrear un nuevo repositorio local en Artifactory
Entradas:
key(cadena): clave del repositoriorclass(cadena): Clase de repositorio (debe ser "local")packageType(cadena): tipo de paquete del repositoriodescription(cadena opcional): Descripción del repositorioprojectKey(cadena opcional): Clave de proyecto a la que se asignará el repositorioenvironments(cadena opcional[]): entornos a los que asignar el repositorio
Devoluciones: Detalles del repositorio creado
create_remote_repositoryCree un nuevo repositorio remoto en Artifactory para hacer de proxy de registros de paquetes externos
Entradas:
key(cadena): clave del repositoriorclass(cadena): Clase de repositorio (debe ser "remota")packageType(cadena): tipo de paquete del repositoriourl(cadena): URL al repositorio remotousername(cadena opcional): nombre de usuario del repositorio remotopassword(cadena opcional): contraseña del repositorio remotodescription(cadena opcional): Descripción del repositorioprojectKey(cadena opcional): Clave de proyecto a la que se asignará el repositorioenvironments(cadena opcional[]): entornos a los que asignar el repositorioMuchos otros parámetros opcionales para configuraciones de repositorio específicas
Devoluciones: Detalles del repositorio creado
create_virtual_repositoryCree un nuevo repositorio virtual en Artifactory que agregue múltiples repositorios
Entradas:
key(cadena): clave del repositoriorclass(cadena): Clase de repositorio (debe ser "virtual")packageType(cadena): tipo de paquete del repositoriorepositories(string[]): Lista de claves de repositorio para incluir en el repositorio virtualdescription(cadena opcional): Descripción del repositorioprojectKey(cadena opcional): Clave de proyecto a la que se asignará el repositorioenvironments(cadena opcional[]): entornos a los que asignar el repositorioOtros parámetros opcionales para configuraciones de repositorio específicas
Devoluciones: Detalles del repositorio creado
list_repositoriesEnumere todos los repositorios en Artifactory con filtrado opcional
Entradas:
type(cadena opcional): Filtrar repositorios por tipo (local, remoto, virtual, federado, distribución)packageType(cadena opcional): Filtrar repositorios por tipo de paqueteproject(cadena opcional): Filtrar repositorios por clave de proyecto
Devuelve: Lista de repositorios que coinciden con los filtros
set_folder_propertyEstablecer propiedades en una carpeta en Artifactory, con aplicación recursiva opcional
Entradas:
folderPath(cadena): Ruta a la carpeta donde se deben establecer las propiedadesproperties(objeto): pares clave-valor de propiedades a establecerrecursive(booleano opcional): si se deben aplicar propiedades recursivamente a las subcarpetas
Devuelve: Resultado de la operación
execute_aql_queryEjecute una consulta de lenguaje de consulta de artefactos (AQL) para buscar artefactos, compilaciones u otras entidades en JFrog Artifactory
Entradas:
query(cadena): La consulta AQL que se ejecutará. Debe seguir la sintaxis AQL (p. ej., items.find({"repo":"my-repo"}).include("name","path"))domain(cadena opcional): el dominio principal en el que buscar (elementos, compilaciones, entradas de archivo, promociones de compilación, lanzamientos)transitive(booleano opcional): si se debe buscar en repositorios remotoslimit(número opcional): Número máximo de resultados a devolveroffset(número opcional): Número de resultados a omitirinclude_fields(cadena opcional[]): Campos a incluir en los resultadossort_by(cadena opcional): Campo por el cual ordenar los resultadossort_order(cadena opcional): orden de clasificación (ascendente o descendente)
Devuelve: Resultados de búsqueda con metadatos
list_jfrog_buildsDevuelve una lista de todas las compilaciones en la plataforma JFrog
Devoluciones: Lista de compilaciones
get_specific_buildObtener detalles de una compilación específica por nombre
Entradas:
buildName(cadena): nombre de la compilación a recuperarproject(cadena opcional): clave del proyecto para delimitar la búsqueda de compilación
Devoluciones: Detalles de la compilación
list_jfrog_runtime_clusters
Devuelve una lista de todos los clústeres de tiempo de ejecución en la plataforma JFrog
Entradas:
limit(entero opcional): el número máximo de clústeres a devolvernext_key(cadena opcional): la siguiente clave que se utilizará para la paginación
Devuelve: Lista de clústeres de tiempo de ejecución
get_jfrog_runtime_specific_cluster
Devolver un clúster de tiempo de ejecución por ID
Entradas:
clusterId(entero): el ID del clúster a recuperar
Devoluciones: Detalles del clúster
list_jfrog_running_images
Enumere todas las imágenes de contenedores en ejecución en los clústeres de tiempo de ejecución con su estado operativo y de seguridad
Entradas:
filters(cadena opcional): filtros para aplicarnum_of_rows(entero opcional): Número de filas a devolverpage_num(entero opcional): Número de páginastatistics(booleano opcional): si se deben incluir estadísticastimePeriod(cadena opcional): período de tiempo para consultar
Devoluciones: Lista de imágenes en ejecución
list_jfrog_environments
Obtenga una lista de todos los tipos de entornos en la plataforma JFrog con sus detalles
Entradas:
Devoluciones: Lista de entornos
list_jfrog_projects
Obtenga una lista de todos los proyectos en la plataforma JFrog con sus detalles
Entradas:
Devoluciones: Lista de proyectos
get_specific_project
Obtenga información detallada sobre un proyecto específico en la plataforma JFrog
Entradas:
project_key(cadena): La clave única del proyecto a recuperar
Devoluciones: Detalles del proyecto
create_project
Crear un nuevo proyecto en la plataforma JFrog
Entradas:
project_key(cadena): identificador único para el proyectodisplay_name(cadena): Nombre para mostrar del proyectodescription(cadena): Descripción del proyectoadmin_privileges(objeto): privilegios administrativos para el proyectostorage_quota_bytes(número): cuota de almacenamiento en bytes (-1 para ilimitado)
Devoluciones: Detalles del proyecto creado
jfrog_get_package_info
Obtener información disponible públicamente sobre un paquete de software
Entradas:
type(cadena): el tipo de paquete (pypi, npm, maven, golang, nuget, huggingface, rubygems)name(cadena): el nombre del paquete, tal como aparece en el repositorio de paquetesversion(cadena opcional): La versión del paquete (predeterminado: "última")
Devoluciones: Información del paquete, incluida la descripción, la última versión, la licencia y las URL.
jfrog_get_package_versions
Obtenga una lista de versiones de un paquete disponible públicamente con fechas de publicación
Entradas:
type(cadena): el tipo de paquete (pypi, npm, maven, golang, nuget, huggingface, rubygems)name(cadena): el nombre del paquete, tal como aparece en el repositorio de paquetes
Devuelve: Lista de versiones de paquetes con fechas de publicación
jfrog_get_package_version_vulnerabilities
Obtenga una lista de vulnerabilidades conocidas que afectan a una versión específica de un paquete de código abierto
Entradas:
type(cadena): el tipo de paquete (pypi, npm, maven, golang, nuget, huggingface, rubygems)name(cadena): el nombre del paquete, tal como aparece en el repositorio de paquetesversion(cadena opcional): La versión del paquete (predeterminado: "última")pageSize(número opcional): Número de vulnerabilidades a devolver por página (valor predeterminado: 10)pageCount(número opcional): Número de páginas a devolver (predeterminado: 1)
Devuelve: Lista de vulnerabilidades que afectan a la versión del paquete especificado
jfrog_get_vulnerability_info
Obtenga información detallada sobre una vulnerabilidad específica, incluidos los paquetes y versiones afectados
Entradas:
cve_id(cadena): El ID de CVE o identificador de vulnerabilidad a buscarpageSize(número opcional): Número de vulnerabilidades a devolver por página (valor predeterminado: 10)pageCount(número opcional): Número de páginas a devolver (predeterminado: 1)
Devoluciones: Información detallada sobre vulnerabilidades y paquetes afectados
jfrog_get_package_curation_status
Comprobar el estado de curación de una versión específica del paquete
Entradas:
packageType(cadena): el tipo de paquete (pypi, npm, maven, golang, nuget, huggingface, rubygems)packageName(cadena): el nombre del paquete, tal como aparece en el repositorio de paquetespackageVersion(cadena): La versión del paquete, tal como aparece en el repositorio de paquetes
Devoluciones: Estado de curación (aprobado, bloqueado o no concluyente)
jfrog_get_artifacts_summary
Obtenga un resumen de problemas de artefactos en un repositorio o compilación, categorizados y contados por gravedad (Baja, Media, Alta, Crítica, Desconocida)
Entradas:
paths(matriz de cadenas): una matriz de rutas a los artefactos desde los cuales crear el resumen
Devoluciones: un resumen basado en el recuento de vulnerabilidades por gravedad para cada artefacto en la matriz proporcionada más el total de problemas
Configuración
Instalación mediante herrería
Para instalar mcp-jfrog para Claude Desktop automáticamente a través de Smithery :
Prerrequisitos
Node.js v18 o superior
Docker (si utiliza la implementación de Docker, consulte )
Una instancia válida de la plataforma JFrog con los permisos adecuados
Acceso para crear y administrar tokens de acceso en su instancia de la plataforma JFrog
Variables de entorno
JFROG_ACCESS_TOKEN: Su token de acceso a JFrog (obligatorio)JFROG_URL: URL base para su plataforma JFrog (obligatorio)TRANSPORT: Modo de transporte a utilizar, configúrelo en 'sse' para habilitar el transporte SSE (predeterminado: stdio)PORT: Número de puerto a utilizar para el transporte SSE (predeterminado: 8080)CORS_ORIGIN: Origen CORS permitido para conexiones SSE (predeterminado: '*')LOG_LEVEL: Nivel de registro: DEBUG, INFO, WARN, ERROR (predeterminado: INFO)MAX_RECONNECT_ATTEMPTS: Número máximo de intentos de reconexión para el servidor SSE (valor predeterminado: 5)RECONNECT_DELAY_MS: Retraso base en milisegundos entre intentos de reconexión (valor predeterminado: 2000)
Token de JFrog ( JFROG_ACCESS_TOKEN )
Para utilizar este servidor MCP, debe crear un token de acceso JFrog o utilizar un token de Idenetity con los permisos adecuados:
Para obtener información sobre cómo crear un token JFrog, consulte la documentación oficial de JFrog:
URL de JFrog ( JFROG_URL )
URL de su instancia de la plataforma JFrog (por ejemplo, https://acme.jfrog.io )
Características del transporte de SSE
El modo de transporte SSE incluye las siguientes características:
Gestión de conexiones : cada conexión SSE se rastrea con una identificación única, lo que permite a los clientes mantener el estado en todas las reconexiones.
Registro estructurado : registros detallados con marcas de tiempo, niveles de gravedad e información contextual relevante.
Resistencia de conexión : intentos de reconexión automática con retroceso exponencial si el servidor no se inicia.
Punto final de salud : un punto final de
/healthque devuelve información sobre el estado del servidor.Seguimiento de conexión : seguimiento en tiempo real de conexiones activas con registro de estadísticas periódicas.
Métricas de rendimiento : seguimiento del tiempo de ejecución para operaciones de herramientas y solicitudes HTTP.
Al utilizar el modo SSE:
Los clientes deben conectarse al punto final
/ssey, opcionalmente, proporcionar un parámetro de consultaconnectionIdpara el seguimiento de la sesión.Las solicitudes de los clientes deben enviarse al punto final
/messagescon el mismoconnectionIdque parámetro de consulta.El servidor responderá con los eventos enviados por el servidor a través de la conexión SSE establecida.
Ejemplo de conexión de cliente con ID de conexión:
Ejemplo de solicitud de cliente:
Cómo construir
Clone el repositorio en su máquina local usando git clone y cd en el directorio del proyecto:
Construir como una imagen de Docker:
Construir como un módulo npm:
Uso
npm
Estibador
Modo de transporte SSE
Para utilizar el servidor JFrog MCP con el modo de transporte SSE (útil para interfaces web como la vista web de Cursor):
Nota: para el modo SSE, debe agregar el parámetro serverUrl que apunta a su punto final SSE y exponer el puerto utilizado por el servidor (-p 8080:8080).
Agregue lo siguiente a su claude_desktop_config.json :
Estibador
npm
Modo de transporte SSE
Para Claude Desktop con transporte SSE:
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Tools
Servidor de protocolo de contexto de modelo experimental que permite el acceso a las capacidades de la API de la plataforma JFrog, incluida la gestión de repositorios, el seguimiento de compilaciones, la búsqueda de artefactos y el análisis de seguridad de paquetes.
Related Resources
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