Latchpoint について
Latchpointは、MCPクライアント設定ファイルをオフラインで読み取り専用スキャンするツールで、CLIとstdioのMCPサーバーを備えています。設定されたサーバーを起動したりリモートエンドポイントへ接続したりせず、伏字化された検出結果を確認したい人向けです。
主な機能
- 01認識可能なトランスポート、コマンド、バージョン、認証情報、アクセス範囲を検査
- 02選択したローカルファイルや明示的に検出した設定をスキャン
- 03テキスト、JSON、SARIF形式で結果を出力
- 04安定したルールIDと伏字化された根拠を提示
- 05MCPサーバーのスキャンを指定した許可ルート内に制限
活用シーン
- 01利用前のMCPクライアント設定の監査
- 02ビルドチェック向けSARIF結果の生成
- 03設定内のサーバーを起動せずにファイルを確認
MCP 対応
読み取り専用のstdio MCPサーバーは、監査ルールの一覧表示と、必須の許可ルート内にあるファイルのスキャンを行うツールを公開します。設定ファイルの生データではなく、検出結果とスキャンのメタデータを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-latchpoint
mcp-latchpoint は、設定されたサーバーを実行せずに、MCP クライアントの設定ファイルを監査します。オフラインで動作し、選択したローカルファイルのみを読み取り、テキスト、JSON、または SARIF 形式の結果を生成します。
これは初期段階の防御ツールです。動作中の設定を変更する前に、検出結果を状況に応じて確認してください。
チェック内容
v0.1 ルールでは、次の項目をチェックします。
- ループバック以外のリモートエンドポイントに対する平文 HTTP
- シェルラッパーとインラインのシェル制御構文
- 正確なバージョンが指定されていない、識別可能な
npxおよびuvxパッケージ - 環境変数の値、ヘッダー、引数、URL に含まれるリテラルの認証情報
- 認識可能なアクセス範囲として渡されるファイルシステムのルートとホームディレクトリのルート
- ワイルドカードのホストと、認識可能なワイルドカードのアクセス範囲
- 競合している、欠落している、無効な、またはサポートされていないトランスポート設定
各検出結果には、安定したルール ID、重大度、場所、修正方法、秘匿化された証拠が含まれます。また、起動されるサーバーの解釈に応じて判断が変わる場合は、確信度に関する注記も含まれます。
インストール
Python 3.11 以降が必要です。
python -m pip install mcp-latchpoint
ローカルのチェックアウトからインストールする場合:
python -m venv .venv
# Linux or macOS
. .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
python -m pip install .
開発用の場合:
python -m pip install -e ".[dev]"
pytest
ruff check .
mypy
MCP サーバーは公式 Python SDK v2 を使用し、依存関係は mcp>=2.3,<3 に制約されています。
CLI
明示的に指定した 1 つ以上のファイルをスキャンします。
mcp-latchpoint scan ~/.config/Code/User/mcp.json
mcp-latchpoint scan examples/risky.json --format json
mcp-latchpoint scan examples/risky.json --format sarif --fail-on high > results.sarif
明示的に指定したすべてのパスを、許可されたディレクトリ内に制限します。
mcp-latchpoint scan ./configs --allowed-root ./configs
ディレクトリ内では、認識対象の MCP 設定ファイル名のみが最大 256 ファイルまで検索されます。ファイルサイズの上限は、デフォルトで 1 MiB です。--max-files と --max-bytes でこれらの上限を変更できます。
終了コードは、選択したしきい値を下回るスキャンが完了した場合は 0、検出結果が --fail-on の条件を満たす場合は 1、入力、包含制限、または解析エラーの場合は 2 です。デフォルトの --fail-on none は、ビルドを失敗させずに検出結果を報告します。
ルールを一覧表示して説明します。
mcp-latchpoint rules
mcp-latchpoint explain MCP004
認識される構成形式
明示的に指定したファイルでは、次の構造を使用できます。
| クライアントの形式 | コンテナー | 受け付けるファイル構文 |
|---|---|---|
Claude Desktop、Cursor、ポータブルな .mcp.json、一般的な MCP JSON | トップレベルの mcpServers オブジェクト | JSON |
| Claude Code のユーザー/ローカル設定 | トップレベルの mcpServers。さらに、~/.claude.json 内の projects.<path>.mcpServers | JSON |
| VS Code | トップレベルの servers オブジェクト | .vscode/mcp.json では JSONC |
| Codex | [mcp_servers.<name>] テーブル | TOML |
.jsonc で終わるファイルは、JSONC としても解析されます。それ以外の .json ファイルは厳密な JSON として扱われるため、不正な入力が黙って受け入れられることはありません。
--discover は、存在する場合に限り、次のパスのみを確認します。ホームディレクトリのほかの場所は検索しません。
- すべてのシステム:
~/.claude.json、~/.cursor/mcp.json、~/.codex/config.toml、$COPILOT_HOME/mcp-config.json。見つからない場合は~/.copilot/mcp-config.jsonを使用 - 現在のプロジェクト:
.mcp.json、.codex/config.toml、.cursor/mcp.json、.vscode/mcp.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json、%APPDATA%\Code\User\mcp.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json、~/Library/Application Support/Code/User/mcp.json - Linux:
$XDG_CONFIG_HOME/Code/User/mcp.json。設定されていない場合は~/.config/Code/User/mcp.jsonを使用
読み取り専用の MCP サーバー
stdio サーバーは、list_rules と scan の 2 つのツールを公開します。起動時に、許可するルートを指定する必要があります。相対パスでのスキャンはそのルートの配下で解決されます。絶対パス、.. による移動、シンボリックリンクでルートの外に出ることはできません。
mcp-latchpoint-server --root /absolute/path/to/reviewed-configs
mcp-latchpoint serve --root /absolute/path/to/reviewed-configs
クライアントエントリーの例:
{
"mcpServers": {
"latchpoint": {
"command": "/absolute/path/to/mcp-latchpoint-server",
"args": ["--root", "/absolute/path/to/reviewed-configs"]
}
}
}
サーバーが返すのは検出結果とスキャンのメタデータのみで、生の設定内容は返しません。エントリーポイントで公開されるサーバートランスポートは stdio のみで、標準出力は MCP プロトコルメッセージ専用です。
serve コマンドは、MCP Registry で案内されているエントリーポイントでもあります。クライアントを接続する前に、明示的に信頼するディレクトリを --root に設定してください。
Glama のビルド
Glama の掲載ページでは、リポジトリからコンテナーをビルドします。Dockerfile の設定では、Python 3.13 と次のビルド手順およびコマンド引数を使用してください。
["uv sync --no-dev"]
["mcp-proxy", "--", "/app/.venv/bin/mcp-latchpoint-server", "--root", "/app/examples"]
ルートは、合成サンプル設定を含む既存のディレクトリです。これにより、ユーザーのファイルにサーバーがアクセスすることなく、Glama でツールを起動して確認できます。コマンドでは、uv sync によって作成された仮想環境内の実行ファイルを使用します。このデモでは、環境変数のスキーマを {"type":"object","properties":{}}、プレースホルダーのパラメーターを {} にできます。
独自の設定をスキャンするには、明示的に信頼できるディレクトリを --root で指定して、サーバーをローカルで実行してください。Glama のデモ用ルートは、examples/ 内のサンプルファイル専用です。
安全性と制限事項
スキャナーは、コマンドの実行、パッケージのインストール、参照先の環境変数の解決、エンドポイントへの接続を行いません。設定のインクルードをたどったり、MCP サーバーのコードや実行時の動作を調べたりすることもありません。引数ベースのルールは、認識可能なパターンに意図的に限定されているため、独自のフラグを検出できない場合があります。問題がないというレポートが出ても、サーバーが安全であることの証明にはなりません。
シークレットの検出では、値ではなくフィールド名と <redacted> マーカーを出力するように設計されています。情報漏えいやパスの包含に関する問題を見つけた場合は、SECURITY.md の手順に従い、実際の設定ファイルを公開課題に添付しないでください。
ライセンス
MIT です。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。