@descryy/ mcp (英语)
Descry的MCP服务器. 它将一个寄存器的源头读入一个代码,路线,表格和测试的图中,让一个编码代理来问该图一个变化到达了什么,测试了什么,以及应用程序运行时什么中断.
它报告了一些调查结果,可以提出证据,并明确列出它无法核实的内容。 无法读到的东西被报告为"不可分析",从未如此干净.
一切都运行在你的机器上。 地图是存放在仓库里的 .descry/ 文件夹.
所需资源
- 节点(Node.js 22.5或更新)(该图使用节点所建的SQLite).
- 一个有至少一个承诺的 Git 仓库 。 图表中每个节点都用它读到的承诺来盖上印章,所以一个不是寄存器的文件夹,或者一个没有承诺的寄存器无法被建造.
- Linux 用于沙箱跑道. 这个
observe财务报告和审定财务报表generate_test工具在沙盒内运行您的代码 : 默认的泡泡包装, 网络被拒绝, 或者 Docker 带有sandboxBackend: "container"如果两者都不起作用,它们就拒绝启动而不是运行不受限制。 Descry自己的测试在Linux上运行;macOS和Windows还没有被验证. - Chromium,只用于浏览器工具.
npx -y @descryy/cli setup安装它。 没有它,这些工具拒绝并说原因.
快速启动
-
在寄存器中,写入其配置 :
npx -y @descryy/cli init这将检测识别寄存器的语言适配器, 并将其写入
.descry/config.json,并用此服务器的精确版本打印下两个步骤. -
向您的代理注册服务器 。 克劳德代码:
claude mcp add descry --scope local -- npx -y @descryy/mcp@<version> "$(pwd)"使用该版本
init已打印过。 对于任何其他MCP客户端来说,服务器是一个stdio命令:npx与论据-y, (中文(简体) ),@descryy/mcp@<version>,以及存储器的绝对路径. -
在经纪人,呼叫
workspace带有动词的工具analyze(或运行)npx -y @descryy/cli analyze) (中文(简体) ). 这张图就是这个 每一个其他工具然后从中解答,大多数工具会先用它来建立自己.
无寄存器 .descry/config.json或者一个没有 sources,连接但无法构建。 任何工具的首个回复都这么说 并命名固定:运行 init 命令上方,或调用 workspace 动词 setup。 。 。 .
提交 .descry/config.json 财务报告和审定财务报表 .descry/.gitignore。所有其它内容 .descry/ 这是机器的,被git忽略.
工具
十八个工具 十九个工具, descry_confirm只有客户在每次通话前都会询问当事人 班上说一个电话能做什么: read 只读, stateful-read 可写出Descry自己的衍生文件(图表、目录),并可安全重复 action 执行不是普通读取(运行寄存器代码、驱动浏览器、或写配置或存储)的东西。 工具的类是其最严格的动词. tools/list 还携带 verbClasses 对于一个动词不同的工具, 和每个答复的 class 是被称作动词的类,所以 questions 没有记录 read,一个答案是 stateful-read 财务报告和审定财务报表 workspace 动词 analyze 实值 stateful-read。一个动词,如果一个调用时没有可确认的运行,无论它的工具等级如何;每个工具的描述都表示哪个动词先问.
| 工具 | 类 | 它会做什么 |
|---|---|---|
workspace | 动作 | 构建图表( E)analyze,状态读取),跨链接寄存器构建一个图表(index),宣布共享的工作空间(link),停止读取共享图表或去除死链接(unlink,写入此寄存器的适配器(setup,确认适配器的配置名称(trust_sources) (中文(简体) ). |
change_scope | 动作 | Diff的爆炸半径(diff),即一个分支与其合并基分拆成测试和未测试的分支(pr),或每一次在回复中进行预推检查(pre_push,这需要 head 以审查一个未检查的分支,所有只读. record 存储符号分支更改 check cross_pr 可以与其他分支进行比较 forget 移除一个. |
code_context | 读取 | 按名称查找代码( N)search,概要文件或文件夹 (outline),爆炸半径并覆盖试验和事故(impact),合并变化的文件(history),其中值流动(propagation),点击处理器(chain),排名为失败原因(root_cause) (中文(简体) ). |
git_context | 读取 | 生活读取了git,而不是存储的图:diff(diff)和一个文件的历史(log) (中文(简体) ). 工作没有图表. |
disclosure | 读取 | 迄今的答复没有涵盖的内容:coverage),引用图表无法解决(unresolved),并检查您引用的路径或目标是否通过较早的呼叫被退回(verify_claim) (中文(简体) ). |
check | 读取 | 呼叫没有到达任何路线和路线,没有呼叫contracts),缺入 vars 和无序迁移(validate),文件通常一起更改并在同一代码上进行飞行中更改 (cross_pr错误处理和类似危害的线索,绝不是缺陷(hazards,它接受 limit 并说它剪了多少个. |
reach | 读取 | 数据变化达到的页(predict),以及从diff所接触的页面起只航行的旅程(propose) (中文(简体) ). 从不驱动浏览器 . |
prove_reach | 动作 | 在真实浏览器中驱动预想的行程并锁定结果. 一个干净的页面载荷被报告为未经证实,而不是作为没有错误的证据. |
draw_conclusion | 读取 | 通过治理门运行一个图表路径和运行时间证据(gate),并将存储的发现读回(get, (中文(简体) ), list) (中文(简体) ). |
questions | 状态读取 | 列出解禁最多的未决问题(只读; verb 选择列表、回答或忘记),并记录或删除您的答案,首先验证数值。 一个答案被下一个构件所使用,并在可靠性B被封顶. |
slop | 读取 | 更改中的低质量代码( E)scope 更改、 默认)或整个寄存器(repo:被发明的参考文献,占位符体,吞入错误,未用添加,无需要的包装,复制版,测试不能失败. 报告代码的属性,从来没有谁或什么写它,编辑什么,并列出它无法运行的每个检查. |
similar_incidents | 读取 | 排名记录的事件与被触碰的文件或出错文本相近. |
mark_incident | 动作 | 记录一个缺陷和它所居住的文件,所以以后的失败可以与之相匹配,并再次删除一个记录与 unmark。 。 。 . |
observe | 动作 | 启动或附属于应用程序并记录其所作所为(runtime),或运行项目自己的测试套件和测试运行的记录(tests) (中文(简体) ). |
browser_read | 状态读取 | 只读浏览器操作 : snapshot, (中文(简体) ), navigate, (中文(简体) ), wait_for, (中文(简体) ), close, (中文(简体) ), layout, (中文(简体) ), record_start, (中文(简体) ), record_stop。 。 。 . |
generate_test | 动作 | 查找没有覆盖测试的已更改的函数( N)targets,只读),运行生成的测试,并仅保留那些通过,在代码被更改后失败并通过3个运行(verify),并写出一个提案(apply) (中文(简体) ). |
qa | 动作 | 储存库的测试所证明的以及缺少证据的地方:漏洞、库存、薄弱和陈旧的测试、授权缺口、假设情景(scenarios 带 includeSources 添加引用的源文本,默认取消),并完整报告(analyze),这些都运行没有代码. gaps 财务报告和审定财务报表 analyze 默认为紧凑; 通过 compact: false 完整的答复. workflows 不再在读取时创建存储的工作流程 : refresh 默认为虚假,并说它创造了多少当真实. delete_scenario, (中文(简体) ), delete_manual 财务报告和审定财务报表 delete_workflow 删除存储的情景、手动大小写或工作流程. validate_tests 运行你的测试 针对故意更改 他们覆盖的代码. |
browser | 动作 | 驱动一个真实的浏览器, 每个调用一个动词 : start_session, (中文(简体) ), click, (中文(简体) ), type, (中文(简体) ), fill, (中文(简体) ), select, (中文(简体) ), submit, (中文(简体) ), save_scenario, (中文(简体) ), run_scenario, (中文(简体) ), explore, (中文(简体) ), autopilot。 。 。 . |
descry_confirm | 动作 | 核准一个待采取行动。 仅列出克洛德代码版本,每通电话前都会询问此人;见下文. |
按动词说明必要的参数。 计划只保留 verb 因为有些主机拒绝有条件的策略,所以每个参数的描述都说哪些动词需要它,而策略中的规则是一样的 x-requiredByVerb 关键词 一个不给一个电话的电话 被拒绝之前,任何事情运行,命名它。 A 类 limit 其默认值因动词而异,逐一列出默认值,且 x-defaultsByVerb 把它们当作数字.
Long calls在客户端发送进度令牌时报告进度:每几秒钟就发出一条信息来命名该呼叫以及它运行了多久. 取消一个呼叫停止了它的进度,也没有给它发送任何答案,尽管一个不读取其取消信号的工具可能会一直工作到结束.
确认行动
一个运行代码,写入寄存器或驱动有写作安全的浏览器的动词在其第一次调用时没有任何作用. 它返回一个描述 它到底会做什么,a confirmToken,和(如果有队列)批准编号。 再用这个符号调用同一个工具 运行它,但只有在一个人批准 准确的描述。 一个符号是单用,与第一次呼叫的论据相接(第二次呼叫的更改参数被丢弃并命名在回函中),15分钟后失效. 打电话的代理人凭自己的授权出示的证明书被拒绝,拒绝书列出了获得批准的方式。 拒绝后仍有效,因此批准可以稍后到达.
其中任何一种标志都得到批准:
descry_confirm克劳德代码. 经纪人打电话来descry_confirm与token并带有summary将第一个调用返回的句子设定为字符。 该工具被标记anthropic/requiresUserInteraction,因此克洛德代码在每一次通话中,在包括汽车在内的每个许可模式中,显示自己的许可提示,允许规则不能跳过. 这个人在那个提示中读了这句话. 然后代理再次用同样的论据调用动词confirmTokenA级summary所保存的句子不会被拒绝,也不会改变任何东西;被拒绝的句子会留下符号。 单位dontAsk在无人接听的无头跑道中 Claude Code否认了电话 其它路线也适用 该工具仅当客户端将自己命名为支持旗帜的克洛德码版本时才被列出,并被荣誉;对于其他任何客户端则不存在并被回覆取出其他路线的名称. 每个结果都记录在~/.descry/approvals-audit.jsonl(一个简短的指代,从来不是指代).- MCP诱导. 如果客户端宣布,第二通电话直接询问当事人,显示准确的文字. 只有在他们同意的情况下才能运行 一个人的下降是最终的 下降的速度快于任何人读取的速度,据报是无人看管的,而信使则停留在等待另一条路由.
descry approvals在终点站. 门牌动词的首个调用会排队批准~/.descry/approvals(15分钟,最多50分钟,从来不是辩论本身).descry approvals list显示什么是等待,descry approvals approve <id>显示句子,并让个人键回id,以及descry approvals deny <id>拒绝。 代理的下一个电话 与它的代号 然后运行一次。 这不需要客户端支持,因此在VS代码扩展,汽车模式和无头运行中有效.- 常年批准, 在一个终端.
descry approve创建文件~/.descry/grants,对用户保密,绑定在这个寄存器上,有时间限制,没有--yes数字 :browser --origin <address>用于关于确切来源的只读会话(最多7天),browser --write --origin <loopback address>仅供本地主机编写级会议使用,127.0.0.1或[:1],tests --command <command>对于一个准确输入的测试命令,sandbox页:1qavalidate_tests财务报告和审定财务报表generate_testverify和store写给德斯克里自己的店 最后三个和写字的种类最多持续24小时.descry approve --list给他们看--revoke <id>移除一个。 一个呼吁的赠款覆盖 说哪一笔赠款批准了它. - 动词的命令行对等,对于一个人或管道:
descry browse, (中文(简体) ),descry observe tests, (中文(简体) ),descry qa validate-tests, (中文(简体) ),descry scenario record, (中文(简体) ),descry trust, (中文(简体) ),descry init, (中文(简体) ),descry setup, (中文(简体) ),descry analyze。每个打印的文本与服务器的相同,在终端询问,没有终端拒绝,除非--yes给出。 提示从控制终端读取,丢弃任何在出现之前被粘贴的东西,只取其后被打出的东西. 独自运行每个命令 等待它的快.
DESCRY_REQUIRE_HUMAN_CONFIRMATION 除非设置为 0。如果启用它,由于默认,没有客户端能够自行确认。 准备吧 0 在服务器环境中,只用于一个设置,其中呼叫代理是用来确认自己的动作(一个您写的脚本和信任).
不要通过侧面客户端,脚本或 shell 命令来赎回令牌,不要添加一个可以批准戴斯克里所问事项的钩子. 步骤的价值在于一个人看见了句子.
在你见到他们之前 有三个确认是值得知道的.
workspace 动词 trust_sources。 。 。 . .descry/config.json 列出适配器模块,并用寄存器选择的选项加载其代码。 因为一个寄存器可以更改文件,所以在这个机器确认之前,一个源不会被加载. 第一个调用列出了哪个模块、导出和选项将装入;第二个调用记录了寄存器外的确认,在 ~/.descry/confirmed-sources.json。对模块的更改、导出或选项再次询问. init 财务报告和审定财务报表 setup 确认他们自己写的适配器。 要确认一个寄存器, 请运行 descry trust (单位:千美元)npx -y @descryy/cli trust在它内。 要信任服务器打开的每一个寄存器, 设置 DESCRY_TRUST_CONFIGURED_SOURCES=1 在服务器环境中; 覆盖每个寄存器, 而不仅仅是一个. 虽然适配器不可信,但每个读取的图表都以"来源不读"为标题并报告其新鲜度为: unread。 。 。 .
重放保存的情景 . browser 动词 run_scenario 重放已承诺的文件 descry/scenarios/假设此机在其当前内容上未获批准,则首先获得双打确认。 第一个调用名称是文件,其内容散列,其访问的出处和它输入的秘密引用,并重放任何内容. 批准存储于 ~/.descry/approved-scenarios.json; 再次编辑文件询问 .
运行您的代码. observe 财务报告和审定财务报表 generate_test 在上述沙盒中开始应用或测试. qa 动词 validate_tests 也进行测试,反对故意更改它们覆盖的代码, 并接受同样的两个电话。 第一通电话说要开始什么.
运行评价
一个无人看管的跑步(一个基准,一个CI工作,一个特工用具)没有人回答同意的提示,所以在第一次通话之前设定:
- 运行
npx -y @descryy/cli init --yes首先在仓库里。 写着.descry/config.json并证实它检测到的适配器,因此第一个工具调用读取了源而不是要求设置. - 一次用
npx -y @descryy/cli analyze,或打电话workspace动词analyze。 。 。 . - 对于运行代码,写入文件或驱动浏览器的动词,从上面"确认动作"中选择一条路由. 对于您所写并信任的绳索,请启动服务器
DESCRY_REQUIRE_HUMAN_CONFIRMATION=0所以,代理的第二次通话与它的confirmToken运行。 添加DESCRY_TRUST_CONFIGURED_SOURCES=1如果仓库是.descry/config.json名称适配器 此机器尚未确认 。 两种设置都适用于服务器所打开的每个寄存器;使其远离日常设置. - 读取每个回复的类别及其"本回复不包含的"列表. 拒绝或部分结果被报告为一体,并被评为错误的答案来衡量错误的事情.
读取结果
每一份答复都说明它依赖多少。 调查结果包含其中的一类:
confirmed-observed:证实,并附有申请中实际提出的证据.confirmed-code-only:仅由代码确认,由两种或两种以上独立的机制直接证明。 没有观察到任何活动.strongly supported:证据有力,但没有得到证实.unconfirmed:一个预测. 它从来没有被报告为事实.not analysable: Descry 无法读取这部分,在这里. 这和"一无所获"不同.unsupported: Descry完全不这样做.
每一份答复还列出了它没有涵盖的内容,包括一个陈旧的图表,一个没有适配器的语言,并且引用图表无法解决. 试验覆盖范围是一个单独的轴线,报告为核查状态.
解决问题
npx -y @descryy/cli doctor
检查节点版本和内置的 SQLite, 引擎的复制件安装完毕, CLI 和旁边的服务器是一起发布的版本, npx 的缓存一个半提取的软件包, 常态审批和等待您的批准, 在一个寄存器中, 它的 git状态, 配置, 适配器, 这个机器是否确认它们, 以及图表 。 每个发现的名字 它的固定. --fix 仅从 npx 的缓存中删除已破碎的 Descry 项 .
常见的首发消息 :
- "还没有.descry/config.json"或"没有来源":运行
npx -y @descryy/cli init,或打电话workspace动词setup。 。 。 . - "本机未确认"或"未读出出处":见下项.
- "不是git仓库"或"还没有承诺":运行
git init并做出第一个承诺. - "descry-mcp:没有找到"或
ENOTEMPTY从 npx: 运行doctor --fix。 。 。 .
分析说没有源代码读取/ 适配器未确认
那么图中只有Git历史,没有代码. 按这个顺序处理:
- 运行
npx -y @descryy/cli init --yes在寄存器中,记录了这台机器对它所写的适配器的确认. 或运行descry trust [--yes] [path],这证实了一个寄存器在这个机器上配置的适配器,每个寄存器.descry analyze然后从命令行中构建图表. - 如果配置已经列出适配器,请打电话
workspace动词trust_sources并批准它提出的要求 不能显示批准提示的客户端不能完成这一步骤;使用步骤 1. - 打电话
workspace动词analyze复(或运行)descry analyze) (中文(简体) ).
未设置 DESCRY_TRUST_CONFIGURED_SOURCES=1 在全局服务器条目中. 它信任服务器所打开的每一个寄存器,一个寄存器可以通过编辑一个已承诺的文件来改变它的适配器列表. 如果您需要, 请设置为一个可信任的寄存器, 在寄存器自己的服务器条目中 .
Claude 代码权限和自动模式
Claude Code在Descry看到之前决定每个工具调用,通过许可规则,询问规则,或者在自动模式下,一个分级器;Descry自己的批准会随之而来. 允许规则只回答第一个。 规则被命名 mcp__<server-name>__<tool>时 <server-name> 是给定的名称 claude mcp add内 .claude/settings.local.json数字 :
{
"permissions": {
"allow": [
"mcp__descry__code_context",
"mcp__descry__git_context",
"mcp__descry__disclosure",
"mcp__descry__check",
"mcp__descry__reach",
"mcp__descry__similar_incidents",
"mcp__descry__draw_conclusion"
]
}
}
这七只读了。 带有写出或运行动词的工具(workspace, (中文(简体) ), change_scope, (中文(简体) ), qa, (中文(简体) ), generate_test, (中文(简体) ), observe, (中文(简体) ), browser, (中文(简体) ), browser_read, (中文(简体) ), prove_reach, (中文(简体) ), questions, (中文(简体) ), mark_incident)也可以按规则允许,因为他们的第一通电话没有任何变化,而且有人被问到: descry_confirm,允许规则不能跳过。 允许他们也让克洛德代码的分类者停止拒绝无害的一通电话. 允许 mcp__descry__descry_confirm claude Code仍然每通电话都问他.
如果一秒钟之内门铃声响起 就会有人拒绝 寻找一个 Elicitation 钩子( r)grep -n Elicitation ~/.claude/settings.json .claude/settings.local.json),用于 --permission-prompts none,用于非交互式发射。 一个 Elicitation 钩住被子接受会击败该步骤;如果写出一个,只接受一个给一个回转源和只读或沙箱动词取名的信息,然后在没有另作决定的情况下退出. autoMode 设置在 ~/.claude/settings.json 可以用道词描述设置(a) .descry/ 存储和回路dev app。它们不能命名一个工具,只能从用户或管理下的设置读取.
当克洛德代码开始一个新会话到更新的德克瑞时,它自己的工具列表仍然可以显示旧动词. 德克丽宣布 notifications/tools/list_changed 一次在它的工具表面变化后的第一个连接上,这使得客户端能够遵守它重新列出;对于一个保存自己的缓存,重启会话或重新连接服务器的客户端.
已知限制
- Playwright 和其他端到端测试仅通过已执行覆盖连接到代码(
observe动词tests) (中文(简体) ). 测试的静态链接page.goto仅限于精确的文字路径,所以在覆盖运行之前,这样的套房节目是注册的,但没有覆盖任何东西. - 变化镜解答的可靠性类是被接入的边缘上的最低值. 一个宽的diff可以成为C级,因为有少数R0边缘.
- 只有前端寄存器的图中没有 API 路由,所以
check动词contracts在后端寄存器链接到workspace动词link。 。 。 .
隐私
Descry没有主机组件,这个服务器呼唤没有Descry服务. 你记录的图表、证据、调查结果和答案是: .descry/ 在您的存储器中, 而且只有 config.json 这是注定要承诺的。 将确认保存在 ~/.descry/ 和存储的浏览器证书 在那里加密。 浏览器和运行时工具只与您给出的应用程序地址交谈.
许可证
麻省理工学院