mcpField
N
Numbers-LE

Numbers-LE

本地服务
letools.dev开发工具1今天更新

关于 Numbers-LE

Numbers-LE 为开发者从配置、数据文件和文本中提取数字,便于检查数值与代码常量。它识别多种结构化格式及编程语言字面量,并提供编辑器、命令行和 MCP 服务接口。

主要功能

  1. 01提取结构化文件和代码中的数字
  2. 02识别 12 种编程语言的数字字面量
  3. 03在可用时提供记法和精确位置
  4. 04对提取结果去重和排序

适用场景

  1. 01检查配置或测试夹具中的数值范围
  2. 02比较多个配置文件中的端口和限制
  3. 03查找代码库中变更的常量

MCP 相关

MCP 服务通过 stdio 提供 `extract_numbers` 工具。它接收内容并返回提取结果,不读取文件,也不发起网络请求。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"nolindnaidoo-numbers-le": {
"command": "npx",
"args": [
"-y",
"numbers-le-mcp"
]
}
}
}
启动命令npx -y numbers-le-mcp

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

安装包
npmnumbers-le-mcp2.8.0

工具

1

收录的工具列表 · 更新于 3 天前

参数类型必填说明
dedupeboolean否将重复值合并,仅保留首次出现的值。
formatenum否文档格式。可选;格式无法识别或未指定时,直接扫描文本。json | jsonc | yaml | csv | tsv | toml | ini | env | python | rust | go | java | kotlin | csharp | cpp | c | javascript | typescript | sql | shellscript
contentstring是要扫描的文档文本。
filenamestring否用于在 `format` 未指定时推断格式的文件名,例如 "config.toml"。
maxResultsinteger否返回数字数量上限(默认值为 500)。meta.truncated 报告是否有结果被丢弃。

详细介绍

Numbers-LE 标志

Numbers-LE:轻松提取数字

按一下键,即可提取当前文件中的所有数字
JSON/JSONC、YAML、CSV/TSV、TOML、INI、环境文件,以及十二种源代码语言

从 VS Code Marketplace 安装 Open VSX 下载量 npm 上的 numbers-le-mcp npm 上的 numbers-le crates.io 上的 numbers-le LE Tools


VS Code 中的 Numbers-LE

觉得有用? 点赞或评分能让其他开发者发现它 — ★ GitHub · ★ Open VSX · ★ Marketplace

功能

打开文件,运行 Numbers-LE: Extract Numbers,文档中的所有数值都会出现在新的编辑器中 — 然后可在其中去重和排序。可在 VS Code 以及基于 VS Code 的编辑器(如 Cursor 和 VSCodium)中使用(可从 Open VSX 安装)。

  • 数据校验 — 提取配置文件或测试数据中的数字,一眼查看数值范围
  • 配置审计 — 比较 INI/TOML/.env 文件中的端口、阈值和限制
  • CSV 处理 — 提取全部内容、单列或多列,并分别放入不同文档

安装

渠道可获得内容安装
VS Code在编辑器中按一下键即可完成相同的提取操作Marketplace
Cursor、VSCodium、Windsurf相同的扩展Open VSX
终端或 CI 步骤对整个目录树执行相同操作,并返回退出码npx numbers-le · npm 或 cargo install numbers-le · crates.io
任意 MCP Agent,通过 Node 使用通过 stdio 调用 extract_numbersnpx numbers-le-mcp · npm

在 AI Agent 中使用

相同的引擎也以 MCP 服务的形式运行,因此 Agent 可以直接调用它,无需你运行命令。

编辑器使用方式
VS Code 1.101+无需安装任何内容——扩展会在 Agent 模式下注册 extract_numbers
Claude Codeclaude mcp add numbers-le -- npx -y numbers-le-mcp
Cursor、Windsurf 和其他工具将其指向 npx numbers-le-mcp

Claude Code 中的 Agent 调用 numbers-le MCP 服务

extract_numbers(content, format?, filename?, dedupe?, maxResults?)

