mcpField
O
Over-Reach Detector

Over-Reach Detector

本地服务
github.com/choreoatlas开发工具023 周前更新

关于 Over-Reach Detector

Over-Reach Detector 是 MCP 服务和命令行工具,用于检查编码 Agent 修改的文件是否超出任务声明范围。它报告文件和类别偏差供审核,但不会阻止或撤销更改。

主要功能

  1. 01对比声明范围与修改文件
  2. 02用 fnmatch 通配符匹配路径
  3. 03检查声明及推断类别
  4. 04生成 JSON 或 Markdown 报告

适用场景

  1. 01审核 Agent 更改是否符合任务边界
  2. 02找出供人工审核的越界文件

MCP 相关

它通过 stdio 向兼容 MCP 的编码 Agent 提供 `check_scope_tool`。该工具报告范围偏差,是否执行拦截或回滚由调用方负责。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"choreoatlas-over-reach-detector": {
"command": "uvx",
"args": [
"over-reach-detector"
]
}
}
}
启动命令uvx over-reach-detector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiover-reach-detector0.0.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

越权检测器(MCP 服务)

检测并报告 AI 编码 Agent 是否修改了其声明任务范围之外的文件。旨在通过标准 stdio 传输接入 Cursor、Claude Code 和其他兼容 MCP 的 AI 编码 Agent。

比较以下两项:

  1. 声明的范围 — 任务允许修改的文件(采用 fnmatch glob)和类别(tests、docs、infra、config、code)。
  2. 实际差异 — AI 实际修改的文件。

如果实际差异超出声明的范围,工具会返回 status=over_reach,并列出违规文件和类别。

此工具能做什么,不能做什么

over-reach-detector 是审计和披露工具,不是沙箱,也不会阻止操作。

它会比较声明的任务范围与 AI 编码 Agent 实际更改的文件和类别。如果实际更改超出声明的范围,它会报告这一不匹配。

它本身不会阻止文件写入,也不会决定是否撤销、批准或阻止更改。执行、回滚或人工审核仍由调用方负责。

安装

从 PyPI 安装:

pip install over-reach-detector

从源代码安装:

git clone https://github.com/choreoatlas/over_reach_detector
cd over_reach_detector
pip install -e .

快速开始

运行所有测试:python -m pytest -v

直接试用 CLI:python -m over_reach_detector.detector --input fixtures/example_pr_1.json --format markdown

用作 MCP 服务

启动服务(stdio 传输):over-reach-detector(或从源代码运行 python -m over_reach_detector.server)

向你的 AI Agent 注册:

  • Cursor:在 ~/.cursor/mcp.json 中添加以下内容(执行 pip install over-reach-detector 后):
{
  "mcpServers": {
    "over-reach-detector": {
      "command": "over-reach-detector"
    }
  }
}

开发版 / 从源代码运行:使用 "command": "python", "args": ["-m", "over_reach_detector.server"](从仓库根目录运行)。

  • Claude Code:执行 pip install over-reach-detector 后,运行 claude mcp add over-reach-detector over-reach-detector(写入 ~/.claude.json)。开发版 / 从源代码运行:claude mcp add over-reach-detector /absolute/path/to/python -m over_reach_detector.server。

工具

check_scope_tool 接收以下参数:

  • declared_files:fnmatch glob 列表(例如 ["docs/*.md", "tests/*.py"])
  • declared_categories:从 ["tests", "docs", "infra", "config", "code"] 中选取的类别子集
  • actual_files:AI 修改的文件路径列表
  • output_format:"json"(默认)或 "markdown"

返回的报告包含:

  • status:in_scope(在声明的范围内)| over_reach(报告不匹配)| empty
  • file_overreach:与任何声明的 glob 都不匹配的文件
  • category_overreach:推断出的、超出声明集合的类别

范围约束

当前范围:CLI + MCP stdio 服务 + 1 个工具。仅支持 Python。基于 fnmatch 的 glob。

范围之外(禁止):代码质量审查、安全审计、完整性治理、Python 以外的语言、多工具 MCP 服务、HTTP/SSE 传输、GitHub Actions 集成。这些功能特意留待后续版本实现,或永不实现。

使用示例

直接从 Python 调用 check_scope_tool(与 MCP 服务公开的逻辑相同):

import json
from over_reach_detector import server

result = server.check_scope_tool(
    declared_files=["docs/*.md"],
    declared_categories=["docs"],
    actual_files=["docs/a.md", "scripts/extra.py"],
    output_format="json",
)

report = json.loads(result)
print(report["status"])          # "over_reach"
print(report["file_overreach"])  # ["scripts/extra.py"]

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。