cuttalo/depscope

cuttalo/depscope

от cuttalo
MCP сервер DepScope проверяет пакеты в 19 экосистемах - выявляет галлюцинации, устаревшие и вредоносные зависимости. Помогает AI-агентам избегать установки вымышленных и опасных пакетов.

DepScope

Package Intelligence for AI Agents. Stops AI coding agents (Claude, ChatGPT, Cursor, Windsurf, Copilot, Cline) from installing hallucinated, deprecated, or malicious packages across 19 ecosystems.

→ Live at depscope.dev · 8.4M+ packages · 42K+ vulnerabilities (99% EPSS-enriched) · zero auth · free


Quick start (MCP)

Claude Desktop / Cursor / Windsurf — remote
{
  "mcpServers": {
    "depscope": {
      "url": "https://mcp.depscope.dev/mcp"
    }
  }
}
Claude Code / local — stdio
{
  "mcpServers": {
    "depscope": {
      "command": "npx",
      "args": ["-y", "depscope-mcp"]
    }
  }
}

The MCP server source is at cuttalo/depscope-mcp (AGPL-3.0).


What it does

22 MCP tools across 19 package ecosystems:

npm · pypi · cargo · go · composer · maven · nuget · rubygems · pub · hex · swift · cocoapods · cpan · hackage · cran · conda · homebrew · jsr · julia

Tool Purpose
check_package Full safety check: deprecation · vulnerabilities · health · recommendation
check_malicious Malicious-package detector
check_typosquat Typosquat detection vs popular names
package_exists Hallucination detector (404 = LLM invented it)
get_health_score 0–100 health score with breakdown
get_vulnerabilities Vulnerabilities + severity scoring
find_alternatives Suggested alternatives for deprecated/abandoned packages
get_breaking_changes Major-version migration notes
get_known_bugs Known issues for a package
compare_packages Side-by-side comparison
check_compatibility Stack-level compatibility check
resolve_error Error message → likely cause + fix
install_command Verified install command for the target ecosystem
get_latest_version Latest stable version + maturity signal
pin_safe Suggested safe version pin
get_trust_signals Multi-signal trust score
get_migration_path Step-by-step upgrade plan
scan_project Bulk scan of dependency manifests
check_bulk Fast pre-flight filter for batches
get_trending Trending packages by ecosystem
get_package_prompt Compact LLM-friendly summary
contact_depscope Report a missing package or false positive
Инструменты были проиндексированы:
check_bulkтолько чтениеидемпотентныйвнешний мир

Быстрый предварительный фильтр для набора пар (экосистема, пакет). Только БД, менее 100 мс для 100 элементов. ИСПОЛЬЗОВАТЬ КОГДА: собираетесь выполнить npm install a b c … или pip install a b c … — ловит вымышленные имена, stdlib, опечатки и заведомо опасные пакеты за ОДИН вызов. НЕ является аудитом дерева зависимостей (для этого используйте scan_project). ВОЗВРАЩАЕТ: для каждого элемента {status: exists|stdlib|malicious|typosquat_suspect|historical_incident|unknown}.

Параметры
  • itemsobject[]обязательный
check_compatibilityтолько чтениеидемпотентныйвнешний мир

Проверено ли, что эта конкретная комбинация версий нескольких пакетов работает вместе? ИСПОЛЬЗУЙТЕ, КОГДА: фиксируете стек (next@15 + react@19 + node@22); перед рекомендацией матрицы версий. ВОЗВРАЩАЕТ: {compatible, conflicts[], notes}.

Параметры
  • packagesobjectобязательный

    Сопоставление „пакет -> версия", например: {"next":"15","react":"19"}.

check_maliciousтолько чтениеидемпотентныйвнешний мир

Проверяет цепочку поставок на вредоносное ПО с использованием OpenSSF/OSV. ИСПОЛЬЗУЙТЕ, КОГДА: собираетесь предложить установку непроверенного/незнакомого пакета; название получено из блога/учебника. Вызывайте ДО check_package для ненадёжных пакетов. ВОЗВРАЩАЕТ: {is_malicious, threat_tier, source}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
check_packageтолько чтениеидемпотентныйвнешний мир

