weekly-verify
위클리-검증 (weekly-verify-mcp)
将已撰写的周工作报告(.docx)与原始数据(.xlsx)进行对照,找出错误值 · 遗漏项 · 与数据不符的叙述并反馈给人工的个人用 MCP 服务器。
不修改,只指出。 修改由人工完成。
整体设计请参阅 docs/검증프로세스.md。
当前状态 — P0~P5 已完成 · 已注册 Codex
阶段 | 内容 | 状态 |
P0 | 骨架 + 污染数据集 | ✅ |
P1 | 评分器 ( | ✅ |
P2 | 原始解析器 + 判定 5 类引擎 + L3 遗漏 | ✅ |
P3 | 主张提取 + 值对照(L1·L2) + 叙述冲突(L4) | ✅ |
P4 | MCP 工具 10 个封装 + 冒烟测试 | ✅ |
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 检出率 | C01~C07 error 级污染一个都不漏 | ✅ |
G2 误报 | 对正常报告(C10)不产生 error | ✅ |
G3 严重程度 | 对 C08·C09 不产生 error | ✅ |
G4 速度 | 每份报告 60 秒以内 | ✅ |
G5 依据 | 所有 error 均填写各层级必填坐标 | ✅ |
G6 层级准确性 | 将发现的指摘正确分类到对应层级 | ⬜ 仅观察 |
各层级的坐标要求不同 (G5)
层级 | 报告位置 | 原始位置 | 理由 |
L1 | ✅ | — | 原始数据中不存在该值,因此没有可指向的单元格 |
L2 | ✅ | ✅ | 两侧均存在 |
L3 | — | ✅ | 报告中不存在该项目,因此没有可指向的位置 |
L4 | ✅ | — |
若强行填写无法填写的坐标,人打开错误的位置查看后还会误以为已确认。
N/A 不等于通过
"不要做坏事" 类门禁(G2·G3·G5)在引擎不产生任何输出时自动满足。
若将其记为 PASS,一个毫无功能的引擎看起来就像通过了 6 项中的 5 项。
因此,若没有可评估的依据则记为 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 检查了 12 件 error,但预期是 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 | 值错位 | 将 L-18 的 60 填入 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.pyMCP 工具 10 个
# | 工具 | 阶段 | 写入 |
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 必须使用绝对路径。桌面应用不会继承登录 shell 的
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