mcpField
L
license-sentinel

license-sentinel

本地服务
github.com/wgd5678法律与政务16 周前更新

关于 license-sentinel

license-sentinel 是面向 AI 编码 Agent 的 MCP 服务,可在发布前审查 Python 和 npm 依赖许可证。它按产品分发方式给出 CLEAN、REVIEW 或 BLOCK 判定,并在本地运行,不上传数据。

主要功能

  1. 01扫描 Python 与 npm 依赖
  2. 02按分发场景判定许可证风险
  3. 03检查指定软件包及许可证字符串
  4. 04生成第三方归属声明文件
  5. 05提供发布前许可证审查提示词

适用场景

  1. 01发布前审计项目依赖许可证
  2. 02安装前检查特定软件包许可证
  3. 03为交付项目生成第三方声明

MCP 相关

它向 MCP 客户端提供项目审计、软件包检查和声明文件生成工具,以及发布前审查提示词。扫描在本地通过 stdio 运行,不进行网络调用。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"wgd5678-license-sentinel": {
"command": "uvx",
"args": [
"license-sentinel"
]
}
}
}
启动命令uvx license-sentinel

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

安装包
pypilicense-sentinel0.1.0

工具

3

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

参数类型必填说明
pathstring否
contextstring否

详细介绍

license-sentinel

wgd5678/license-sentinel MCP server

在发布前审核 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

评论

支持 Markdown

第一次接触 MCP?

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

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