Полный машиночитаемый JSON-отчёт (~2k токенов). ИСПОЛЬЗУЙТЕ КОГДА: нужно программно разобрать определённые поля (CI gating, UI, извлечение подполей). В противном случае используйте get_package_prompt. ВОЗВРАЩАЕТ: {package, health:{score}, vulnerabilities[], latest, deprecated, maintainers, recommendation}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный

    Название пакета (например, 'express', 'fastapi', 'serde').

  • versionstring

    Конкретная версия (необязательно; по умолчанию: последняя).

check_typosquatтолько чтениеидемпотентныйвнешний мир

Детектор тайпсквоттинга. ИСПОЛЬЗУЙТЕ, КОГДА: название отличается от известного пакета на 1-2 символа (lodsh, reqeusts); копипаста из ненадёжного источника; загрузок почти нет, но название выглядит знакомым. ВОЗВРАЩАЕТ: {is_typosquat, likely_target, confidence}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
compare_packagesтолько чтениеидемпотентныйвнешний мир

Выполняет сравнение бок о бок (здоровье, уязвимости, загрузки, мейнтейнеры, последний релиз) от 2 до 10 пакетов в одной экосистеме. ИСПОЛЬЗОВАТЬ КОГДА: 'X vs Y' / 'должен ли я выбрать X или Y'. ВОЗВРАЩАЕТ: табличный JSON, одна строка на пакет.

Параметры
  • ecosystemenumобязательный
  • packagesstring[]обязательный

    Имена пакетов для сравнения, например ['express','fastify','hono'].

contact_depscopeвнешний мир

Входящий тикет: bug/listing/security/anomaly/partnership. ИСПОЛЬЗУЙТЕ, КОГДА: сообщаете о неверных данных (bug), запрашиваете новый индекс пакетов/экосистемы (listing), сообщаете об уязвимости безопасности DepScope (security), отмечаете конкретное несоответствие в выводе другого инструмента по сравнению с авторитетным источником (anomaly — укажите tool_called+observed+expected), или для партнерства/прессы (partnership). ВОЗВРАЩАЕТ: {ticket_id} или {anomaly_id}.

Параметры
  • bodystring

    Текст сообщения (10-8000 символов). Будьте конкретны: укажите название пакета, экосистему, трассировку ошибки и шаги воспроизведения, если применимо.

  • companystring

    Компания / организация (необязательно).

  • ecosystemstring

    Для kind=anomaly: экосистема вовлечённого пакета, если она есть.

  • emailstring

    Reply-to email отправителя запроса (обязателен для бага, размещения, безопасности и партнёрства).

  • evidence_urlstring

    Для kind=anomaly: URL авторитетного источника (страница реестра, GHSA, CVE, репозиторий и т. д.), подтверждающего ваше ожидание.

  • expectedstring

    Для kind=anomaly: что вы ожидали увидеть (1-1500 символов). Будьте конкретны.

  • kindenum

    Категория тикета. anomaly направляет в структурированный триаж аномалий (требует tool_called/observed/expected).

  • namestring

    Отображаемое имя отправителя (необязательно).

  • observedstring

    Для kind=anomaly: что вернул DepScope (1-1500 символов).

  • packagestring

    Для kind=anomaly: имя задействованного пакета, если оно имеется.

  • subjectstring

    Короткая строка темы (3-200 символов).

  • tool_calledstring

    Для kind=anomaly: инструмент DepScope, который вызвал аномалию (например, check_package, get_migration_path).

  • versionstring

    Для kind=anomaly: задействованная версия пакета, если она есть.

find_alternativesтолько чтениеидемпотентныйвнешний мир

Подобранные замены для устаревших/неблагонадёжных пакетов, включая встроенные в стандартную библиотеку (например, fs.rm вместо rimraf). ИСПОЛЬЗУЙТЕ ЕСЛИ: пакет отмечен как AVOID/URGENT; «что использовать вместо X»; перед тем как угадывать название замены. ВОЗВРАЩАЕТ: {alternatives[]: {name, reason, is_stdlib}}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
get_breaking_changesтолько чтениеидемпотентныйвнешний мир