按文档中的顺序返回数值,每个数值都附带其书写时使用的表示法;对于 JSON、源代码和纯文本,若位置精确,还会附带从 1 开始计数的行号和列号;已解析的格式(YAML、TOML、CSV、INI、dotenv)不提供位置,而不是猜测位置。默认最多返回 500 个,并通过 meta.truncated 标记是否截断。格式为可选项——无法识别的内容会按纯文本扫描,而不会被拒绝。

服务接收内容并返回数据——它不会读取文件,也不会自行发出网络请求。此项目已作为 numbers-le-mcp 发布到 npm,并以 io.github.nolindnaidoo/numbers-le 的名称收录在 MCP registry 中。

手动配置 — 任何带有 MCP 配置文件的宿主

大多数宿主都会读取 JSON 配置。添加一条配置:

{
  "mcpServers": {
    "numbers-le": {
      "command": "npx",
      "args": ["-y", "numbers-le-mcp"]
    }
  }
}

-y 会跳过首次运行时的安装提示。如果不想跟踪版本发布,可以固定版本——[email protected]。

不想每次启动都通过 npx?可以安装一次,然后指向二进制文件:

npm install -g numbers-le-mcp
{
  "mcpServers": {
    "numbers-le": { "command": "numbers-le-mcp" }
  }
}

它通过 stdio 使用 MCP 通信,无需环境变量、API 密钥或自身配置。在将它接入其他内容之前,可以先进行检查:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y numbers-le-mcp

这会输出工具列表并退出——如果看到 extract_numbers,就说明服务可以正常运行。

支持的格式

格式数字的判定方式
JSON结构中任意位置的数值。带引号的数字("42")是字符串,不是数值,因此永远不会被提取
YAML数值,包括十六进制/八进制整数形式和指数形式;多文档(---)流会提取每个文档中的数值
TOML整数和浮点数(日期不属于数字)
CSV整个单元格内容都是数值的单元格——19.99 会被识别,12abc 和 1,000 则不会。不推断表头:每一行都是数据
INI整个值的内容都是数值的项(INI 的值本质上都是字符串)
Environment整个值的内容都是数值的项(PORT=3000 会得到 3000;VERSION=1.2.3 不会得到任何结果)

统一策略(一个启发式模块应用于所有格式):只提取有限数值——结果中不会出现 NaN、inf/.inf;强制转换的字符串必须全部为数值:可带正负号、小数点和指数的普通十进制数。

Python、Rust、Go、Java、Kotlin、C#、C、C++、JavaScript、TypeScript、SQL 和 shell 会由数字字面量提取器读取。它能识别十六进制 0xFF、二进制 0b1010、八进制 0o755 和旧式八进制 0755、数字分隔符 1_000_000 和 1'000,以及后缀 123n、1.5f、10u32、100L——并且知道 u32 是类型名,不是数字 32。不同方言会导致结果不同:在 C、C++、Go 和 Java 中,0755 是 493;在 Rust、Python 3、Kotlin 和 C# 中则是 755。

每个提取结果都会附带其书写时使用的表示法——decimal、hex、binary、octal、scientific、bigint。对于剩余内容,你可以明确指定格式,也可以回退到纯文本扫描(不使用语法:v1.2.3 会被识别为 1.2 和 0.3)。

CLI

相同的提取功能也可通过终端或 Shell 管道运行:Rust CLI 位于 crate/,并与扩展共用一份语料库 —— crate/fixtures/ —— 因此两者读取文档的方式绝不会不同。可通过 npm 安装:npm install -g numbers-le( 或通过 npx numbers-le 运行),也可通过 crates.io 安装: cargo install numbers-le。两种方式安装的是同一条命令,除了解析器拒绝损坏文档时使用的措辞不同外,输出逐字节保持一致。

numbers-le .                     # every number in the tree; JSON on stdout when piped
numbers-le --values config/      # just the numbers, one per line
numbers-le mcp                   # the same extraction over MCP on stdio

# the point of the whole thing:
numbers-le --values --dedupe src/ | sort -n > after.txt
diff before.txt after.txt        # what constants moved this release

终端中的 numbers-le

可从 npm 安装 (numbers-le) 或从 crates.io 安装 (numbers-le)。两种方式安装的都是同一条 numbers-le 命令。

npm 上的 numbers-le crates.io 上的 numbers-le

