关于 license-sentinel
license-sentinel 是面向 AI 编码 Agent 的 MCP 服务,可在发布前审查 Python 和 npm 依赖许可证。它按产品分发方式给出 CLEAN、REVIEW 或 BLOCK 判定,并在本地运行,不上传数据。
主要功能
- 01扫描 Python 与 npm 依赖
- 02按分发场景判定许可证风险
- 03检查指定软件包及许可证字符串
- 04生成第三方归属声明文件
- 05提供发布前许可证审查提示词
适用场景
- 01发布前审计项目依赖许可证
- 02安装前检查特定软件包许可证
- 03为交付项目生成第三方声明
MCP 相关
它向 MCP 客户端提供项目审计、软件包检查和声明文件生成工具,以及发布前审查提示词。扫描在本地通过 stdio 运行,不进行网络调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 否 | |
| context | string | 否 |
详细介绍
license-sentinel
在发布前审核 Python 和 npm 依赖的许可证合规性——面向 AI 编码 Agent 的 MCP 服务。
AI Agent 可以在一秒内将 pdf-renderer 添加到你的项目中,却不会告诉你 pdf-renderer 使用的是 AGPL-3.0 许可证,而在闭源产品中发布它会违反许可证规定。模型无法可靠记住许可证数据和兼容性规则——软件包可能会在不同版本间更改许可证(MongoDB → SSPL、Redis → BUSL、Elasticsearch → Elastic-2.0),而且“源码在 GitHub 上”并不意味着“可以免费发布”。
license-sentinel 会读取磁盘上的实际内容,并根据你分发产品的方式进行判断。
- 一次扫描即可同时检查 Python 和 npm——一次扫描覆盖混合技术栈的两部分。
- 通过 stdio 在本地运行。不进行网络调用、不收集遥测信息,也不会有任何内容离开你的设备。
- 提供判定结果,而非原始数据:
CLEAN/REVIEW/BLOCK,每项都附有通俗易懂的原因说明。
工具
| 工具 | 功能 |
|---|---|
audit_project(path, context) | 扫描项目依赖并返回数量统计,以及每项 BLOCKING 和 REVIEW 条目及其原因。 |
check_package(names, context) | 在安装前检查指定软件包或格式不规范的许可证字符串。接受 AGPL-3.0、BUSL-1.1、GPLv3、Apache License 2.0、MIT OR Apache-2.0。 |
generate_notices(path, output) | 为交付给客户端的项目生成 THIRD-PARTY-NOTICES.md 归属声明文档。 |
此外,还有一个 pre_release_license_review 提示词,可将审核串联成发布与否评审。
安装
# run without installing (recommended)
uvx --from license-sentinel license-sentinel
# or install
uv pip install license-sentinel
# or
pip install license-sentinel
配置客户端
Claude Desktop / Cursor / Windsurf / VS Code Copilot / Zed 都使用相同的配置格式:
{
"mcpServers": {
"license-sentinel": {
"command": "uvx",
"args": ["--from", "license-sentinel", "license-sentinel"]
}
}
}
如果你改用 pip 安装,请使用 "command": "license-sentinel",无需设置 args。
重启客户端后,就会显示这三个工具。
分发场景
同一项依赖在某个场景中可能完全没问题,在另一个场景中却可能造成严重问题,因此每个工具都需要一个 context 参数:
| 场景 | 含义 | 会阻止的许可证 |
|---|---|---|
proprietary(默认) | 你分发的闭源产品 | GPL/AGPL/SSPL、BUSL/Elastic、非商业许可证 |
saas-backend | 从不分发,只在你的服务器上运行 | AGPL/SSPL(网络触发条款)、BUSL/Elastic |
permissive | 你的项目使用 MIT/Apache/BSD 许可证 | 任何可能影响你项目许可证条款的 Copyleft 许可证 |
copyleft-ok | 你自己的项目属于 GPL 系列 | 仅限仅提供源码和非商业许可证 |
扫描内容
- Python:已安装的软件包,包括
.venv//venv//env/中的内容(dist-info/METADATA)、requirements.txt、pyproject.toml(PEP 621、poetry、dependency-groups) - npm:
node_modules/*/package.json(包括带作用域的软件包)、package.json中的 dependencies
如果声明了依赖但尚未安装,系统会将其报告为许可证未知的 UNKNOWN,而不是悄悄忽略——默认情况下,无许可证声明的依赖保留所有权利。
隐私
此软件包不会导入任何 HTTP 客户端。扫描仅执行读取操作(generate_notices 除外,它会写入你指定的文件)。不会上传任何内容。
限制
- 不构成法律建议。这是一个快速初筛工具,可帮助发现代价高昂的问题;请让法律顾问审核所有被标记的项目。
- 根据已安装内容读取传递依赖。如果没有
.venv和node_modules,仅声明但未安装的依赖会被标记为UNKNOWN。 - 不会扫描运行 MCP 服务的当前环境,因此该服务自身的软件包不会影响报告。将
LICENSE_SENTINEL_SCAN_CURRENT_ENV=1设为1可更改此行为。
开发
uv sync
python tests/smoke_test.py # 9 tests, no pytest needed
python tests/e2e_check.py # calls the tools end to end
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。