Критические изменения между двумя мажорными версиями ОДНОГО И ТОГО ЖЕ пакета (next@14→15). ИСПОЛЬЗУЙТЕ, КОГДА: пользователь повышает мажорную версию; перед рекомендацией обновления мажорной версии. Отличается от get_migration_path (тот же пакет vs. разные пакеты). ВОЗВРАЩАЕТ: {breaking_changes[]: {area, description, hint}}.

Параметры
  • ecosystemenumобязательный
  • from_versionstring
  • packagestringобязательный
  • to_versionstring
get_health_scoreтолько чтениеидемпотентныйвнешний мир

Единая оценка здоровья от 0 до 100 — самый дешевый барьер «годен/не годен» (>=70 безопасно). ИСПОЛЬЗУЙТЕ, КОГДА: проверка в CI или пакет уже проверен на вредоносное ПО и опечатки. НЕ первичный экран — сначала запустите check_malicious + check_typosquat. Для словесного вердикта используйте get_package_prompt. ВОЗВРАЩАЕТ: {score, verdict}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
get_known_bugsтолько чтениеидемпотентныйвнешний мир

Известные баги, не связанные с CVE, для конкретной версии пакета. ИСПОЛЬЗУЙТЕ, КОГДА: неожиданное поведение, НЕ являющееся проблемой безопасности; зафиксированная версия работает некорректно. ВОЗВРАЩАЕТ: {bugs[]: {title, fixed_in, workaround}}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
  • versionstring
get_latest_versionтолько чтениеидемпотентныйвнешний мир

Последняя опубликованная версия + флаг устаревания — самый дешёвый вызов. ИСПОЛЬЗУЙТЕ, КОГДА: важна только строка версии (закрепление зависимости, ответ на вопрос «какая версия X»). Если также нужны данные о состоянии и уязвимостях, используйте check_package. ВОЗВРАЩАЕТ: {latest, deprecated, published_at}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
get_migration_pathтолько чтениеидемпотентныйвнешний мир

Предписывающий план миграции между РАЗНЫМИ пакетами - обоснование + буквальный diff кода + критические изменения + трудозатраты в минутах. ИСПОЛЬЗУЙТЕ, КОГДА: замена request→axios, moment→dayjs, flask→fastapi и т.д.; известны обе конечные точки. ВОЗВРАЩАЕТ: {rationale, diff, breaking_changes[], estimated_minutes}.

Параметры
  • ecosystemenumобязательный
  • from_packagestringобязательный

    Устаревший/легаси-пакет, от которого нужно мигрировать.

  • to_packagestringобязательный

    Современный пакет-замена.

get_package_promptтолько чтениеидемпотентныйвнешний мир

Краткая сводка о пакете, оптимизированная для LLM — простой текст, около 300 токенов (примерно на 75% дешевле JSON). Вердикт (SAFE/AVOID/URGENT/MALICIOUS) + здоровье + уязвимости + альтернативы + предупреждения о мейнтейнере. ИСПОЛЬЗУЙТЕ КОГДА: нужно проанализировать пакет и поместить результат прямо в контекст; «безопасен ли X». ОТДАВАЙТЕ ПРЕДПОЧТЕНИЕ ЭТОМУ перед check_package в 95% случаев с LLM. ВОЗВРАЩАЕТ: краткую сводку в виде простого текста.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
get_trendingтолько чтениеидемпотентныйвнешний мир

Актуальные трендовые пакеты с изменением рейтинга и недельным ростом в %. ИСПОЛЬЗУЙ, КОГДА: «что сейчас набирает популярность в npm/PyPI/Cargo?»; рекомендация не искажена датой среза обучающих данных. ВОЗВРАЩАЕТ: {items[]: {name, rank, rank_delta, weekly_growth_pct}}.

Параметры
  • ecosystemenum

    Необязательный параметр. Если он опущен, возвращает межэкосистемные тренды.

  • limitinteger

    Максимум результатов, по умолчанию 100.

  • scopeenum

    Временной интервал. По умолчанию - week.

get_trust_signalsтолько чтениеидемпотентныйвнешний мир