npm install -g numbers-le   # or run it once: npx numbers-le
cargo install numbers-le

总得有人核实代码中的比率是否与规范一致。 税率、数据保留期限、舍入边界。在受监管的环境中,这项核查是一项交付成果,而负责核查的人通常没有代码库副本,也从未打开过编辑器。

数字的输出格式与 JavaScript 完全一致 — 1e+21,而不是 Rust 的 1000000000000000000000。这个工具的全部输出都是文本形式的数字,因此呈现格式就是契约,而语料库会固定这一点。

退出码遵循 grep 的惯例 — 找到数字时为 0,未找到时为 1,问题格式错误时为 2。

命令

命令描述
Numbers-LE: Extract Numbers从当前文档中提取所有数字
Numbers-LE: Deduplicate Numbers删除结果中的重复数字
Numbers-LE: Sort Numbers按数值或数量级对结果排序
Numbers-LE: Open Settings打开 Numbers-LE 设置
Numbers-LE: Help & Troubleshooting内置文档

默认情况下没有命令绑定快捷键。可在编辑器的 键盘快捷键 中为任意命令设置快捷键。

设置

设置项默认值描述
numbers-le.openResultsSideBySidetrue在当前编辑器旁打开结果
numbers-le.postProcess.openInNewFiletrue去重/排序结果写入新文件,而不是替换编辑器内容
numbers-le.showPositionsfalse显示每个数字所在的行和列
numbers-le.copyToClipboardEnabledfalse同时将结果复制到剪贴板(非 CSV)
numbers-le.clipboardIncludesPositionsfalse在复制内容中包含行和列
numbers-le.dedupeEnabledfalse提取时自动去重
numbers-le.sortEnabledfalse提取时自动排序
numbers-le.sortModeoffnumeric-asc/desc、magnitude-asc/desc
numbers-le.showParseErrorsfalse以通知形式显示解析错误
numbers-le.notificationsLevelsilentall = 所有通知,important = 警告 + 错误,silent = 仅错误
numbers-le.safety.enabledtrue为超大文件/输出提供保护机制
numbers-le.safety.fileSizeWarnBytes1000000文件超过此大小时发出警告
numbers-le.safety.largeOutputLinesThreshold50000结果数量超过此阈值时,提供打开/复制/取消选项
numbers-le.safety.manyDocumentsThreshold8打开此数量的列文档前进行确认
numbers-le.statusBar.enabledtrue显示状态栏项目
numbers-le.telemetryEnabledfalse仅本地事件日志(参见隐私)

语言

除英语外,支持 12 种语言:

德语 · 西班牙语 · 法语 · 印度尼西亚语 · 意大利语 · 日语 · 韩语 · 葡萄牙语(巴西) · 俄语 · 乌克兰语 · 越南语 · 中文(简体)

两部分内容均已覆盖:清单(命令标题、设置名称和说明),以及扩展运行期间显示的所有内容(通知、状态栏、快速选择和提示词)。扩展会遵循 VS Code 的显示语言,因此会与编辑器当前设置的语言一致;无需单独设置。

隐私与安全

  • 不访问网络。 扩展绝不会向任何地方发送数据。telemetryEnabled 设置只会将事件写入本地输出通道,供你检查(Numbers-LE)。
  • MCP 服务同样遵守这一原则。 它接收内容作为参数并返回数据:不访问文件系统、不进行网络调用、不收集遥测数据。你的 Agent 已有文件读取工具,因此在服务中重复实现这些工具只会增加路径遍历攻击面,并不会增加任何能力。若服务导入了任何可能访问上述两者的内容,check:mcp-bundle 就会使构建失败。
  • 错误通知会隐藏主目录和类似凭据的片段。
  • 评分提示最多出现两次。 第 3 次成功使用时,扩展会询问你是否愿意评分;如果你选择了 稍后 或关闭提示,则会在第 20 次使用时再询问一次。选择 不再询问 后便不会再显示。自行将 notificationsLevel 设置为 important 或 silent 也会关闭提示。计数保存在 VS Code 的扩展存储中,不会向任何地方发送数据;点击 评分 会在浏览器中打开你安装扩展的平台页面,即 VS Code Marketplace 或 Open VSX。

