mcpField
L
lens-mcp

lens-mcp

本地服务
github.com/mrhpythonAI 与智能体01 周前更新

关于 lens-mcp

lens-mcp 将 Soulfield Lens 的独立模型验证门接入 Claude Code、Cursor 等 MCP 客户端,供需要检查 AI 生成文本的团队使用。它只验证而不生成内容,并以 fail-closed 方式处理不确定结果;本地验证器工具还可检查文件及跨文件一致性。

主要功能

  1. 01独立模型验证生成文本
  2. 02不确定结果返回 UNKNOWN
  3. 03PII 与密钥模式扫描
  4. 04本地文件及一致性检查
  5. 05异步处理长文本任务
  6. 06记录缺陷并统计复现情况

适用场景

  1. 01发布前检查 AI 生成的客户文案
  2. 02查找输出中的结构化 PII 和密钥
  3. 03核对摘要数字及证据标记
  4. 04通过本地证据检查辅助内容验证

MCP 相关

MCP 服务向客户端提供文本验证、PII 扫描和健康检查工具;配置 lens-kit 后还可用本地验证工具。较长输入可通过异步提交与收据工具完成验证。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"mrhpython-lens": {
"command": "npx",
"args": [
"-y",
"@soulfield/lens-mcp"
],
"env": {
"SOULFIELD_API_BASE": "<SOULFIELD_API_BASE>",
"SOULFIELD_API_KEY": "<SOULFIELD_API_KEY>"
}
}
}
}
启动命令npx -y @soulfield/lens-mcp
需要配置的环境变量
SOULFIELD_API_BASELens API base URL. Use https://api.soulfield.one for the hosted service.
SOULFIELD_API_KEY密钥API key for validate_content and scrub_pii. Get one free, self-serve, no card, at https://api.soulfield.one/pricing#signup. lens_health needs no key.

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

安装包
npm@soulfield/lens-mcp1.1.1

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
textstring是要验证的 AI 生成内容
domainenum否用于验证的领域上下文(默认:general)general | finance | marketing | legal | seo | agency
contextstring否用于相关性视角(视角 9)的受众/目的上下文。省略则静默跳过相关性检查。

详细介绍

Soulfield Lens — MCP 服务

长时间运行的作业可以先调用 validation_submit,再通过新的 MCP 连接调用 validation_receipt。在本地保存返回的作业 ID 和候选内容的 SHA-256。轮询超时后,使用该 ID 获取结果;不要再次提交内容。待处理、失败、过期和不完整的作业均不授予通过资格。若提交结果不确定且未返回 ID,不得自动重试。现有的 validate_content 工具保持不变。离线恢复和 Rights 保留测试样例见 test/validation-jobs.test.cjs。

通过 MCP 工具对 AI 生成的文本进行由外向内的验证。

每个 AI 工具都会询问写出答案的同一个模型,答案是否有用。它会说有用。Soulfield Lens 则采用由外向内的方式:由独立模型通过固定关卡检查你的输出。它检查文本,而不会撰写文本。此软件包可将该关卡集成到 Claude Code、Cursor 及其他兼容 MCP 的 Agent 中,从而在生成输出的过程中对其进行验证。

该关卡采用失败即关闭策略:边界情况会返回 UNKNOWN,不会悄然放行。由于没有生成步骤,它无法编造自己的说法,只能进行检查。但它仍可能误判;这正是边界情况返回 UNKNOWN,而不是自信地给出肯定答复的原因。

这是围绕托管 Lens API(api.soulfield.one)建立的本地 stdio 边界。它会将对代码库的访问保留在调用方的机器上,只向 API 关卡发送完成的文本内容。

它提供两个层级。关卡层级(3 个工具)只需 API 密钥。验证器层级(7 个工具)增加了一个本地编排入口,以及可选的 lens-kit 跨文件检查和缺陷记忆功能,后两者无法由单文档关卡完成。跳过本地证据输入,关卡层级仍会像以往一样正常工作。

安装前先试用

免密演示端点运行相同的关卡——每个 IP 每天可运行几次,无需注册:

curl -s https://api.soulfield.one/v1/demo \
  -H 'content-type: application/json' \
  -d '{"text": "<paste the AI output you are about to ship>"}'

安装

npm install -g @soulfield/lens-mcp

也可以不安装直接运行:npx @soulfield/lens-mcp。

Claude Code
claude mcp add soulfield-lens \
  -e SOULFIELD_API_BASE=https://api.soulfield.one \
  -e SOULFIELD_API_KEY=<your-key> \
  -- npx @soulfield/lens-mcp