Агрегирует за один вызов ВСЕ не-CVE сигналы доверия к цепочке поставок: доверие к мейнтейнеру (bus factor, смена владельца), OpenSSF Scorecard, качество (критичность, скорость релизов, безопасность публикаций) и происхождение SLSA/Sigstore. ИСПОЛЬЗОВАТЬ КОГДА: глубокая проверка пакета за пределами CVE (усиленная/регулируемая среда, SBOM/соответствие, проверка владельца небольшого пакета, выбор между здоровыми кандидатами). Запускает 4 бэкенд-эндпоинта параллельно. ВОЗВРАЩАЕТ: {maintainer, scorecard, quality, provenance} - каждый может быть null, если его бэкенд-вызов завершился ошибкой.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
get_vulnerabilitiesтолько чтениеидемпотентныйвнешний мир

Уведомления CVE/OSV, затрагивающие последнюю (или указанную) версию. ИСПОЛЬЗОВАТЬ КОГДА: проект с повышенными требованиями безопасности; пользователь спрашивает 'есть ли CVE в X'; вы уже знаете, что пакет существует. ВОЗВРАЩАЕТ: {vulnerability_count, vulnerabilities[]: {id, severity, cvss, fixed_in}}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
install_commandтолько чтениеидемпотентныйвнешний мир

Канонические команды установки для всех менеджеров пакетов экосистемы (npm/pnpm/yarn/bun, pip/uv/poetry, cargo, go, composer, maven+gradle, nuget, …). ИСПОЛЬЗУЙТЕ, КОГДА: выводите команду установки и вам нужны правильные флаги. ВОЗВРАЩАЕТ: {primary, variants[]}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
  • versionstring

    Необязательная явная версия; по умолчанию берётся последняя.

package_existsтолько чтениеидемпотентныйвнешний мир

Проверяет существование записи в реестре и возвращает логическое значение. ИСПОЛЬЗУЙТЕ, КОГДА: собираетесь указать имя пакета в команде установки, но не уверены, что оно существует; проверяете имя, сгенерированное из обучающих данных. ВОЗВРАЩАЕТ: {exists}.

Параметры
  • ecosystemenumобязательный
  • packagestringобязательный
pin_safeтолько чтениеидемпотентныйвнешний мир

Возвращает самую высокую версию ниже выбранного уровня критичности CVE, с учётом ограничения semver. ИСПОЛЬЗУЙТЕ, КОГДА: пишете строку в package.json / requirements.txt; разрешаете dependabot по наименее рискованной исправленной версии. ВОЗВРАЩАЕТ: {recommended_version, walk_log[]}.

Параметры
  • constraintstring

    Ограничение в стиле npm: ^X.Y.Z, ~X.Y.Z, >=X.Y.Z или точное X.Y.Z.

  • ecosystemenumобязательный
  • include_prereleaseboolean
  • min_severityenum

    Минимальный уровень серьёзности для исключения. По умолчанию: high (исключает critical и high).

  • packagestringобязательный
resolve_errorтолько чтениеидемпотентныйвнешний мир

Сопоставляет ошибку или произвольный запрос с проверенным исправлением. ИСПОЛЬЗУЙТЕ, КОГДА: пользователь вставляет конкретную ошибку/стек (ENOENT, ImportError, build failure) — передайте error. ИЛИ пользователь описывает симптом ('webpack slow', 'pip stuck') — передайте query. Всегда отдавайте предпочтение этому, а не угадыванию исправления. ВОЗВРАЩАЕТ: точное совпадение {status, solution, confidence, source_url} или результаты поиска [{title, summary, source_url}].

Параметры
  • contextobject

    Необязательный контекст для вызовов в режиме ошибки (экосистема, пакет, версия).

  • errorstring

    Конкретное сообщение об ошибке / стек вызовов. Запускает поиск по точному совпадению.

  • limitinteger

    Максимальное количество результатов поиска (только в режиме запроса).

  • querystring

    Описание симптома в свободной форме. Запускает поиск по базе знаний.

scan_projectтолько чтениеидемпотентныйвнешний мир