文档

内容位置
工具可以说什么——范围、输出约定、拒绝事项、非目标crate/SPEC.md
扩展如何构建和运作——架构、不变量、工具链、发布AGENTS.md
CLI 如何构建和运作crate/AGENTS.md
变更内容CHANGELOG.md · crate/CHANGELOG.md
工具页面,以及其他 15 个工具letools.dev/tools/numbers-le

性能

输入大小找到数量耗时速率扫描速度
JSON 指标2.18 MB120,00069.12 ms1,736,013/sec31.6 MB/s
CSV 数据0.93 MB150,00088.02 ms1,704,098/sec10.6 MB/s
INI 配置0.42 MB30,00023.01 ms1,303,868/sec18 MB/s

在 Apple M5 Pro、24 GB RAM、Node 24.3.0 上预热后运行 7 次所得的中位数。输入由 scripts/benchmark.ts 生成,而非纳入版本控制,因此上面的大小就是实际测量值。运行 bun run benchmark 可重现测试。

这些数据因机器而异,不会在 CI 中作为断言——用基准测试来阻止构建,只能说明运行器当时有多忙。

测试

指标覆盖率
语句81.24%
分支72.38%
函数89.20%
行82.72%

共有 37 个文件中的 525 个测试用例,此外还有一个在真实 VS Code 扩展宿主中运行的集成测试套件,以及一个将构建好的 .vsix 安装到干净配置文件中的端到端测试。

数据由 scripts/coverage-readme.js 根据实际运行生成,来源为 coverage/coverage-summary.json 和 coverage/test-results.json;如果此部分内容发生偏差,CI 会失败。运行 bun run test:coverage 可重现测试;用例数以 vitest 输出为准。

LE 系列的更多工具

为每个模型眼前的工作打造的 16 款单一用途工具。每款都附带一个 Rust CLI 和一个 MCP 服务。一页尽览:letools.dev

提取

  • String-LE — 提取代码库中的所有字符串,方便人工阅读
  • Numbers-LE — 提取代码库中所有硬编码数字,方便人工检查
  • Units-LE — 提取所有带单位的数量并统一格式,遇到含义不明确的数量时会按名称拒绝处理
  • Dates-LE — 提取所有日期和时间戳,并给出每个日期和时间戳解析出的确切时刻
  • IDs-LE — 提取所有 UUID、ULID、NanoID、ObjectId 和 Snowflake,并解码其中的时间
  • IPs-LE — 提取所有 IP 地址、CIDR 网段和 MAC 地址,统一格式并按范围分类
  • URLs-LE — 提取代码库中的所有 URL,并给出协议和确切位置
  • Paths-LE — 提取代码库中的所有文件路径,并说明它们是否仍指向实际内容
  • Colors-LE — 提取代码库中的所有颜色,并指出哪些颜色不在你的调色板中

检查

  • Regex-LE — 查找代码库中的所有正则表达式,并报告哪些可能导致灾难性回溯
  • Versions-LE — 查找某个依赖项在仓库的各个清单文件中受到不同约束的位置
  • i18n-LE — 识别项目使用的 i18n 库,然后依据该库的规则审查其目录
  • Scrape-LE — 在编写抓取器之前检查网页能否抓取,并说明何时无法判断

防护

  • Secrets-LE — 查找代码库中的硬编码凭据,绝不在报告中打印凭据
  • EnvSync-LE — 比较目录树中的 dotenv 文件,并指出哪些文件缺少哪些键
  • Unicode-LE — 查找那些隐藏含义的 Unicode 字符——双向控制字符、不可见字符、同形异义字符、混合文字系统

每款工具都独立运行:没有共享的 crate,也没有发布的核心库。若有两款工具得出相同结论,那是因为这个答案经得起两次验证。

联系 — nolindnaidoo.com · GitHub · LinkedIn

nolindnaidoo 的其他项目

Rust — pixelcoords 和 pixelactions 构成一个工作循环:pixelcoords 回答 位置,pixelactions 在那里执行操作。它们有各自的工具、各自的风格——不属于 LE 系列。

许可证

MIT © nolindnaidoo

评论

支持 Markdown

第一次接触 MCP?

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

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