weekly-verify
위클리-검증 (weekly-verify-mcp)
Написанный еженедельный отчёт о работе (.docx) сверяется с исходными данными (.xlsx), чтобы найти неверные значения · пропущенные пункты · противоречащие данным описания и вернуть их человеку — персональный MCP-сервер.
Не исправляет. Только указывает. Исправляет человек.
Полный проект см. в docs/검증프로세스.md.
Текущее состояние — P0~P5 завершено · зарегистрировано в Codex
Этап | Содержание | Статус |
P0 | Каркас + загрязнённый набор данных | ✅ |
P1 | Оценщик ( | ✅ |
P2 | Парсер исходных данных + 5 типов движков проверки + L3 пропуски | ✅ |
P3 | Извлечение утверждений + сверка значений (L1·L2) + противоречия в описаниях (L4) | ✅ |
P4 | Обёртка 10 MCP-инструментов + смоук-тест | ✅ |
P5 | Регистрация в Codex + проверка запуска | ✅ |
Related MCP server: phionyx-pipeline-mcp
4 уровня проверки
Весь проект этого инструмента исходит из этой таблицы.
Уровень | О чём спрашивает | Вердикт | Серьёзность |
L1 наличие | Есть ли это значение в исходных данных | код |
|
L2 согласованность | Совпадает ли с полем этой задачи | код |
|
L3 пропуск | Не пропущен ли вердикт, который должен быть из исходных данных | код |
|
L4 интерпретация | Значение верно, но описание противоречит | человек |
|
Одного L1 недостаточно. Если значение
L-18перенести в строкуL-19, оба значения существуют в исходных данных, поэтому L1 пройдёт. Только L2, который сверяет и код задачи, поймает это.L3 — причина существования этого инструмента. Люди чаще ошибаются в еженедельных отчётах не в цифрах, а в незаписанных пунктах. Неверная цифра бросается в глаза, а отсутствующая строка — нет.
L4 структурно не может быть
error. Это принудительно обеспечиваетharness.Finding, аtests/test_harness.pyэто фиксирует. Если дать блокирующее право проверке, в которой мы не уверены, нормальные отчёты будут блокироваться, и человек выключит проверщик.
6 гейтов
evals/weekly-verify.yaml — то, что требуется от движка. Оценивается командой uv run python scripts/run_eval.py.
ID | Требование | Блокирует |
G1 уровень обнаружения | Не пропустить ни одного загрязнения уровня error в C01~C07 | ✅ |
G2 ложные срабатывания | Не выдавать error на нормальный отчёт (C10) | ✅ |
G3 серьёзность | Не выдавать error на C08·C09 | ✅ |
G4 скорость | 1 отчёт в течение 60 секунд | ✅ |
G5 обоснование | Все error заполняют обязательные координаты по уровням | ✅ |
G6 точность уровней | Классифицировать найденные замечания по правильному уровню | ⬜ для наблюдения |
Требования к координатам различаются по уровням (G5)
Уровень | Место в отчёте | Место в исходных данных | Причина |
L1 | ✅ | — | Значения нет в исходных данных, поэтому нечего указать |
L2 | ✅ | ✅ | Есть с обеих сторон |
L3 | — | ✅ | Пункта нет в отчёте, поэтому нечего указать |
L4 | ✅ | — |
Если принудительно заполнять координаты, которые невозможно заполнить, человек откроет не то место и поверит, что проверил.
N/A — это не прохождение
Гейты типа «не делай плохих вещей» (G2·G3·G5) удовлетворяются автоматически, если движок ничего не выдаёт. Если записать это как PASS, движок без единой функции выглядит так, будто прошёл 5 из 6. Поэтому, если нет оснований для оценки, записывается N/A, и N/A не считается прохождением.
Текущие результаты оценки (на момент P3 — всё пройдено)
C01 수치 조작 [OK] 1/1 C05 지연 누락 [OK] 3/3 C09 반올림 [OK] 0/0
C02 날짜 오기 [OK] 1/1 C06 미제출 은폐 [OK] 3/3 C10 정상 [OK] 오탐 0
C03 값 오배치 [OK] 1/1 C07 역행 무시 [OK] 1/1
C04 없는 과제 [OK] 1/1 C08 서술 상충 [OK] 0/0
[PASS] G1_검출률 11/11 (100%) [PASS] G4_속도 최장 0.1초 / 제한 60초
[PASS] G2_오탐 error 0건 [PASS] G5_근거 좌표 누락 0건 / error 12건
[PASS] G3_심각도 위반 0건 [PASS] G6_계층정확성 11/11 (100%)G5 проверил error 12 случаев, а ожидалось 11. Это потому, что загрязнение C01 изменило ячейки в двух таблицах по отдельности, и исправить нужно оба места, поэтому это не дубликат.
Папки
weekly-verify-mcp/
├─ docs/검증프로세스.md 설계 문서 (13개 절)
├─ src/weekly_verify/
│ ├─ harness.py 도구 응답 규약 · Finding · 두 좌표계
│ ├─ sources.py 원본 xlsx 파서 + DATA_ROOT 가드
│ ├─ findings.py 판정 5종 (원본만 보고 계산)
│ ├─ report.py 보고서 docx 파서
│ ├─ claims.py 주장 추출 (규칙 기반, LLM 미사용)
│ ├─ values.py L1 존재 · L2 정합 + 억제 규칙 3종
│ ├─ completeness.py L3 누락 검사
│ ├─ narrative.py L4 서술 상충 (warning 고정)
│ ├─ verify.py 진입점 — 네 계층 조립 + 계층 간 중복 제거
│ ├─ record.py 검증 결과 문서 생성·저장 + 승인 토큰
│ └─ server.py MCP 도구 10개 · 리소스 2 · 프롬프트 1
├─ scripts/
│ ├─ make_fixtures.py 오염 시나리오 10종 생성
│ ├─ check_fixtures.py 픽스처 자기검증 (30개 검사)
│ ├─ run_eval.py 채점기 (게이트 6종)
│ ├─ smoke_stdio.py stdio 기동 + 하네스 검사 15종
│ └─ verify_registration.py 설정 파일의 절대경로로 기동 확인
├─ tests/
│ ├─ test_harness.py 하네스 규약 잠금 (16개)
│ ├─ test_eval_contract.py 채점기 검증 — 가짜 엔진 7종 (20개)
│ ├─ test_findings.py 판정 엔진 ↔ 정답지 1건씩 대조 (27개)
│ ├─ test_completeness.py L3 누락 검사 (31개)
│ ├─ test_values.py L1·L2 + 억제 규칙 (53개)
│ ├─ test_narrative.py L4 서술 상충 (43개)
│ └─ test_server_contract.py docstring ↔ 실제 규칙 잠금 (63개)
├─ data/
│ ├─ 원본/ ← 서버가 읽는 유일한 곳
│ │ ├─ 마스터_주간보고_누적.xlsx
│ │ └─ 제출_2026-W35/ (담당자 6명)
│ ├─ 보고서/ C01~C10.docx 검증 대상
│ └─ 출력/ 검증 결과 기록 (저장 산출물)
├─ config/ 등록 설정 + README
├─ templates/ 검증 결과 문서 템플릿
└─ evals/ 🚫 서버 접근 금지 — evals/README.md 참조
├─ 정답지_2026-W35.xlsx
├─ fixtures_manifest.json 픽스처가 담고 있는 사실
└─ weekly-verify.yaml 엔진에게 요구하는 정책Причина разделения manifest и suite в том, что у них разные интересы — первое — это факт, созданный генератором, поэтому меняется вместе с docx, а второе — политика, установленная человеком, и не связано с docx. Если объединить в один файл, ожидаемые значения появятся в двух местах и будут дрейфовать.
10 сценариев загрязнения
data/보고서/C01~C10.docx. Ожидаемые обнаружения для каждого файла — в evals/fixtures_manifest.json.
Код | Тип | Что внедрено | Ожидание |
C01 | Манипуляция числами | L-01 прогресс за неделю 80 → 90 |
|
C02 | Ошибка в дате | L-08 плановая дата завершения сдвинута на день |
|
C03 | Неверное размещение значения | 60 из L-18 в строку L-19 (правильно 40) |
|
C04 | Несуществующая задача | Добавлена строка L-31 |
|
C05 | Пропуск задержки | Задержки 6→3, количество в сводке тоже скорректировано |
|
C06 | Сокрытие непредставленного | Удалена таблица непредставленных + заполнено значениями прошлой недели |
|
C07 | Игнорирование регресса | Не упомянут 1 случай регресса |
|
C08 | Противоречие в описании | Задержка 64 дня — «идёт гладко» |
|
C09 | Округление | 62.2% → 62% |
|
C10 | Нормальный | Без загрязнения |
|
C05 · C06 · C07 — ключевые
Эти три сохраняют внутреннюю согласованность загрязнённого отчёта. Удаляя 3 задержки, одновременно исправили количество в сводной таблице с 6 на 3. Поэтому при чтении только отчёта нет никаких противоречий, и это выявляется только при сверке с исходными данными. Удалённые L-02 · L-08 · L-19 — это ровно те 3 случая, где ответственный оставил поле 이슈리스크 пустым.
C09 · C10 не менее важны
Это тест на предотвращение ложных срабатываний. Проверщик, который выдаёт error на нормальный отчёт, никто не будет использовать.
Правила подавления — одна ошибка сообщается как один случай
Даже если загрязнение изменило только одно место, производные значения ошибочны по цепочке. В C02 сдвинули только 계획완료일 на день, но 경과일 тоже стал неверным, а в C03 изменили только 금주진척률, но 증감 тоже неверен. Если указывать на всё это, одна ошибка превратится в два замечания, человек будет искать в двух местах и не сможет оценить серьёзность по количеству замечаний.
# | Правило | Случаи, не подавляемые |
1 | Если задачи нет в исходных данных, другие значения этой строки не сверяются | — (заканчивается 1 замечанием L1) |
2 | Значения текущей недели непредставленной задачи не сверяются | Значения прошлой недели сверяются как есть |
3 | Производные значения пропускаются, если материал уже был отмечен | Если материал верен, указывается ошибка производного значения |
4 | Подавляется замечание о количестве в сводке для категории, обработанной L3 | Если пункты верны, а неверно только количество, указывается |
Подавление не безусловно. Для каждого правила протестированы пары: подавляемая сторона и неподавляемая — правила подавления тихо рушатся в тот момент, когда хочется сказать «вот это тоже хорошо бы отметить».
Столбцы, которые не проверяются, объявляются
В claims.미검증_열 записаны 5 типов с причинами (상태 — это метка вердикта, поэтому относится к L3, форма O (완료 2026-08-20) в таблице регрессов — свободный формат, поэтому сверка нестабильна, и т.д.). Если тихо пропускать, это читается как «всё проверено», но на самом деле есть столбцы, которые не просматривались.
Запуск
uv sync --extra devuv run python scripts/make_fixtures.pyuv run python scripts/check_fixtures.pyuv run python scripts/run_eval.pyuv run python -m pytest -quv run python scripts/smoke_stdio.pyuv run python scripts/verify_registration.py10 MCP-инструментов
# | Инструмент | Этап | Запись |
1 |
| DISCOVER | |
2 |
| SOURCE | |
3 |
| BASELINE | |
4 |
| REPORT | |
5 |
| CLAIM | |
6 |
| VERIFY (L1·L2) | |
7 |
| COMPLETE (L3) | |
8 |
| NARRATE (L4) | |
9 |
| PREVIEW | |
10 |
| SAVED | ✅ |
Быстрый путь: один инструмент №9 запускает все четыре уровня. Промежуточные инструменты используются, чтобы показать человеку, «почему вынесен такой вердикт».
Ресурсы template://verification · report://{보고서}, промпт verify_weekly_report.
Сохранение — это «запись замечаний» — error не блокирует
В черновике проекта было написано «отказать в сохранении, если есть хотя бы один error», но это было неверное правило. Сохранение — это запись замечаний, и именно когда есть error, запись нужна больше всего. Если блокировать в этот момент, инструмент становится бесполезным.
Блокировать нужно было другое.
# | Условие отказа | Причина |
1 | Токен одобрения не совпадает с текущими замечаниями | Предотвращает попадание в файл содержимого, которое человек не проверил |
2 | Есть | Это не запись, а ложь |
Заключение — одно из 통과 · 보류 · 반송. Токен одобрения вычисляется из содержимого замечаний, поэтому если изменится хотя бы одно замечание, токен не совпадёт и сохранение будет отклонено.
Эти два условия явно указаны в описании инструмента save_approved_verification, а tests/test_server_contract.py сверяет описание с фактическим кодом и фиксирует это — модель не читает код, поэтому правил, которых нет в описании, для модели не существует.
Регистрация (P5)
Регистрация в Codex завершена — в ~/.codex/config.toml есть [mcp_servers.weekly-verify] (резервная копия: config.toml.bak-2026-08-26). После перезапуска Codex инструменты появятся.
Claude Desktop — %APPDATA%\Claude — частично заблокированный путь, поэтому инструмент не может туда записать. Объедините содержимое config/claude_desktop_config.example.json вручную — это намеренная блокировка, и мы её не обходим.
command обязательно должен быть абсолютным путём. Десктопное приложение не наследует PATH из логин-шелла, поэтому если написать просто uv, в терминале работает, а в приложении сервер не запускается.
uv run python scripts/verify_registration.pyПроверяются 2 примера конфигурации и фактически зарегистрированная живая конфигурация — всего 3. Даже если примеры верны, но фактическая регистрация неверна, в приложении не запустится.
О данных
Все данные в data/ — учебные виртуальные (вымышленные) данные. Имена ответственных — персонажи классических романов, задачи — несуществующие темы автоматизации логистики. Никаких реальных корпоративных данных или личной информации нет, и не кладите реальные корпоративные файлы в эту папку.
Исходные данные взяты из mx-agentic-ai-day1-prd.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Verifies AI agent work end to end: real artifacts and outcomes checked, not self-reported success.
PDF, photo, email, and file comparison evidence checks with plain-language reports.
Messy spreadsheets in, clean checkable tables out. Every result carries its arithmetic proof.
Fact-checks generated content against your sources of truth showing what to trust, change, & verify.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceThis MCP server verifies that an agent’s claimed tool output matches the actual response returned by a tool to prevent invented or distorted results. It flags mismatches, omissions, and invented fields to ensure downstream logic only processes verified tool data.
- AlicenseAqualityAmaintenanceEnables verification of AI coding agent self-reports against git diff truth and a deterministic gate, producing pass/regenerate/reject directives to ensure claimed work matches actual changes.6AGPL 3.0
- AlicenseAqualityBmaintenanceCompare design and implementation screenshots using pixel-by-pixel analysis, generating visual diff images and metrics.119MIT
- FlicenseNot gradedqualityBmaintenanceEnables to extract project handover evidence and check material completeness against requirements without making approval decisions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/asuramama-hue/weekly-verify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server