license-sentinel について
license-sentinelは、AIコーディングエージェント向けにPythonとnpmの依存ライセンスを公開前に監査するMCPサーバーです。配布形態に応じてCLEAN、REVIEW、BLOCKを判定し、ローカルで動作してデータを送信しません。
主な機能
- 01Pythonとnpmの依存関係をスキャン
- 02配布形態に応じてライセンスリスクを判定
- 03指定パッケージやライセンス表記を確認
- 04サードパーティ帰属表示を生成
- 05公開前レビュー用プロンプトを提供
活用シーン
- 01公開前の依存ライセンス監査
- 02インストール前のパッケージ確認
- 03引き渡し用のサードパーティ表示作成
MCP 対応
MCPクライアントにプロジェクト監査、パッケージ確認、表示文書生成のツールと、公開前レビュー用プロンプトを提供します。スキャンはネットワーク通信なしで、stdio経由でローカル実行されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | いいえ | |
| context | string | いいえ |
詳細
license-sentinel
リリース前に Python と npm の依存関係のライセンスを監査して、コンプライアンスを確認できます — AI コーディングエージェント向けの MCP サーバーです。
AI エージェントは、1 秒でプロジェクトに 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 でインストールした場合は、args を指定せずに "command": "license-sentinel" を使用してください。
クライアントを再起動すると、3 つのツールが表示されます。
配布コンテキスト
同じ依存関係でも、コンテキストによって問題ない場合と致命的な場合があるため、すべてのツールで context 引数を指定します:
| コンテキスト | 意味 | ブロック対象 |
|---|---|---|
proprietary(デフォルト) | 配布するクローズドソース製品 | GPL/AGPL/SSPL、BUSL/Elastic、非商用 |
saas-backend | 配布せず、自社サーバー上でのみ実行 | AGPL/SSPL(ネットワーク利用時のトリガー)、BUSL/Elastic |
permissive | 自身のプロジェクトが MIT/Apache/BSD | ライセンス条件を汚染するコピーレフト |
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の依存関係
依存関係が宣言されていてもインストールされていない場合、黙って除外せず、ライセンスを UNKNOWN として報告します。ライセンスが指定されていない依存関係は、デフォルトですべての権利が留保されています。
プライバシー
このパッケージでは、HTTP クライアントを一切インポートしていません。スキャンは読み取り専用です(generate_notices は指定されたファイルを書き込みます)。何もアップロードされません。
制限事項
- 法的助言ではありません。重大なミスをすばやく検出するための一次チェックです。指摘された項目は弁護士に確認してもらってください。
- 推移的依存関係は、インストール済みのものから読み取ります。
.venvとnode_modulesがない場合、宣言されているだけの依存関係はUNKNOWNとして扱われます。 - サーバーを実行している現在の環境はスキャンされないため、サーバー自身のパッケージがレポートに混入することはありません。これを変更するには、
LICENSE_SENTINEL_SCAN_CURRENT_ENV=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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。