Skip to main content
Glama

위클리-검증 (weekly-verify-mcp)

将已撰写的周工作报告(.docx)与原始数据(.xlsx)进行对照,找出错误值 · 遗漏项 · 与数据不符的叙述并反馈给人工的个人用 MCP 服务器。

不修改,只指出。 修改由人工完成。

整体设计请参阅 docs/검증프로세스.md


当前状态 — P0~P5 已完成 · 已注册 Codex

阶段

内容

状态

P0

骨架 + 污染数据集

P1

评分器 (run_eval.py) — 先于判定引擎

P2

原始解析器 + 判定 5 类引擎 + L3 遗漏

P3

主张提取 + 值对照(L1·L2) + 叙述冲突(L4)

P4

MCP 工具 10 个封装 + 冒烟测试

P5

注册 Codex + 启动确认


Related MCP server: phionyx-pipeline-mcp

验证 4 层

此工具的整体设计全部源自此表。

层级

所问的问题

判定

严重程度

L1 存在

该值是否存在于原始数据中

代码

error

L2 一致

是否与该任务的该字段一致

代码

error

L3 遗漏

应从原始数据中得出的判定是否缺失

代码

error

L4 解读

值正确但叙述不符

人工

warning 固定

  • 仅靠 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     엔진에게 요구하는 정책

manifestsuite 分开的原因是关注点不同 — 前者是生成器产生的事实, docx 变更时随之变更;后者是人工制定的策略,与 docx 无关。 若合并到一个文件中,期望值会出现在两处,从而产生漂移。


10 类污染场景

data/보고서/C01~C10.docx。每个文件的预期检出结果位于 evals/fixtures_manifest.json

代码

类型

植入内容

预期

C01

数值篡改

L-01 本周进度率 80 → 90

error L2

C02

日期错误

L-08 计划完成日推迟一天

error L2

C03

值错位

将 L-18 的 60 填入 L-19 行 (正确答案 40)

error L2

C04

不存在的任务

新增 L-31 行

error L1

C05

遗漏延迟

延迟 6→3 件,汇总数量也一并调整

error L3 ×3

C06

隐瞒未提交

删除未提交表 + 用上周值填充

error L3 ×3

C07

忽略倒退

未提及 1 件倒退

error L3

C08

叙述冲突

将 64 天延迟描述为"进展顺利"

warning L4

C09

四舍五入

62.2% → 62%

warning

C10

正常

无污染

error 0 件

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 dev
uv run python scripts/make_fixtures.py
uv run python scripts/check_fixtures.py
uv run python scripts/run_eval.py
uv run python -m pytest -q
uv run python scripts/smoke_stdio.py
uv run python scripts/verify_registration.py

MCP 工具 10 个

#

工具

阶段

写入

1

list_verification_targets

DISCOVER

2

read_source_data

SOURCE

3

compute_baseline_findings

BASELINE

4

read_report

REPORT

5

extract_report_claims

CLAIM

6

verify_claims

VERIFY (L1·L2)

7

check_completeness

COMPLETE (L3)

8

flag_narrative_risks

NARRATE (L4)

9

preview_verification_report

PREVIEW

10

save_approved_verification

SAVED

快捷路径: 仅用第 9 个即可运行全部四层。中间工具用于向人展示"为何如此判定"。

资源 template://verification · report://{보고서},提示词 verify_weekly_report

保存是'指摘记录' — error 不阻断保存

设计草案中曾写有"只要存在一个 error 就拒绝保存",但这是错误的规则。 保存的是指摘记录,而存在 error 时恰恰是最需要记录的时机。 若此时阻断,工具就失去了用处。

需要阻断的是其他内容。

#

拒绝条件

理由

1

批准令牌与当前指摘内容不一致

防止未经人工确认的内容写入文件

2

存在 error 但结论为'通过'

不是记录,而是谎言

结论为 통과 · 보류 · 반송 之一。批准令牌由指摘内容计算得出,因此 只要指摘有任何变化,令牌就会不一致,保存即被拒绝。

这两个条件已明确写入 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

F
license - not found
A
quality
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

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

Related MCP Servers

View all 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/asuramama-hue/weekly-verify-mcp'

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