IPs-LE について
IPs-LE は文書から IPv4、IPv6、CIDR ブロック、MAC アドレスを抽出し、アドレスを正規化して範囲を分類します。設定、ログ、プロジェクトファイルを確認する開発者向けです。曖昧な形式は理由とともに報告し、ネットワーク照会は行いません。
主な機能
- 01IPv4、IPv6、CIDR、MACを抽出
- 02IPv6アドレスを正規化
- 03アドレスの範囲を分類
- 04CIDRのネットワークとアドレス数を計算
- 05曖昧な形式と理由を報告
活用シーン
- 01許可リスト内のアドレスを正規化
- 02ログ内の接続元と上流を調査
- 03プロジェクトファイルのアドレスをスキャン
MCP 対応
MCP サーバーは stdio 経由で `extract_ips` を公開し、内容と任意の形式・種類・分類フィルターを受け取ります。ファイルやネットワークにアクセスせず、検出結果と判定保留をデータとして返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| kind | array | いいえ | 指定した種類のみを報告します。拒否結果は常に報告されます。 |
| class | array | いいえ | 指定したクラスのみを報告します。拒否結果は常に報告されます。 |
| format | enum | いいえ | ドキュメント形式。任意です。結果にキー パスを含めるかどうかだけを決定し、検出の可否には影響しません。json | yaml | toml | ini | env | csv | tsv | log |
| content | string | はい | スキャンするドキュメントのテキスト。 |
| filename | string | いいえ | `format` が未指定の場合に形式を推定するためのファイル名。例:"app.yaml" または "access.log"。 |
| maxResults | integer | いいえ | 返される指摘数の上限(デフォルトは 500)。meta.truncated は省略された結果があるかどうかを示します。 |
詳細
IPs-LE:1つのアドレスに、1つの表記
ドキュメント内のすべてのIPアドレス、CIDRブロック、MACアドレスを見つけて、正規化して分類し、曖昧なものは名前を示して拒否します
IPv4 · IPv6(RFC 5952)· CIDR · MAC — DNSも検索もソケットも使いません
役に立ちましたか? 他の開発者に見つけてもらうには、スターや評価が役立ちます — ★ GitHub · ★ Open VSX · ★ Marketplace
できること
許可リストの確認では、2001:0db8::0001 がすでにリストにあるかどうかを調べます。リストには 2001:db8::1 と記載されています。生テキストを差分比較すると、別々の2つのアドレスに見えますが、実際は同じものです。
ドキュメントを開いて IPs-LE: Extract Addresses を実行すると、そこに含まれるすべてのIPv4アドレス、IPv6アドレス、CIDRブロック、MACアドレスが種類別に一覧表示されます。行と列、値が格納されているキー、その正規形式、用途(ループバック、プライベート、リンクローカル、ドキュメント用など)も確認できます。CIDRブロックには、ネットワーク、最終アドレス、含まれるアドレス数が表示されます。レポートはエディターの横に開きます。VS Codeのほか、CursorやVSCodiumなどのVS Codeベースのエディターでも利用できます(Open VSXからインストールできます)。
- 設定ファイルや許可リストを確認する — 各アドレスの表記を統一し、プライベートアドレスにはプライベートであることを明示します
- ログを読む — URL内や
[host]:portの中にあるものも含め、すべてのピアとアップストリームを確認します 010.1.1.1を信頼する前に確認する — 読み取る側によって、異なる2つのホストとして解釈される可能性があります- プロジェクト全体を確認する — アドレスを含むすべてのファイルとその件数を、1つの表にまとめます
一意に解釈できないテキストは、推測せず理由とともに報告されます。 名前解決も検索も書き換えも行いません。
インストール
| 場所 | 得られるもの | インストール |
|---|---|---|
| VS Code | エディター内で、キー操作ひとつで抽出できます | マーケットプレイス |
| Cursor, VSCodium, Windsurf | 同じ拡張機能 | Open VSX |
| ターミナルまたは CI のステップ | 終了コード付きで、ツリー全体を取得できます | cargo install ips-le · crates.io |
| Node を介したターミナル | Rust 版とバイト単位で完全に一致する同じコマンドライン | npx ips-le · npm |
| Node を介した任意の MCP エージェント | 標準入出力経由の extract_ips | npx ips-le-mcp · npm |
解決できること
ひとつのアドレスに、ひとつの形式。 IPv6 は
RFC 5952 に従って正規化されます —
2001:0db8:0000:0000:0000:0000:0000:0001、2001:db8:0:0:0:0:0:1、
2001:0db8::0001、2001:DB8::1 は、すべて 2001:db8::1 として返されます。
元のテキストを並べ替えるとアドレスは4つですが、正規化した形式を並べ替えると
1つになります。
4種類。 ipv4、ipv6、cidr、mac。
10種類のクラス。 定義済みのものに限定されます。名前を付けられないクラスを、 このツールが対象だと主張することはありません。
| クラス | IPv4 | IPv6 |
|---|---|---|
loopback | 127.0.0.0/8 | ::1 |
private | 10/8, 172.16/12, 192.168/16 | — |
link-local | 169.254/16 | fe80::/10 |
cgnat | 100.64/10 | — |
multicast | 224/4 | ff00::/8 |
broadcast | 255.255.255.255 | — (IPv6 にはありません) |
documentation | 192.0.2/24, 198.51.100/24, 203.0.113/24 | 2001:db8::/32 |
unique-local | — | fc00::/7 |
reserved | 0/8, 192.0.0/24, 198.18/15, 240/4 | ::, 2001::/23, 100::/64 |
global | その他すべて | その他すべて |
IPv4 マップ IPv6 アドレスは IPv4 のクラスに分類されるため、::ffff:127.0.0.1
は global ではなく loopback になります。これこそ、許可リストの
レビューで見つけたい見落としです。
場所。 行、列、そしてその値が属するキーを示します。JSON、YAML、
TOML、INI、dotenv、CSV、ログでは、いずれもキーのパスが得られます。
それ以外もスキャン対象です。検索はバイト列全体を対象とするため、.tf、.rules、
ローテーションされた access.log.1 からもアドレスが見つかりますが、キーのパスは得られません。
ブロックと、その計算値。 CIDR の検出結果には prefix、
network、broadcast(IPv4 のみ。IPv6 にはありません)、last、hosts が含まれます。
hosts は10進数の文字列です。::/0 には2^128個のアドレスが含まれ、
これは u128 の最大値をひとつ上回り、JSON の数値で扱える範囲をはるかに超えるためです。
{
"kind": "cidr",
"text": "10.0.0.0/8",
"normalized": "10.0.0.0/8",
"class": "private",
"cidr": {
"prefix": 8,
"network": "10.0.0.0",
"broadcast": "10.255.255.255",
"last": "10.255.255.255",
"hosts": "16777216"
}
}
拒否するケース
テキストを複数の方法で解釈できる場合、ips-leはそのテキストを報告し、曖昧さの内容を示して処理を停止します。
理由は6つあり、いずれも2つの解釈が同じ程度に妥当なケースです。
| reason | fires on |
|---|---|
octal_hazard | 010.1.1.1、0177.0.0.1、192.168.001.1 |
ambiguous_version | 10.0.1、1.2.3 — キーにversionと指定されていない場合 |
integer_form | アドレスを示すキーの下にある2130706433 |
malformed_address | 256.1.1.1、2001:db8:::1、12345::1 |
prefix_out_of_range | 10.0.0.0/33、2001:db8::/129 |
mac_ambiguous | deadbeefcafe |
特に重要なものは次の2つです。
010.1.1.1の解釈は確定しません。 先頭にゼロが付いたオクテットを8進数と解釈するリゾルバーもあれば、10進数と解釈するリゾルバーもあるため、このテキストは異なる2つのホストを指します。どちらの解釈も出力には現れません。片方を選ぶツールでは、バグが隠れてしまいます。2130706433は、フラグの横にある場合にのみデコードされます。 アドレスを示すキーの下では、拒否メッセージに127.0.0.1を含めてinteger_formとして報告されます。フラグが消えた状態で、ループバックアドレスがアドレスのリストにひっそり現れることはありません。
拒否は検出結果であり、失敗ではありません。 終了コードには影響せず、どのフィルターでも隠せません。privateに絞り込んでも8進数の危険性は表示されます。フィルター適用後のレポートから除外された場合に最も問題となる検出結果だからです。未解決の曖昧さがあるとビルドを停止したいパイプライン向けに、--strictが用意されています。
各理由がいつ発生するかは、crate/SPEC.mdに正確に記載されています。
ネットワークには一切アクセスしません
DNS、位置情報、ASN、WHOIS、到達可能性の確認、テレメトリーは一切ありません。フラグで有効にする場合も含め、一度も行いません。分類はビットとIANAレジストリーを使った算術演算で行われます。照会を行うと、監査者が接続しているネットワークによって結果が変わってしまうためです。
ファイルを書き換えることも、判定を下すこともありません。アドレスが「何であるか」だけを示し、そこに存在すべきかどうかは判断しません。
フォルダーまたはワークスペース全体をスキャンする
Extract は、開いているドキュメントを読み取ります。スキャンではディスク上の多数のファイルを読み取り、1 つのレポートにまとめます。
- ワークスペース全体:コマンドパレットから
IPs-LE: Scan Workspace for Addressesを実行します。 - 1 つのフォルダー:エクスプローラーでフォルダーを右クリックして
Scan Folder for Addressesを選ぶか、IPs-LE: Scan Folder for Addressesを実行してフォルダーを選びます。
レポートが開き、対象の情報が含まれるすべてのファイルの表と、ファイルごとのセクションが表示されます。
# IPs-LE workspace report
`my-project` · 113 file(s) read · 2 address(es), 1 could not be read
| File | Addresses | Could not be read |
|---|---|---|
| `deploy/config.json` | 2 | 1 |
## `deploy/config.json` · json (2)
- **3:14** · `2001:0db8:0000:0000:0000:0000:0000:0001` · ipv6 · → `2001:db8::1` · documentation · key `upstream.host`
- **5:12** · `192.0.2.10` · ipv4 · documentation · key `peer`
> 2 file(s) larger than the safety limit were not read.
スキャンで読み取る内容。 ファイルはディスクから読み取るため、保存されていない編集内容は反映されません。安全上のサイズ上限を超えるファイルや、UTF-8 テキストではないファイルは読み取られません。5,000 ファイルまたは一覧表示されたアドレスが 10,000 件に達すると、スキャンは停止します。レポートの末尾には、除外された各項目が記載されるため、短いレポートをプロジェクトに問題がない証拠と誤解することはありません。
スキップされるものと変更方法。 3 つのスイッチはデフォルトでオンになっており、それぞれを設定で個別にオフにできます。
| スイッチ | スキップするもの |
|---|---|
scanUseDefaultExcludes | 依存関係フォルダー、ビルド出力、ツールのキャッシュ、ロックファイル。全一覧は以下にあります |
scanRespectGitignore | プロジェクトの .gitignore ファイルでスキップされるすべてのもの |
scanSkipBinaryFiles | 画像、フォント、アーカイブなどのテキストではないファイル |
スイッチをオフにせずに結果を調整するリストが 2 つあります。さらにスキップするには、scanExcludes にパターンを追加します。スイッチによってスキップされるものを読み取るには、scanAlwaysInclude に追加します。
{
// Also skip the test fixtures.
"ips-le.workspace.scanExcludes": ["**/fixtures/**"],
// Read the vendored code, though the built-in list skips it.
"ips-le.workspace.scanAlwaysInclude": ["**/vendor/**"]
}
IPs-LE: Open Settings を実行すると、これらすべてが設定エディターで開きます。
組み込みのリスト
出現する場所を問わず、対象となるフォルダー:
.git、.hg、.svn、node_modules、bower_components、jspm_packages、.pnpm-store、.yarn、vendor、site-packages、Pods、Carthage、dist、build、out、target、_build、_site、dist-newstyle、zig-out、storybook-static、cdk.out、DerivedData、CMakeFiles、.next、.nuxt、.output、.svelte-kit、.angular、.astro、.docusaurus、.vuepress、.expo、.turbo、.parcel-cache、.cache、.sass-cache、.jekyll-cache、.dart_tool、.pub-cache、.gradle、.kotlin、.cxx、.externalNativeBuild、captures、ephemeral、.symlinks、.swiftpm、.build、.bundle、.stack-work、.zig-cache、.godot、elm-stuff、.vercel、.netlify、.serverless、.aws-sam、.terraform、.venv、venv、__pycache__、.tox、.nox、.mypy_cache、.pytest_cache、.ruff_cache、.ipynb_checkpoints、.eggs、coverage、htmlcov、.nyc_output、.vscode-test、.idea、.vs、xcuserdata、*.egg-info
出現する場所を問わず、対象となるファイル:
*.min.js、*.min.css、*.map、*.snap、*.lock、package-lock.json、pnpm-lock.yaml、npm-shrinkwrap.json、go.sum、*.pbxproj、*.iml、local.properties、output-metadata.json、.flutter-plugins、.flutter-plugins-dependencies、.packages、Generated.xcconfig、flutter_export_environment.sh、GeneratedPluginRegistrant.*、fastlane/report.xml、fastlane/test_output/**、doc/api/**
多くのプロジェクトで一般的なフォルダーであるため、リストに含まれていないもの:bin、obj、tmp、logs、public、generated。これらを生成するプロジェクトでは、Git で無視するよう設定されているため、スキャンでは .gitignore が読み取られます。
読み取れなかったもの。 プロジェクトによっては数が多く、ほかの結果を埋もれさせることがあります。そのため、スキャンでは表にファイルごとの件数を表示し、項目自体は一覧表示しません。ips-le.workspace.scanIncludeRefusals には理由とともに各項目が表示され、ips-le.workspace.scanProblemsEnabled を有効にすると Problems パネルにも表示されます。そこでは各項目をクリックできます。
スキャンに影響する設定は、設定にあります。
位置
各行の先頭には、アドレスの行番号と列番号が表示されます。
- **3:14** · `2001:0db8:0000:0000:0000:0000:0000:0001` · → `2001:db8::1` · documentation · key `upstream.host`
ips-le.showPositions をオフにすると、同じ行は次のようになります。
- `2001:0db8:0000:0000:0000:0000:0000:0001` · → `2001:db8::1` · documentation · key `upstream.host`
それ以外は何も変わりません。行も件数も同じです。クリップボードへのコピーは別の設定 ips-le.clipboardIncludesPositions で指定するため、レポートには位置を表示しつつ、位置を含めずに貼り付けることができます。どちらの設定も、Extract と同様にスキャンに適用されます。
AI エージェントから使用する
同じエンジンがMCPサーバーとしても動作するため、2つの表記が同じアドレスかどうかを目視で判断する代わりに、エージェントから直接呼び出せます。
| エディター | 方法 |
|---|---|
| VS Code 1.101+ | インストール不要 — 拡張機能がエージェントモードに extract_ips を登録します |
| Claude Code | claude mcp add ips-le -- npx -y ips-le-mcp |
| Cursor、Windsurf、その他すべて | npx ips-le-mcp を指定します |
extract_ips(content, format?, filename?, kind?, class?, maxResults?)
エディターに表示される検出結果を、拒否された内容も含めてデータとして返します。デフォルトでは meta.truncated を付けて500件までに制限されます。ファイルの読み込みやネットワークリクエストは行いません。npmでは ips-le-mcp として、MCP レジストリでは io.github.nolindnaidoo/ips-le として公開されています。Rust CLIのサーバーとまったく同じ応答を返します。両方で同じコーパスを実行し、差分テストでは、形式ごとに何千もの生成ドキュメントを両方に入力して、すべての回答を比較します。パーサー自身のエラーメッセージと位置を両方が報告する不正なJSONも対象です。
手動で設定する — MCP設定ファイルがあるすべてのホスト
{
"mcpServers": {
"ips-le": {
"command": "npx",
"args": ["-y", "ips-le-mcp"]
}
}
}
または、npm install -g ips-le-mcp で一度インストールし、ips-le-mcp を指定します。環境変数、APIキー、独自の設定は不要です。動作を確認するには、次を実行します。
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y ips-le-mcp
CLI
同じ抽出処理を、ターミナルまたはCIのステップから、ディレクトリツリー全体に対して実行できます。拡張機能と同じコーパス — crate/fixtures/ — を共有するRust CLIがcrate/にあります。そのため、2つの実装でアドレスの読み取り方が異なることはありません。同じコマンドラインツールはnpmでも ips-le として提供されており、NodeはあるもののRustがないマシンでも使用できます。また、CIでは3つのオペレーティングシステム上で、クレートとバイト単位で一致することを検証しています。
npmからインストール (ips-le) するか、crates.ioからインストール (ips-le) してください。どちらからインストールしても、同じ ips-le コマンドが使えます。
npm install -g ips-le # or run it once: npx ips-le
cargo install ips-le
ips-le . # every address in the tree; one JSON line per file on stdout when piped
ips-le --class private --class loopback . # what should not be reachable
ips-le --kind cidr infra/ # every block, with its arithmetic
ips-le --strict config/ # exit 2 on any ambiguity
ips-le mcp # extract_ips and ips_le_scan over MCP on stdio
終了コードはgrepに準拠します — アドレスが1件以上見つかった場合は0、見つからなかった場合は1、質問の形式が不正な場合は2です。拒否されても終了コードは変わりません。パイプラインで拒否を失敗として扱うには --strict を使用します。
コマンド
| コマンド | 説明 |
|---|---|
IPs-LE: Extract Addresses | アクティブなドキュメント内のすべてのアドレスを抽出します |
IPs-LE: Scan Workspace for Addresses | ワークスペース内のすべてのファイルから抽出します。ファイルごとに1つのセクションが作成されます |
IPs-LE: Scan Folder for Addresses | 1つのフォルダーに対して同じ処理を行います。エクスプローラー内のフォルダーからも実行できます |
IPs-LE: Open Settings | IPs-LEの設定を開きます |
IPs-LE: Help & Troubleshooting | 組み込みドキュメントを開きます |
デフォルトでは、どのコマンドにもキーは割り当てられていません。エディターのキーボードショートカットで、任意のコマンドにキーを割り当ててください。
設定
| 設定 | デフォルト | 説明 |
|---|---|---|
ips-le.kinds | [] | これらの種類のみを報告します。空の場合はすべての種類を報告します。拒否は常に報告されます |
ips-le.classes | [] | これらのクラスのみを報告します。空の場合はすべてのクラスを報告します。拒否は常に報告されます |
ips-le.openResultsSideBySide | true | 現在のエディターの横にレポートを開きます |
ips-le.showPositions | true | 各アドレスの行と列を表示します |
ips-le.copyToClipboardEnabled | false | レポートをクリップボードにもコピーします |
ips-le.clipboardIncludesPositions | true | コピーに行と列を含めます |
ips-le.workspace.scanPatterns | ["**/*"] | フォルダーまたはワークスペースのスキャンで読み込むファイル |
ips-le.workspace.scanUseDefaultExcludes | true | 依存関係フォルダー、ビルド出力、キャッシュ、ロックファイルをスキップします |
ips-le.workspace.scanRespectGitignore | true | プロジェクトの .gitignore ファイルで除外されているものをスキップします |
ips-le.workspace.scanSkipBinaryFiles | true | 画像、フォント、アーカイブなどのテキストではないファイルをスキップします |
ips-le.workspace.scanExcludes | [] | グロブパターンで指定した、追加でスキップするファイル |
ips-le.workspace.scanAlwaysInclude | [] | 上記3つの設定のいずれかでスキップされる場合も読み込むファイル |
ips-le.workspace.scanMaxFiles | 5000 | 1回のスキャンで読み込むファイルの最大数 |
ips-le.workspace.scanMaxResults | 10000 | 読み込みを停止するまでに1回のスキャンで一覧表示するアドレスの最大数 |
ips-le.workspace.scanIncludeRefusals | false | ファイルごとの件数だけでなく、読み込めなかった実行を個別に一覧表示します |
ips-le.workspace.scanProblemsEnabled | false | 読み込めなかった実行も「問題」パネルに表示します |
ips-le.safety.enabled | true | 大きなファイルから抽出する前に警告します |
ips-le.safety.fileSizeWarnBytes | 1000000 | 警告を開始するファイルサイズ |
ips-le.notificationsLevel | silent | all =すべての通知、important =警告+エラー、silent =エラーのみ |
ips-le.statusBar.enabled | true | ステータスバー項目を表示します |
ips-le.telemetryEnabled | false | ローカルのみのイベントログ(プライバシーを参照) |
言語
英語以外に12言語に対応しています。
ドイツ語・スペイン語・フランス語・インドネシア語・イタリア語・日本語・韓国語・ ポルトガル語(ブラジル)・ロシア語・ウクライナ語・ベトナム語・中国語(簡体字)
マニフェスト(コマンドのタイトル、設定名と説明)と、拡張機能の実行中に表示されるすべての内容(通知、ステータスバー、レポートの見出し)の両方に対応しています。拒否の詳細はエンジンによる英語表記で、CLI の内容と同じです。
プライバシーとセキュリティ
- ネットワークアクセスはありません。 拡張機能がデータを外部に送信することはありません。DNS、位置情報の取得、あらゆる種類の照会も行いません。
telemetryEnabled設定は、確認できるローカルの出力チャンネル(IPs-LE)にイベントを書き込むだけです。 - MCP サーバーも同じ方針です。 引数としてコンテンツを受け取り、データを返します。ファイルシステムへのアクセス、ネットワーク呼び出し、テレメトリーはありません。
- エラー通知では、ホームディレクトリと認証情報のような形式の断片が伏せられます。
- 評価の案内は最大2回です。 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/ips-le |
パフォーマンス
| 入力 | サイズ | 検出数 | 時間 | レート | スキャン速度 |
|---|---|---|---|---|---|
| アクセスログ | 3.42 MB | 80,000 | 155.25 ms | 515,312/sec | 22 MB/s |
| JSON 設定 | 2.34 MB | 60,000 | 100.48 ms | 597,123/sec | 23.3 MB/s |
| アドレスを含まない文章 | 2.51 MB | 40,000 | 70.2 ms | 569,780/sec | 35.7 MB/s |
Apple M5 Pro、RAM 24 GB、Node 24.3.0 で、ウォームアップ後に7回実行した中央値です。入力はチェックインされているのではなく、scripts/benchmark.ts によって生成されるため、上記のサイズは実測値と完全に一致します。bun run benchmark で再現できます。
これらの値はマシン固有であり、CI では保証されません — ビルドを妨げるベンチマークが示すのは、ランナーがどれだけビジーだったかにすぎません。
テスト
| 指標 | カバレッジ |
|---|---|
| ステートメント | 76.05% |
| ブランチ | 70.36% |
| 関数 | 78.91% |
| 行 | 77.91% |
18個のファイルにわたる213件のテストケースに加え、実際の VS Code 拡張機能ホストで実行する統合テストスイートと、ビルド済みの .vsix をクリーンなプロファイルにインストールするエンドツーエンドテストがあります。
実際の実行結果である coverage/coverage-summary.json と coverage/test-results.json から scripts/coverage-readme.js によって生成されます。このセクションに差異があると 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 を検出します。双方向制御文字、不可視文字、ホモグリフ、混在スクリプトが対象です
それぞれが独立しています。共有クレートも、公開されたコアもありません。2つのツールが同じ答えにたどり着くとすれば、それはその答えが2度正しかったからです。
お問い合わせ — nolindnaidoo.com · GitHub · LinkedIn
nolindnaidoo によるその他のプロジェクト
Rust — pixelcoords と pixelactions は一連のループを構成します。pixelcoords が 場所 に答え、pixelactions がそこで 操作 します。それぞれ独自のツールと独自の方針を持ち、LE ファミリーには属しません。
- pixelcoords — 画面を固定し、領域を指定して、ピクセル単位で正確な座標と切り抜きを取得します pixelcoords.dev · crates.io · docs.rs
- pixelactions — 人が検証した座標を受け取り、操作を実行して、反映されたことを確認します pixelactions.dev · crates.io · docs.rs
ライセンス
MIT © nolindnaidoo
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。