关于 Latchpoint
Latchpoint 是用于 MCP 客户端配置文件的离线只读扫描器,提供命令行和 stdio MCP 服务接口。它适合需要查看脱敏结果、又不希望启动配置中的服务或访问远程端点的配置审查者。
主要功能
- 01检查可识别的传输、命令、版本、凭据和访问范围模式
- 02扫描选定的本地文件或明确发现的配置
- 03输出文本、JSON 或 SARIF 结果
- 04提供稳定规则 ID 和脱敏证据
- 05将 MCP 服务扫描限制在指定允许目录内
适用场景
- 01使用前审计 MCP 客户端配置
- 02为构建检查生成 SARIF 结果
- 03不启动配置中的服务而检查配置文件
MCP 相关
只读 stdio MCP 服务提供列出审计规则和扫描文件的工具,并要求启动时指定允许目录。它返回发现项和扫描元数据,不返回原始配置内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-latchpoint
mcp-latchpoint 可在不运行已配置服务的情况下审计 MCP 客户端配置文件。它可离线运行,只读取你选择的本地文件,并生成文本、JSON 或 SARIF 格式的结果。
这是一个早期防御性工具。修改可正常工作的配置前,请结合上下文审查发现的问题。
检查内容
v0.1 规则涵盖:
- 非环回远程端点使用普通 HTTP
- Shell 包装器和内联 Shell 控制语法
- 可识别的
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
扫描一个或多个明确指定的文件:
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 表示扫描已完成,且发现的问题低于所选阈值;1 表示有发现达到 --fail-on 的条件;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。启动时必须指定一个获准的根目录。相对扫描路径会解析到该根目录下;绝对路径、.. 路径遍历和符号链接都无法越出该目录。
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 这一种服务传输方式,且 stdout 专用于 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。