osv-mcp

by Stacklok (community) · Claude Desktop, Claude Code

MCP MCP Servers Open Source v0.1.3 · 01.04.2026 активный

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

v0.1.3
01.04.2026 current
Добавлен 18.06.2026 · Обновлён 07.07.2026 · MCP Servers
Установка
Требуется 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-сервер OSV

Trust Score

MCP-сервер (Model Context Protocol), предоставляющий доступ к базе данных OSV (Open Source Vulnerabilities).

Обзор

Данный проект реализует SSE-сервер MCP, позволяющий приложениям на базе LLM запрашивать информацию об уязвимостях из базы данных OSV. Сервер предоставляет инструменты для:

  1. Запроса уязвимостей для конкретной версии пакета или коммита
  2. Пакетного запроса уязвимостей для нескольких пакетов или коммитов
  3. Получения подробной информации о конкретной уязвимости по её идентификатору

Установка

Предварительные требования

  • Go 1.21 или более поздняя версия
  • Task (необязательно, для запуска задач)
  • ko (необязательно, для сборки контейнерных образов)

Сборка из исходного кода

# Клонирование репозитория
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp

# Сборка сервера
task build

Использование

Запуск с помощью ToolHive (Рекомендуемый)

Простейший способ запустить 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
  • Если значение недопустимо или не задано, сервер будет использовать режим передачи SSE

Пример:

# Запуск на порту 3000
MCP_PORT=3000 ./build/osv-mcp-server

# Запуск на порту по умолчанию (8080)
./build/osv-mcp-server

Инструменты MCP

Сервер предоставляет следующие инструменты MCP:

query_vulnerability

Запрос уязвимостей, затрагивающих конкретную версию пакета или коммит.

Схема входных данных:

{
  "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."
    }
  }
}

query_vulnerabilities_batch

Пакетный запрос уязвимостей, затрагивающих несколько пакетов или коммитов одновременно.

Схема входных данных:

{
  "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"]
}

get_vulnerability

Получение сведений о конкретной уязвимости по её идентификатору.

Схема входных данных:

{
  "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.

Комментарии
Войдите, чтобы оставить комментарий