任意 MCP 客户端(JSON 配置)
{
  "mcpServers": {
    "soulfield-lens": {
      "command": "npx",
      "args": ["@soulfield/lens-mcp"],
      "env": {
        "SOULFIELD_API_BASE": "https://api.soulfield.one",
        "SOULFIELD_API_KEY": "<your-key>"
      }
    }
  }
}

生产环境调用需要 API 密钥——请通过 [email protected] 申请。lens_health 无需密钥即可使用。

工具

关卡层级 — 托管 API,开箱即用
工具功能身份验证
validate_content对文本运行由外向内的关卡。返回通过/失败状态、评分、各维度结果,以及附带推理说明的违规详情。可选参数 domain(general、finance、marketing、legal、seo、agency)和 context(受众/目的)。需要密钥
scrub_pii在服务器端扫描结构化 PII 和机密信息,包括电子邮件、英国/美国电话号码、信用卡号、美国 SSN、英国 NI/UTR 号码、数据库连接字符串,以及常见的 API 密钥/凭据模式。返回清理后的文本(将每个匹配项替换为类型标记)以及发现项。基于模式,不调用大模型。目标是结构化标识符;不会检测个人姓名或自由格式 PII,对结构化格式的覆盖尽力而为,并非穷尽。需要密钥
lens_health检查 Lens API 是否正常运行。返回状态和版本。无
验证器层级 — 本地运行;一致性检查需要 lens-kit

**版本说明:**验证器层级将在 1.1.0 中推出。如果 npm view @soulfield/lens-mcp version 仍报告 1.0.0,说明注册表尚未同步到此代码库;此时运行 npx @soulfield/lens-mcp 只能获得关卡层级的三个工具。期间请从源代码安装。

内容编排:validate_artifact 将在 1.2.0 中推出。其有限范围的本地证据搜索已内置于此 MCP 软件包。请求的一致性检查仍需要 lens-kit。 值得了解的副作用: 每次调用验证器层工具,都会在其工作目录中的 RUNS.md 追加一行——这是工具包有意设计的运行记录。该目录由 cwd 参数指定;如果省略,则使用服务自身的 cwd,因此如果你在意记录保存的位置,请明确传入 cwd。敏感标志值会在记录中脱敏(--deny <redacted>),因此拒绝词条不会落盘。

前置条件: 执行 pip install lens_kit(Apache-2.0,github.com/mrhpython/lens-kit),或将 LENS_KIT_BIN 设为其路径。若未安装,这六个工具会返回 UNKNOWN 并附带错误——绝不会静默通过。无需 API 密钥:它们在本地运行,且不会调用大模型。

为什么它们在本地运行,而不运行于托管 API: 它们会读取你磁盘上的文件路径。若托管端点接受任意本地路径,那将是文件泄露途径,而非一项功能。使用 stdio 时,路径属于你自己的计算机,因此此功能仅在这里才安全——也正因如此,它不会加入托管 API。

工具功能退出语义
validate_artifact读取一个本地制品,仅在明确许可的证据根目录中搜索,运行所请求的一致性检查,并且只将制品文本发送到 API 审核关口。它会将结果标记为 gate-only 或 evidence-preflight+gate。字面匹配只能表明来源位置,并非证明;在给出完整验证器裁定前,必须由另一个验证器 Agent 阅读并判定。一致性违规 → FAIL;证据不完整/检查出错 → UNKNOWN;否则 → PENDING_AGENT_REVIEW
lens_consistency_leaks扫描文件,查找拒绝列表词条(不区分大小写的字面匹配)。在不可逆发布前,对每个面向客户的文件运行此工具:可捕获残留在待发布文案中的真实客户名称、内部代号或禁用绝对路径。凭据扫描器不会找到这些内容,因为这里没有任何凭据。不识别否定语境: 为了声明不使用某个禁用短语而引用它,与直接断言该短语完全相同,都会匹配。命中可证明该字符串存在——请据此判定结论
lens_consistency_numbers检查摘要中的每个数字字面量是否确实出现在它所概述的正文中。可捕获凭空捏造的数字。注意事项: 仅进行字面匹配,不做推导计算;而被标记为已被取代的数字(“取代约 471 的估算值”)也会像过时数字一样触发标记。请审核,不要自动信任。违规/无异常
lens_consistency_markers检查来源中的证据标记是否保留在每种渲染输出中——防止格式转换时丢失限定说明或引用。与上面的 leaks 不同,此工具区分大小写:TRIPWIRE 不会匹配 Tripwire,若没有内容被删除,也会被判定为已删除。注意事项: 有意进行的子集渲染也会导致标记计数偏少。违规/无异常
选择拒绝词和标记。 这三项是警报线索,不是裁判——在对本项目自身副本进行实时运行时,它们触发了六次标记,但没有发现真正的缺陷,且涉及三种不同的误报类型(否定、已被取代的数字、大小写)。这是预期的行为,也正因如此,原则是裁定,绝不自动应用。拒绝词最好是无论在何种上下文中都不正确的字符串——例如真实的客户端名称、内部代号——而不是你不会提出的主张,因为这些主张可能会合理地出现在免责声明中。标记最好在源文件和渲染结果中的大小写保持一致时使用。
lens_catches_relevant在验证前读取缺陷库:针对某种制品类型的既往具名缺陷,并按出现频率从高到低排列。达到阈值的模式会标记为 [PROMOTE]——它们重复出现得足够频繁,值得设为固定检查项。—
lens_catches_add记录具名缺陷,以便下次捕获:错误所在、通用模式、后续规则。按设计会拒绝常规检查——只记录真正的缺陷。—
lens_catches_stats按模式统计重复次数,并提供晋级建议。告诉你下一步该强化什么。—

