关于 licensefile
licensefile 为仓库维护者整理依赖许可证与署名目录。它按 SPDX 许可证分类、标记冲突,并给出是否阻止发布的判定。
主要功能
- 01依赖许可证清单
- 02许可证计数与署名行
- 03Copyleft 与未知许可证标记
- 04阻止或通过判定
- 05本地 JSON 命令行与校验
适用场景
- 01发布仓库前检查依赖
- 02查找未知或冲突的依赖许可证
- 03整理依赖署名记录
MCP 相关
MCP 服务提供 `catalog_licenses` 工具,接收仓库许可证和依赖列表,并返回清单、标记、署名行及判定。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dependencies | array | 是 | 要整理的依赖项(至少一个) |
| repo_license | string | 是 | 代码库自身许可证的 SPDX ID,例如 MIT |
详细介绍
licensefile
仓库只能发布其依赖项许可证所允许的内容。licensefile 获取仓库自身的许可证和依赖项列表,并将它们整理成一份可供采取行动的清单:
- 清单 — 每个依赖项一条记录,按名称排序,
许可证经过规范化处理(去除首尾空白;缺失或为空的
许可证将设为
unknown),缺失的版本、作者或主页 则设为null - 按许可证统计 — 统计使用各规范化许可证的依赖项数量, 按数量降序排列;数量相同时按许可证名称排序
- 署名行 — 按名称顺序为每个依赖项生成一行,
格式为
name@version — license — author;缺失的版本显示为unknown,未提供作者时则完全省略作者部分 - 标记 — 每个依赖项最多生成一个标记,按首个匹配规则确定:
未知许可证会产生警告;许可证为强 copyleft 且其系列
(
GPL与AGPL)与仓库许可证的系列不同时,会产生错误; 使用宽松许可证的仓库中出现弱 copyleft 许可证时,会产生 提示;许可证不属于任何已知类别且不是仓库自身的许可证时, 会报告为未分类 - 结论 — 若任何标记属于错误,则为
blocked, 否则为ok
许可证类别使用规范中精确且区分大小写的 SPDX id:宽松许可证集合 (MIT、ISC、各 BSD 条款、Apache-2.0 等)、强 copyleft 许可证集合 (GPL 和 AGPL 的各种版本),以及弱 copyleft 许可证集合(LGPL 的 各种版本、MPL-2.0、EPL、EUPL-1.2)。所有计算均根据输入在本地完成: 不联网、不需要配置,也不会查询许可证数据库。无效输入——缺失仓库许可证、 依赖项列表为空、依赖项缺少名称、名称重复或字段类型错误——会被拒绝, 并指出出错路径,且不会生成部分清单。
命令行
npx @reneturcios/licensefile catalog --input args.json
npx @reneturcios/licensefile --version
args.json 包含完整的参数对象:
{
"repo_license": "MIT",
"dependencies": [
{ "name": "alpha", "version": "1.0.0", "license": "MIT", "author": "Ann Example" },
{ "name": "beta", "version": "0.2", "license": "LGPL-2.1-only" },
{ "name": "gamma", "license": "GPL-3.0-only" }
]
}
每个依赖项的 version、license、author 和 homepage 均为可选项。清单将以 JSON 格式输出。
退出代码:成功时为 0;发生运行时错误
(包括输入文件无法读取或无效,或输入无效)时为 1;使用错误时为 2。
MCP 服务
npx -y @reneturcios/licensefile mcp
MCP 客户端配置:
{
"mcpServers": {
"licensefile": {
"command": "npx",
"args": ["-y", "@reneturcios/licensefile", "mcp"]
}
}
}
工具
catalog_licenses— 为仓库构建依赖项许可证和 署名清单。repo_license(字符串,必填)— 仓库自身许可证的 SPDX id,例如MITdependencies(数组,必填,至少一项)— 依赖项对象,格式为{name, version?, license?, author?, homepage?};必须提供name,且名称必须唯一
返回 {repo_license, dependency_count, inventory, by_license, flags, attribution_lines, verdict}。
Docker
docker run -i ghcr.io/cloudcorprecords/licensefile
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/licensefile catalog --input /w/args.json
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
许可证
MIT — Copyright (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。