Files
portal/docs/research/research-vet.md
T

73 lines
6.6 KiB
Markdown

# Провенанс-вет research-tooling (Perplexity Pack) — IS9
**Дата:** 2026-06-14
**Объект:** три MCP-сервера research-слоя (Perplexity Pack) перед формализацией и переносом в main.
**Методология:** факты из npm registry (`npm view <pkg> --json` + `… readme`) — владелец/лицензия/версия/активность/мейнтейнеры/провенанс/что исполняет. GitHub API (`gh api`) — **degraded** в этом прогоне (аккаунт `gh` suspended, HTTP 403 → звёзды/форки/archived не получены; компенсируется `repository.url` + датами из npm). Аналог `docs/security/infosec-vet.md` (IS9).
---
## #87 perplexity — `@perplexity-ai/mcp-server`
| Поле | Значение |
|---|---|
| Владелец / мейнтейнеры | **Perplexity** (author `Perplexity`); мейнтейнеры `daniel.morgan@perplexity.ai`, `long@perplexity.ai`, `jason.klym@perplexity.ai` (+1 `kesku@gmail`) |
| Лицензия | **MIT** |
| Версия / пин | latest **0.9.0** (modified 2026-05-15); ставим по тегу latest через npx |
| Репозиторий | `github.com/perplexityai/modelcontextprotocol` (официальный) |
| Провенанс | **SLSA provenance attestation** (подписанная сборка через GitHub Actions OIDC) — сильнейший из трёх |
| Что исполняет | 4 tools: `perplexity_search` / `perplexity_ask` (sonar-pro) / `perplexity_research` (sonar-deep-research) / `perplexity_reason` (sonar-reasoning-pro). Секрет: `PERPLEXITY_API_KEY`. Трафик: `api.perplexity.ai`. Деп: zod/cors/undici/express/@modelcontextprotocol/sdk |
| Сеть / телеметрия | только Perplexity API; сторонней телеметрии в README нет |
| **Вердикт** | **ПРИНЯТ** — официальный вендор, MIT, SLSA-провенанс, активен |
## #88 exa — `exa-mcp-server`
| Поле | Значение |
|---|---|
| Владелец / мейнтейнеры | **Exa Labs** (author `Exa Labs`); мейнтейнер `ishan@exa.ai` |
| Лицензия | **MIT** (заявлено в `.mcp.json`/репо); ⚠️ **поле `license` отсутствует в npm-метаданных** — сверить `LICENSE` в репо при доступном gh (сейчас degraded) |
| Версия / пин | latest **3.2.1** (modified 2026-04-23); npx по latest |
| Репозиторий | `github.com/exa-labs/exa-mcp-server` (официальный) |
| Провенанс | только npm-registry-подпись (SLSA-attestation НЕТ, в отличие от perplexity) |
| Что исполняет | tools `web_search_exa` / `web_fetch_exa` (default) + `web_search_advanced_exa` (off-by-default); deprecated-набор (company/people/code) — выкл. Секрет: `EXA_API_KEY`. Хостед `mcp.exa.ai` ИЛИ npm-stdio (используем npm). Деп: @modelcontextprotocol/sdk, exa-js, axios, jose, zod, agnost, whoami, mcp-handler |
| Сеть / телеметрия | Exa API; деп `whoami` — мелкая курьёзность (вне README не верифицировано — см. «Ограничения») |
| **Вердикт** | **ПРИНЯТ** (с пометками: npm не отдаёт `license`-поле; нет SLSA-провенанса; глубокий разбор исходников не делался) |
## #89 firecrawl — `firecrawl-mcp`
| Поле | Значение |
|---|---|
| Владелец / мейнтейнеры | **Firecrawl / Mendable** (author `firecrawl`); мейнтейнер `hello@sideguide.dev` (компания Firecrawl) |
| Лицензия | **MIT** |
| Версия / пин | latest **3.20.4** (modified 2026-06-09 — самый активный) |
| Репозиторий | `github.com/firecrawl/firecrawl-mcp-server` (официальный) |
| Провенанс | npm-registry-подпись (SLSA-attestation НЕТ) |
| Что исполняет | search / scrape / batch_scrape / map / crawl / extract + `firecrawl_agent` (автономный web-research) + status. Секрет: `FIRECRAWL_API_KEY`. Cloud + self-hosted. Деп: @mendable/firecrawl-js (офиц. клиент), firecrawl-fastmcp, dotenv, zod |
| Сеть / телеметрия | Firecrawl API (cloud) / self-hosted; сторонней телеметрии в README нет |
| **Вердикт** | **ПРИНЯТ** — официальный вендор, MIT, очень активен |
---
## Итоговая таблица вердиктов
| # | Пакет | Владелец | Лицензия | Провенанс | Вердикт |
|---|---|---|---|---|---|
| 87 | `@perplexity-ai/mcp-server` | Perplexity | MIT | SLSA attestation | **ПРИНЯТ** |
| 88 | `exa-mcp-server` | Exa Labs | MIT¹ | npm-sig | **ПРИНЯТ**¹ |
| 89 | `firecrawl-mcp` | Firecrawl/Mendable | MIT | npm-sig | **ПРИНЯТ** |
¹ license-поле отсутствует в npm-метаданных exa; MIT заявлен в репо/`.mcp.json` — сверить `LICENSE` в репозитории, когда `gh` снова доступен.
**Состав пака:** все три ПРИНЯТ → переносим все три (Plan 1 Task 3). Ни один не ОТКЛОНЁН.
## Ограничения вета (degraded)
- **GitHub API недоступен** (`gh` account suspended, HTTP 403): звёзды/форки/`archived`/`open_issues` не получены. Компенсировано `repository.url` + датами публикаций из npm (все три — официальные орг-репозитории, активные).
- **Глубокий разбор исходников за пределами README не делался** — отдельным проходом при активации серверов (live-smoke + при желании инспекция tarball). Деп-курьёзности (`whoami`/`agnost` у exa) не трассировались до сетевых вызовов.
- **Ключи** `PERPLEXITY_API_KEY` / `EXA_API_KEY` / `FIRECRAWL_API_KEY` — только в пользовательском окружении, НЕ в репозитории (gitleaks/§5.4).
## Связано
- `docs/research/README.md` — дом раздела research-tooling.
- `docs/superpowers/specs/2026-06-14-perplexity-pack-research-tooling-design-v3.md` — дизайн ({#D2}).
- `docs/security/infosec-vet.md` — методология-образец (IS9).