Сервер JFrog MCP (🧪 Экспериментальный)
Сервер протокола контекста модели (MCP) для API платформы JFrog, обеспечивающий управление репозиторием, отслеживание сборок, управление жизненным циклом релизов и многое другое.
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
Отказ от ответственности
Это экспериментальный проект, призванный продемонстрировать возможности JFrog с MCP. Он официально не поддерживается и не проверяется JFrog.
Функции
- Управление репозиториями : создание и управление локальными, удаленными и виртуальными репозиториями.
- Отслеживание сборки : список и извлечение информации о сборке
- Мониторинг выполнения : просмотр кластеров выполнения и запущенных образов контейнеров.
- Mission Control : просмотр связанных экземпляров платформы JFrog
- Поиск артефактов : выполнение эффективных AQL-запросов для поиска артефактов и сборок.
- Каталог и курирование : доступ к информации о пакете, версиям, уязвимостям и проверка статуса курирования.
- Рентген : сводка артефактов сканирования, группировка по степени серьезности каждого артефакта
Инструменты
check_jfrog_availability
- Проверьте готовность и работоспособность платформы JFrog
- Возврат: Статус готовности платформы
create_local_repository
- Создайте новый локальный репозиторий в Artifactory
- Входные данные:
key
(строка): Ключ репозиторияrclass
(строка): Класс репозитория (должен быть «локальным»)packageType
(string): Тип пакета репозиторияdescription
(необязательная строка): Описание репозиторияprojectKey
(необязательная строка): ключ проекта, которому будет назначен репозиторий.environments
(необязательно string[]): среды, в которые следует назначить репозиторий
- Возвращает: Созданные данные репозитория
create_remote_repository
- Создайте новый удаленный репозиторий в Artifactory для прокси-сервера внешних реестров пакетов.
- Входные данные:
key
(строка): Ключ репозиторияrclass
(строка): Класс репозитория (должен быть «удалённым»)packageType
(string): Тип пакета репозиторияurl
(строка): URL-адрес удаленного репозиторияusername
(необязательная строка): имя пользователя удаленного репозиторияpassword
(необязательная строка): пароль удаленного репозиторияdescription
(необязательная строка): Описание репозиторияprojectKey
(необязательная строка): ключ проекта, которому будет назначен репозиторий.environments
(необязательно string[]): среды, в которые следует назначить репозиторий- Множество других дополнительных параметров для определенных конфигураций репозитория.
- Возвращает: Созданные данные репозитория
create_virtual_repository
- Создайте новый виртуальный репозиторий в Artifactory, который объединяет несколько репозиториев.
- Входные данные:
key
(строка): Ключ репозиторияrclass
(строка): Класс репозитория (должен быть «виртуальным»)packageType
(string): Тип пакета репозиторияrepositories
(string[]): Список ключей репозитория для включения в виртуальный репозиторийdescription
(необязательная строка): Описание репозиторияprojectKey
(необязательная строка): ключ проекта, которому будет назначен репозиторий.environments
(необязательно string[]): среды, в которые следует назначить репозиторий- Другие необязательные параметры для определенных конфигураций репозитория
- Возвращает: Созданные данные репозитория
list_repositories
- Список всех репозиториев в Artifactory с возможностью фильтрации
- Входные данные:
type
(необязательная строка): Фильтрация репозиториев по типу (локальный, удаленный, виртуальный, федеративный, дистрибутивный)packageType
(необязательная строка): Фильтрация репозиториев по типу пакетаproject
(необязательная строка): Фильтрация репозиториев по ключу проекта
- Возвращает: Список репозиториев, соответствующих фильтрам.
set_folder_property
- Установка свойств папки в Artifactory с возможностью рекурсивного применения
- Входные данные:
folderPath
(строка): Путь к папке, в которой следует задать свойства.properties
(объект): пары «ключ-значение» свойств для установкиrecursive
(необязательно логическое значение): следует ли применять свойства рекурсивно к подпапкам
- Возврат: Результат операции
execute_aql_query
- Выполнить запрос Artifactory Query Language (AQL) для поиска артефактов, сборок или других сущностей в JFrog Artifactory
- Входные данные:
query
(string): AQL-запрос для выполнения. Должен соответствовать синтаксису AQL (например, items.find({"repo":"my-repo"}).include("name","path"))domain
(необязательная строка): основной домен для поиска (элементы, сборки, архивные записи, сборки.рекламные акции, релизы)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
- Возврат кластера времени выполнения по идентификатору
- Входные данные:
clusterId
(целое число): идентификатор кластера, который нужно получить.
- Возвращает: сведения о кластере
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
(string): уникальный ключ проекта для извлечения
- Возврат: Подробности проекта
create_project
- Создайте новый проект на платформе JFrog
- Входные данные:
project_key
(строка): Уникальный идентификатор проектаdisplay_name
(string): Отображаемое имя проекта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 или идентификатор уязвимости для поиска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 через Smithery :
Предпосылки
- Node.js v18 или выше
- Docker (если используется развертывание Docker, см. )
- Действительный экземпляр платформы JFrog с соответствующими разрешениями
- Доступ для создания и управления токенами доступа в вашем экземпляре платформы JFrog.
Переменные среды
JFROG_ACCESS_TOKEN
: Ваш токен доступа JFrog (обязательно)JFROG_URL
: базовый URL-адрес вашей платформы JFrog (обязательно)TRANSPORT
: режим транспорта, который нужно использовать, установите значение «sse», чтобы включить транспорт SSE (по умолчанию: stdio)PORT
: Номер порта, используемый для транспорта SSE (по умолчанию: 8080)CORS_ORIGIN
: источник CORS разрешен для соединений SSE (по умолчанию: '*')LOG_LEVEL
: Уровень ведения журнала: DEBUG, INFO, WARN, ERROR (по умолчанию: INFO)MAX_RECONNECT_ATTEMPTS
: Максимальное количество попыток повторного подключения для сервера SSE (по умолчанию: 5)RECONNECT_DELAY_MS
: Базовая задержка в миллисекундах между попытками повторного подключения (по умолчанию: 2000)
Токен JFrog ( JFROG_ACCESS_TOKEN
)
Чтобы использовать этот сервер MCP, вам необходимо создать токен доступа JFrog или использовать токен Idenetity с соответствующими разрешениями:
Информацию о том, как создать токен JFrog, можно найти в официальной документации JFrog:
URL-адрес JFrog ( JFROG_URL
)
URL вашего экземпляра платформы JFrog (например, https://acme.jfrog.io )
Транспортные возможности SSE
Транспортный режим SSE включает в себя следующие функции:
- Управление соединениями : каждое соединение SSE отслеживается с помощью уникального идентификатора, что позволяет клиентам сохранять состояние при повторных соединениях.
- Структурированное ведение журнала : подробные журналы с временными метками, уровнями серьезности и соответствующей контекстной информацией.
- Устойчивость соединения : автоматические попытки повторного подключения с экспоненциальной задержкой, если сервер не запускается.
- Конечная точка здоровья : конечная точка
/health
, которая возвращает информацию о состоянии сервера. - Отслеживание подключений : отслеживание активных подключений в режиме реального времени с периодической регистрацией статистики.
- Показатели производительности : отслеживание времени выполнения операций инструмента и HTTP-запросов.
При использовании режима SSE:
- Клиенты должны подключаться к конечной точке
/sse
, при необходимости предоставляя параметр запросаconnectionId
для отслеживания сеанса. - Клиентские запросы должны отправляться в конечную точку
/messages
с тем жеconnectionId
в качестве параметра запроса. - Сервер ответит отправленными сервером событиями через установленное соединение SSE.
Пример клиентского подключения с идентификатором подключения:
Пример запроса клиента:
Как построить
Клонируйте репозиторий на локальную машину с помощью git clone
и cd
в каталог проекта:
Сборка как образа Docker:
Сборка как npm-модуля:
Использование
нпм
Докер
Транспортный режим SSE
Чтобы использовать сервер JFrog MCP с транспортным режимом SSE (полезно для веб-интерфейсов, таких как Cursor's WebView):
Примечание: для режима SSE вам необходимо добавить параметр serverUrl
, указывающий на вашу конечную точку SSE, и указать порт, используемый сервером (-p 8080:8080).
Добавьте следующее в ваш claude_desktop_config.json
:
Докер
нпм
Транспортный режим SSE
Для Claude Desktop с транспортом SSE:
You must be authenticated.
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
Сервер экспериментального контекстного протокола модели, который обеспечивает доступ к возможностям API платформы JFrog, включая управление репозиторием, отслеживание сборок, поиск артефактов и анализ безопасности пакетов.
Related MCP Servers
- -security-license-qualityA Model Context Protocol server that enables interaction with Salesforce through REST API using jsforce, allowing users to execute SOQL queries, retrieve object metadata, and perform CRUD operations on Salesforce records.Last updated -
- -securityAlicense-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 -1PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that fetches up-to-date, version-specific documentation and code examples from libraries directly into LLM prompts, helping developers get accurate answers without outdated or hallucinated information.Last updated -2145,8339,538JavaScriptMIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that enables users to perform third-party enrichment lookups for security observables (IP addresses, domains, URLs, emails) through services like VirusTotal, Shodan, and others.Last updated -1Python