Проверяет зависимости проекта за один раз. Возвращает одно предложение verdict (например, "DO NOT INSTALL - 1 hallucinated: fastapi-turbo"), которое агент может вставить в свой ответ, а также для каждого пакета: здоровье/уязвимости/рекомендацию. Обнаруживает выдуманные пакеты, устаревшие, имитации опечаток, критические уязвимости. Принимает ЛИБО {ecosystem, packages:[name@ver, …]} (до 100, возвращает JSON) ЛИБО {packages:[{ecosystem, package}, …]} (до 50, смешанные экосистемы, возвращает краткий текст). ИСПОЛЬЗУЙ КОГДА: пользователь вставляет package.json/requirements.txt/Cargo.toml; агент сгенерировал команду установки; 'проверить стек'. ВОЗВРАЩАЕТ: JSON с verdict, project_risk, summary.hallucinated_packages, summary.deprecated_packages, здоровье каждого пакета.

Параметры
  • ecosystemenum

    Требуется, когда packages - массив строк.

  • packagesanyобязательный

    Либо ['express','lodash@4.17.0'] (одна экосистема, до 100), либо [{ecosystem, package}, …] (смешанный список, до 50).

0.9.0основная
0.8.2
0.8.1
0.7.1
0.7.0
0.6.1
0.6.0
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.0

Выберите клиент, чтобы установить cuttalo/depscope:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "cuttalo-depscope-he27qrx9ah": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"cuttalo-depscope-he27qrx9ah\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"depscope-mcp\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add cuttalo-depscope-he27qrx9ah -- npx -y depscope-mcp

Либо через JSON-конфиг:

claude mcp add-json cuttalo-depscope-he27qrx9ah "{\"command\":\"npx\",\"args\":[\"-y\",\"depscope-mcp\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add cuttalo-depscope-he27qrx9ah -- npx -y depscope-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.cuttalo-depscope-he27qrx9ah]
command = "npx"
args = ["-y", "depscope-mcp"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите cuttalo/depscope, а в поле команды запуска — строку ниже:
npx -y depscope-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например cuttalo-depscope-he27qrx9ah.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: cuttalo-depscope-he27qrx9ah
    command: npx
    args:
      - "-y"
      - "depscope-mcp"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "cuttalo-depscope-he27qrx9ah": {
      "command": "npx",
      "args": [
        "-y",
        "depscope-mcp"
      ]
    }
  }
}

Похожие MCP-сервера

gridinsoft/mcp-inspector

gridinsoft/mcp-inspector

от gridinsoft

MCP сервер для анализа безопасности доменов и URL через базу GridinSoft. Помогает ИИ-агентам проверять репутацию сайтов, выявлять фишинг и вредоносное ПО. Подходит разработчикам и специалистам по б...

JavaScript⭐ 1
mopanc/depguard

mopanc/depguard

от mopanc

MCP сервер для безопасной работы с зависимостями в AI-агентах. Анализирует уязвимости и вредоносные пакеты, генерирует SBOM и SARIF для защиты от malware и галлюцинаций AI.

TypeScript⭐ 15
toan203/osv-ui

toan203/osv-ui

от toan203

MCP-сервер для безопасности зависимостей: сканирует npm, Python, Go и другие экосистемы на CVE. Интегрируется с AI-агентами, открывает визуальный дашборд с оценками риска и подсказками по исправлению. Работает локально, без регистрации.

HTML⭐ 4
Thezenmonster/agentscore-mcp-server

Thezenmonster/agentscore-mcp-server

от thezenmonster

MCP сервер для оценки безопасности пакетов: сканирует зависимости, выносит вердикты доверия, проверяет уязвимости и настраивает CI-политику. Восемь инструментов без API-ключа. Помогает разработчикам принимать решения о безопасности MCP.

TypeScript⭐ 1
qianniuspace/mcp-security-audit

qianniuspace/mcp-security-audit

от qianniuspace

MCP-сервер Security Audit Tool проверяет npm-зависимости на уязвимости в реальном времени. Он подключается к удалённому реестру npm и выдаёт отчёты с уровнями критичности, CVSS-оценками и рекомендациями по исправлению. Полезен разработчикам для автоматизации безопасности в MCP-среде.

TypeScript⭐ 57
piiiico/proof-of-commitment

piiiico/proof-of-commitment

от piiiico

MCP-сервер для оценки рисков цепочки поставок пакетов (npm, PyPI, Rust, Go) через поведенческие сигналы: единственный издатель, давность, частота релизов. Помогает DevSecOps выявить скрытые угрозы ...

TypeScript⭐ 8
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин