Skip to main content
Glama

Soulfield Lens — MCP-сервер

Внешняя валидация текста, сгенерированного ИИ, как инструмент MCP.

Каждый ИИ-инструмент спрашивает ту же модель, которая написала ответ, хорош ли он. Она отвечает «да». Soulfield Lens работает извне: отдельная модель прогоняет фиксированный гейт по вашему выводу. Она проверяет текст — но не пишет его. Этот пакет помещает этот гейт внутрь Claude Code, Cursor и любого другого MCP-совместимого агента, чтобы вывод можно было проверять на том пути, где он генерируется.

Гейт закрывается при ошибке: пограничный случай возвращает UNKNOWN, а не молчаливый пропуск. Здесь нет этапа генерации, поэтому он не может выдумывать собственные утверждения — только проверять. Он всё ещё может ошибаться в суждении; именно поэтому пограничные случаи возвращают UNKNOWN, а не уверенное «да».

Это тонкая stdio-обёртка вокруг размещённого Lens API (api.soulfield.one). Никакой локальной модели, никакого этапа сборки — один файл, две зависимости.

Он предоставляет два уровня. Уровень гейта (3 инструмента) требует только API-ключа. Уровень валидатора (6 инструментов) опционален и активируется только при наличии локально установленного CLI lens-kit — он выполняет детерминированные кросс-файловые проверки и память дефектов, которые однодокументный гейт не видит. Пропустите его — и уровень гейта работает как раньше.

Попробуйте перед установкой

Демо-эндпоинт без ключа запускает тот же гейт — несколько запусков в день на IP, без регистрации:

curl -s https://api.soulfield.one/v1/demo \
  -H 'content-type: application/json' \
  -d '{"text": "<paste the AI output you are about to ship>"}'

Related MCP server: Arkheia Hallucination Detection MCP

Установка

npm install -g @soulfield/lens-mcp

Или запустите без установки: npx @soulfield/lens-mcp.

Claude Code

claude mcp add soulfield-lens \
  -e SOULFIELD_API_BASE=https://api.soulfield.one \
  -e SOULFIELD_API_KEY=<your-key> \
  -- npx @soulfield/lens-mcp

Любой MCP-клиент (JSON-конфигурация)

{
  "mcpServers": {
    "soulfield-lens": {
      "command": "npx",
      "args": ["@soulfield/lens-mcp"],
      "env": {
        "SOULFIELD_API_BASE": "https://api.soulfield.one",
        "SOULFIELD_API_KEY": "<your-key>"
      }
    }
  }
}

Для продакшн-вызовов нужен API-ключ — запросите его по адресу hello@soulfield.one. lens_health работает без него.

Инструменты

Уровень гейта — размещённый API, работает из коробки

Инструмент

Что делает

Авторизация

validate_content

Запускает внешний гейт по тексту. Возвращает pass/fail, оценку, результаты по измерениям и детали нарушений с обоснованием. Опциональные domain (general, finance, marketing, legal, seo, agency) и context (аудитория/цель).

ключ

scrub_pii

Серверное сканирование на структурированные PII и секреты — email, телефонные номера UK/US, номера кредитных карт, SSN США, номера NI/UTR Великобритании, строки подключения к базам данных и распространённые паттерны API-ключей/учётных данных. Возвращает очищенный текст (каждое совпадение заменяется маркером типа) плюс находки. Основано на паттернах, без вызова LLM. Нацелено на структурированные идентификаторы — не обнаруживает личные имена или свободные PII, а покрытие структурированных форматов является best-effort, не исчерпывающим.

ключ

lens_health

Проверяет, что Lens API работает. Возвращает статус и версию.

нет

Уровень валидатора — опционально, требует локального CLI lens-kit

Примечание о версии: уровень валидатора появится в 1.1.0. Если npm view @soulfield/lens-mcp version всё ещё сообщает 1.0.0, реестр ещё не догнал этот репозиторий, и npx @soulfield/lens-mcp даст вам только три инструмента уровня гейта. Пока установите из исходников.

Побочный эффект, о котором стоит знать: каждый вызов уровня валидатора добавляет строку в RUNS.md в своей рабочей директории — это журнал запусков набора, так задумано. Директория — это аргумент cwd, или собственная cwd сервера, если вы его опускаете, поэтому передавайте cwd явно, если вам важно, где находится журнал. Чувствительные значения флагов редактируются в строке (--deny <redacted>), поэтому запрещённые термины не попадают на диск.

Предварительное условие: pip install lens_kit (Apache-2.0, github.com/mrhpython/lens-kit), или установите LENS_KIT_BIN на его путь. Без него эти шесть инструментов возвращают UNKNOWN с ошибкой — никогда не молчаливый пропуск. API-ключ не нужен: они работают локально и не вызывают LLM.

Почему они работают локально, а не на размещённом API: они принимают пути к файлам с вашего диска. Размещённый эндпоинт, принимающий произвольные локальные пути, был бы вектором раскрытия файлов, а не функцией. На stdio пути — это ваша собственная машина, поэтому возможность безопасна здесь и только здесь — и по этой причине она не будет добавлена в размещённый API.

Инструмент

Что делает

Семантика выхода

lens_consistency_leaks

Сканирует файлы на термины из списка запрещённых (без учёта регистра, литерально). Запускайте на каждом файле, предназначенном для клиентов, перед необратимой публикацией: ловит реальное имя клиента, внутренний кодовый нейм или запрещённый абсолют, выживший в опубликованном тексте. Сканер учётных данных этого не найдёт, потому что здесь нет ничего похожего на учётные данные. Слеп к отрицаниям: запрещённая фраза, процитированная для опровержения, совпадает так же, как и утверждаемая.

совпадение доказывает наличие строки — выносите вердикт

lens_consistency_numbers

Проверяет, что каждое числовое значение в сводке действительно встречается в тексте, который она резюмирует. Ловит выдуманную цифру. Предупреждение: только литеральное сопоставление, без производной арифметики, и цифра, указанная как заменённая («заменяет оценку ~471»), помечается так же, как устаревшая. Проверяйте, не доверяйте автоматически.

нарушение / чисто

lens_consistency_markers

Проверяет, что маркеры доказательств в источнике сохраняются в каждом отрендеренном выводе — оговорка или цитата, потерянная между форматами. Чувствительно к регистру, в отличие от leaks выше: TRIPWIRE не совпадёт с Tripwire и будет считаться потерянным, когда ничего не потеряно. Предупреждение: намеренная частичная отрисовка также занижает количество законных случаев.

нарушение / чисто

Выбор запрещённых терминов и маркеров. Эти три — сигнальные, а не оракулы — при живом запуске на собственной копии этого проекта они дали шесть флагов и ноль реальных дефектов, по трём различным классам ложных срабатываний (отрицание, заменённая цифра, регистр). Это задуманное поведение, и именно поэтому доктрина гласит: выносите вердикт, никогда не применяйте автоматически. Запрещённые термины лучше всего работают как строки, которые ошибочны в любом контексте — реальное имя клиента, внутренний кодовый нейм — а не как утверждения, которые вы не делаете и которые законно появляются внутри оговорок. Маркеры лучше всего работают, когда их регистр стабилен между источником и отрисовкой. | lens_catches_relevant | Читает банк дефектов перед валидацией: предыдущие именованные дефекты для типа артефакта, сначала наиболее частые. Паттерны на пороге помечаются [PROMOTE] — они повторяются достаточно часто, чтобы заслуживать фиксированной проверки. | — | | lens_catches_add | Записывает именованный дефект, чтобы он был пойман в следующий раз: что было не так, общий паттерн, правило на будущее. Обычные прохождения отклоняются по замыслу — только реальные дефекты. | — | | lens_catches_stats | Подсчёты повторяемости по паттернам с предложениями о продвижении. Говорит, что укрепить следующим. | — |

Два уровня дополняют друг друга, а не являются альтернативами. У гейта нет инструментов и нет доступа к файлам — именно это делает его независимой проверкой, и именно поэтому он не видит противоречие, разбросанное по двум файлам. Уровень валидатора видит диск; гейт владеет оценкой. Сочетайте их: собирайте доказательства на уровне подложки с помощью локальных инструментов, передавайте текст гейту и никогда не спорьте с FAIL гейта до PASS. Полный протокол: docs/VALIDATOR-AGENT.md.

Что вы получаете за каждый запуск: квитанции — что проверялось, что прошло, что было удержано и почему. Машиночитаемо, а не значок. Мы не дадим вам гарантированную цифру точности для ваших данных: оценки не переносятся между моделями, наборами данных и средами выполнения, а инструмент, обещающий фиксированную цифру на данных, которые он никогда не видел, делает именно то утверждение, для поимки которого существует этот гейт.

Длинные входные данные

Входные данные от ~4 000 символов и выше отправляются как асинхронное задание и автоматически опрашиваются до завершения, поэтому одна длинная валидация никогда не умирает из-за тайм-аута запроса. Короткие входные данные используют быстрый синхронный путь. Никакой настройки не требуется.

Конфигурация (переменные окружения)

Переменная

По умолчанию

Назначение

SOULFIELD_API_BASE

http://localhost:8002

Базовый URL Lens API. Используйте https://api.soulfield.one для размещённого сервиса или собственное развёртывание.

SOULFIELD_API_KEY

Требуется для validate_content и scrub_pii.

SOULFIELD_VALIDATE_TIMEOUT_MS

180000

Тайм-аут на запрос для синхронного пути.

SOULFIELD_VALIDATE_BUDGET_MS

600000

Общий бюджет настенного времени для цикла асинхронного опроса.

SOULFIELD_ASYNC_MIN_CHARS

4000

Длина входных данных, при которой активируется асинхронный путь.

LENS_KIT_BIN

lens-kit

Путь к CLI lens-kit для уровня валидатора. Нужен только если его нет в PATH.

LENS_KIT_TIMEOUT_MS

120000

Тайм-аут для команды уровня валидатора. При тайм-ауте вердикт — UNKNOWN, никогда не пропуск.

Остальная часть продукта

Эта обёртка — одна из нескольких поверхностей на том же движке:

  • Бесплатный аудит с одним результатомapi.soulfield.one/audit. Аудит и есть демо.

  • Подключите (SDK stop-hook и middleware) — api.soulfield.one/developers.

  • Владейте — набор: lenses, compiler, self-improve loop, validator agent, Apache-2.0. Обучайте его на собственных данных. Публичный репозиторий: github.com/mrhpython/lens-kit — склонируйте его, pip install -e ".[dev]", и набор тестов запускается офлайн без ключа. Установка также активирует указанный выше уровень валидатора.

Мы пропускаем наши собственные маркетинговые тексты через тот же фильтр, который предоставляет этот пакет.

Лицензия

MIT — см. LICENSE. (Продукт lens-kit лицензируется отдельно под Apache-2.0.)

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrhpython/lens-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server