by Stacklok (community) Claude Desktop, Claude Code
MCP-сервер для доступа к базе данных Open Source Vulnerabilities (OSV). Проверяет зависимости и пакеты на известные CVE через API osv.dev — без локального сканера. Возможности: - Поиск уязвимостей по package name + version - Поддержка npm, PyPI, Go, Maven, RubyGems, crates.io - Получение деталей CVE: CVSS-score, патч, affected versions - Bulk-проверка списка зависимостей - Покрывает 14+ языков и экосистем - Без установки сканера — только HTTP API
Требуется Go 1.21+.
# Клонировать и собрать:
git clone https://github.com/StacklokLabs/osv-mcp
cd osv-mcp
go build -o osv-mcp-server ./...
sudo mv osv-mcp-server /usr/local/bin/
# Или через ToolHive (если установлен):
thv run osv
# Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"osv": {
"command": "/usr/local/bin/osv-mcp-server",
"args": [],
"env": { "MCP_TRANSPORT": "stdio" }
}
}
}
# Claude Code (CLI):
claude mcp add osv --env MCP_TRANSPORT=stdio -- /usr/local/bin/osv-mcp-server
# OpenCode — ~/.config/opencode/opencode.json:
{
"mcp": {
"osv": {
"type": "local",
"command": ["/usr/local/bin/osv-mcp-server"],
"environment": { "MCP_TRANSPORT": "stdio" }
}
}
}
MCP-сервер (Model Context Protocol), предоставляющий доступ к базе данных OSV (Open Source Vulnerabilities).
Данный проект реализует SSE-сервер MCP, позволяющий приложениям на базе LLM запрашивать информацию об уязвимостях из базы данных OSV. Сервер предоставляет инструменты для:
# Клонирование репозитория
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp
# Сборка сервера
task build
Простейший способ запустить MCP-сервер OSV — использовать ToolHive, обеспечивающий безопасное контейнерное развёртывание MCP-серверов:
# Установка ToolHive (если ещё не установлена)
# См.: https://docs.stacklok.com/toolhive/guides-cli/install
# Регистрация поддерживаемого клиента для автоматической настройки среды ToolHive
thv client setup
# Запуск MCP-сервера OSV (в ToolHive пакет называется 'osv')
thv run osv
# Вывод списка запущенных серверов
thv list
# Получение подробной информации о сервере
thv registry info osv
Сервер станет доступен для ваших MCP-совместимых клиентов и сможет запрашивать информацию об уязвимостях из базы данных OSV.
Настройка сервера осуществляется с помощью переменных окружения:
MCP_PORT: номер порта для запуска сервера (по умолчанию: 8080)
Должен быть допустимым целым числом от 0 до 65535
Если значение недопустимо или не задано, сервер будет использовать порт 8080
MCP_TRANSPORT: режим передачи данных для сервера (по умолчанию: sse)
sse, streamable-httpПример:
# Запуск на порту 3000
MCP_PORT=3000 ./build/osv-mcp-server
# Запуск на порту по умолчанию (8080)
./build/osv-mcp-server
Сервер предоставляет следующие инструменты MCP:
Запрос уязвимостей, затрагивающих конкретную версию пакета или коммит.
Схема входных данных:
{
"type": "object",
"properties": {
"commit": {
"type": "string",
"description": "The commit hash to query for. If specified, version should not be set."
},
"version": {
"type": "string",
"description": "The version string to query for. If specified, commit should not be set."
},
"package_name": {
"type": "string",
"description": "The name of the package."
},
"ecosystem": {
"type": "string",
"description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
},
"purl": {
"type": "string",
"description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
}
}
}
Пакетный запрос уязвимостей, затрагивающих несколько пакетов или коммитов одновременно.
Схема входных данных:
{
"type": "object",
"properties": {
"queries": {
"type": "array",
"description": "Array of query objects",
"items": {
"type": "object",
"properties": {
"commit": {
"type": "string",
"description": "The commit hash to query for. If specified, version should not be set."
},
"version": {
"type": "string",
"description": "The version string to query for. If specified, commit should not be set."
},
"package_name": {
"type": "string",
"description": "The name of the package."
},
"ecosystem": {
"type": "string",
"description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
},
"purl": {
"type": "string",
"description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
}
}
}
}
},
"required": ["queries"]
}
Получение сведений о конкретной уязвимости по её идентификатору.
Схема входных данных:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The OSV vulnerability ID"
}
},
"required": ["id"]
}
{
"package_name": "lodash",
"ecosystem": "npm",
"version": "4.17.15"
}
{
"commit": "6879efc2c1596d11a6a6ad296f80063b558d5e0f"
}
{
"queries": [
{
"package_name": "lodash",
"ecosystem": "npm",
"version": "4.17.15"
},
{
"package_name": "jinja2",
"ecosystem": "PyPI",
"version": "2.4.1"
}
]
}
{
"id": "GHSA-vqj2-4v8m-8vrq"
}
task test
task lint
task fmt
Мы приветствуем вклад в развитие данного MCP-сервера! Если вы желаете внести свой вклад, пожалуйста, ознакомьтесь с руководством по участию, где подробно описано, как начать.
Если вы обнаружите ошибку или у вас есть предложение по функционалу, пожалуйста,
создайте issue в
репозитории или присоединяйтесь к нам в канале #mcp-servers на нашем
сообществе в Discord.
Данный проект распространяется под лицензией Apache v2 — подробности см. в файле LICENSE.