这两个层级互为补充,而非二选一。门禁没有工具,也无法访问文件——这正是它能独立检查的原因,也正因如此,它无法发现分散在两个文件中的矛盾。验证器层级可以查看磁盘;门禁负责评分。两者应配合使用:用本地工具收集基础证据,将文本交给门禁,并且绝不要把门禁的 FAIL 争辩成 PASS。完整协议:docs/VALIDATOR-AGENT.md。

一个本地入口

validate_artifact 通过一次调用明确划定边界:

{
  "artifact_path": "output/candidate.md",
  "evidence_roots": ["reports", "output/proof"],
  "evidence_queries": [
    {
      "claim": "measured-result",
      "query": "113/113 rows scored",
      "case_sensitive": true
    }
  ],
  "domain": "agency",
  "context": "Internal technical handoff"
}

响应包含 evidence_scope、files_read、searches_and_commands、claims_verified 和 claims_unverified。claims_verified 按设计为空:grep 只能证明文本存在于某个源文件位置,不能证明该主张属实。独立的验证器 Agent 必须阅读定位到的证据,对照多个文件进行推理,并附上最终的完整验证收据。

证据文件内容和本地绝对路径绝不会添加到 API 请求中。目录搜索会跳过 .git、node_modules、符号链接和二进制文件;超出配置的安全限制时则会安全失败。

每次运行你能获得什么: 收据——检查了什么、通过了什么、暂缓了什么,以及原因。它是机器可读的,不是徽章。我们不会为你的数据提供保证准确率:评分无法在不同模型、数据集和运行时之间通用;如果某个工具声称能在从未见过的数据上达到固定指标,那它所作的正是这个门禁旨在捕捉的主张。

长输入

长度约为 4,000 个字符及以上的输入会作为异步任务提交,并自动轮询直至完成,因此单次长内容验证不会因请求超时而中断。短输入则使用快速同步路径。无需配置。

配置(环境变量)

变量默认值用途
SOULFIELD_API_BASEhttp://localhost:8002Lens API 基础 URL。托管服务请使用 https://api.soulfield.one,也可以使用你自己的部署。
SOULFIELD_API_KEY—validate_content 和 scrub_pii 必需。
SOULFIELD_VALIDATE_TIMEOUT_MS180000同步路径的单次请求超时时间。
SOULFIELD_VALIDATE_BUDGET_MS600000异步轮询循环的总墙钟时间预算。
SOULFIELD_ASYNC_MIN_CHARS4000启用异步路径的输入长度阈值。
LENS_KIT_BINlens-kit验证器层级使用的 lens-kit CLI 路径。仅当它不在 PATH 中时才需要设置。
LENS_KIT_TIMEOUT_MS120000验证器层级命令的超时时间。超时后判定为 UNKNOWN,绝不会判定为通过。

产品的其他部分

这个封装是基于同一引擎的多个入口之一:

  • 免费单项输出审计 — api.soulfield.one/audit。审计功能就是演示。
  • 接入使用(SDK 停止钩子和中间件)— api.soulfield.one/developers。
  • 拥有它 — 工具包:透镜、编译器、自我改进循环、验证器 Agent,采用 Apache-2.0 许可证。使用你自己的数据训练它。公共仓库:github.com/mrhpython/lens-kit — 克隆仓库,运行 pip install -e ".[dev]",测试套件即可离线运行,无需密钥。安装它也会启用上文所述的验证器层级。

我们用这个软件包提供的同一套标准审核自己的营销文案。

许可证

MIT — 详见 LICENSE。(lens-kit 产品采用单独的 Apache-2.0 许可证。)

评论

支持 Markdown

第一次接触 MCP?

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

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