env-secret-exposure-analyzer-mcp について
プロジェクト内のファイルやコードに含まれる秘密情報を検出する、開発者向けの MCP サーバーです。ハードコードされた認証情報、.gitignore の対象漏れ、実行時のログへの出力を調べ、値全体ではなくマスク済みのプレビューを返します。
主な機能
- 0120 種類以上の秘密パターンを検査
- 02機密ファイルの .gitignore 対象を確認
- 03ログに出力される認証情報を検出
- 04重大度とマスク済みプレビューを報告
活用シーン
- 01AI エージェントにプロジェクトを読ませる前の監査
- 02プロジェクトファイルのコミット前の秘密情報確認
- 03認証情報を出力するデバッグログの特定
MCP 対応
MCP クライアントに、秘密情報のスキャン、.gitignore の対象確認、ログ漏えい検査の 3 つのツールを提供します。結果にはファイルパス、行番号、重大度、マスク済みプレビューが含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| extensions | array | いいえ | スキャンするファイル拡張子。例:[".ts",".js",".env"]。デフォルトでは一般的なソースファイルをスキャンします。 |
| projectPath | string | はい | スキャン対象のプロジェクトルートの絶対パス。例:/project |
詳細
🔐 env-secret-exposure-analyzer-mcp
AI エージェントがデバッグセッションを行えば、あなたのシークレットが漏洩する可能性があります。
プロジェクト内のシークレット漏洩リスク(ハードコードされた API キー、保護されていない .env ファイル、実行時に認証情報を出力する console.log 呼び出し)をスキャンする MCP サーバーです。エージェントが誤ってそれらを読み上げてしまう前に検出します。
🤔 問題点
AI エージェントに設定の問題をデバッグするよう依頼します。エージェントは src/config.ts を読み込みます。その中には次のような記述があります。
console.log('Config loaded:', JSON.stringify(config));
console.log(process.env.DATABASE_PASSWORD);
これで、エージェントのコンテキストにはデータベースのパスワードが含まれてしまいました。エージェントがそれをログに記録したり、要約に含めたり、別のツールに渡したりする可能性があります。さらに .env が .gitignore に含まれていないため、次の git push で残りの情報も漏洩します。
こうした事態が起きるのに、エージェントに悪意がある必要はありません。役に立とうとするだけで十分です。
env-secret-exposure-analyzer-mcp は、こうした事態を未然に防ぎます。🔐
🛠️ ツール
scan_for_secrets
ソースファイル、設定ファイル、.env ファイルをスキャンし、20 種類以上のシークレットパターンを検出します。ファイルパス、行番号、重大度、マスク済みのプレビューを返します。値全体が表示されることはありません。
検出対象:
- AWS アクセスキーとシークレットキー
- GitHub トークン(
ghp_、gho_、ghs_) - Stripe シークレットキー/公開可能キーと Webhook シークレット(
whsec_) - Anthropic、OpenAI の API キー
- SendGrid(
SG.xxx)、Twilio の認証トークンとアカウント SID - Google API キーと OAuth クライアントシークレット(
GOCSPX-) - Slack トークン(
xox*) - 秘密鍵(
-----BEGIN ... PRIVATE KEY-----) - 認証情報が埋め込まれたデータベース URL(
postgres://user:pass@host) - JWT シークレット、セッションシークレット、暗号化キー
- Sentry DSN、Datadog API キー
- ハードコードされた一般的なパスワード、シークレット、トークン
Secret Scan Results
Project: /project
Files scanned: 24
Findings: 5
[CRITICAL] .env:3 — AWS Access Key
Preview: AKIA****MPLE
[CRITICAL] .env:7 — Database URL with password
Preview: post****sswd
[CRITICAL] src/auth.ts:12 — Hardcoded JWT secret
Preview: my-s****ecret
[HIGH] .env:14 — Hardcoded session secret
Preview: sess****key!
[MEDIUM] .env:28 — Sentry DSN
Preview: http****7890
check_gitignore_coverage
機密ファイル(.env、.env.local、secrets.json、秘密鍵、証明書)が .gitignore の対象になっているか確認します。誤ってコミットされる可能性があるファイルを警告します。
Gitignore Coverage Check
Project: /project
✗ .env → Add to .gitignore: .env
✗ .env.local → Add to .gitignore: .env.local
✓ secrets.json
scan_for_log_leaks
ソースファイルをスキャンし、実行時に process.env の変数や、シークレットを連想させる名前のオブジェクトを出力する console.log/logger の呼び出しを検出します。よくある「デバッグ用の行にすぎない」というミスを見つけます。
Log Leak Scan
Project: /project
Files scanned: 18
Findings: 3
[CRITICAL] src/config.ts:8
console.log("Config loaded:", JSON.stringify(config));
[HIGH] src/server.ts:42
console.log(process.env.AWS_SECRET_ACCESS_KEY);
[HIGH] src/db.ts:15
logger.info({ password: dbConfig.password });
🧪 実際の使用例
データベース URL、AWS、Stripe、Twilio、SendGrid、Google OAuth、Sentry、JWT シークレット、暗号化キーなど、20 個のシークレットを含む現実的な .env を用意します。この MCP を使う前は、AI エージェントがファイルを読んでも何が機密情報なのかわからず、それらの値を生成コードや応答に使ってしまう可能性があります。
scan_for_secrets を 1 回実行すると、16 件の検出結果が得られます。すべて重大度別に分類され、プレビューはすべてマスクされています。エージェントは、何かに触れる前に危険な情報を正確に把握できます。
⚡ セットアップ
{
"mcpServers": {
"secret-scanner": {
"command": "npx",
"args": ["-y", "env-secret-exposure-analyzer-mcp"]
}
}
}
🚀 使用方法
「このプロジェクトをスキャンして、漏洩する可能性のあるシークレットや API キーがないか確認してください。.env ファイルが .gitignore に含まれているか確認し、認証情報を漏洩させる可能性のある console.log 呼び出しも探してください。」
エージェントは 3 つのツールを順に実行し、全体像を報告します。ハードコードされているもの、保護されていないもの、ログに出力されているものを確認できます。
以下と併用すると効果的です。
- tsconfig-inheritance-flattener-mcp — TypeScript 設定の分析用
- release-readiness-triage-mcp — リリース前の CI トリアージ用
- ast-impact-mapper-mcp — コードとテストの相関分析用
📦 リンク
- npm: npmjs.com/package/env-secret-exposure-analyzer-mcp
- GitHub: github.com/vola-trebla/env-secret-exposure-analyzer-mcp
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。