Latchpoint

Official registry Security

Offline, read-only auditing of MCP client configuration files with redacted findings

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

PYPI package mcp-latchpoint
Claude Code
claude mcp add latchpoint -- uvx mcp-latchpoint==0.1.1 serve --root
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "latchpoint": {
            "command": "uvx",
            "args": [
                "mcp-latchpoint==0.1.1",
                "serve",
                "--root"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. mcp-latchpoint
  2. What it checks
  3. Install
  4. CLI
  5. Read-only MCP server
  6. Safety and limitations
  7. License

mcp-latchpoint

mcp-latchpoint audits MCP client configuration files without running the configured servers. It works offline, reads only local files you select, and produces text, JSON, or SARIF results.

This is an early defensive tool. Review findings in context before changing a working configuration.

What it checks

The v0.1 rules cover:

  • plain HTTP for non-loopback remote endpoints
  • shell wrappers and inline shell control syntax
  • identifiable npx and uvx packages without exact versions
  • literal credentials in environment values, headers, arguments, or URLs
  • filesystem roots and home roots passed as recognizable access scopes
  • wildcard hosts and recognizable wildcard scopes
  • conflicting, missing, invalid, or unsupported transport settings

Every finding has a stable rule ID, severity, location, remediation, redacted evidence, and a confidence note when interpretation depends on the launched server.

Install

Python 3.11 or newer is required.

python -m pip install mcp-latchpoint

To install from a local checkout:

python -m venv .venv
# Linux or macOS
. .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
python -m pip install .

For development:

python -m pip install -e ".[dev]"
pytest
ruff check .
mypy

The MCP server uses the official Python SDK v2 and the dependency is constrained to mcp>=2.3,<3.

CLI

Scan one or more explicit files:

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

Restrict every explicit path to an approved directory:

mcp-latchpoint scan ./configs --allowed-root ./configs

Directories are searched only for recognized MCP config filenames, up to 256 files. A file is limited to 1 MiB by default. Change these bounds with --max-files and --max-bytes.

Exit codes are 0 for a completed scan below the chosen threshold, 1 when a finding meets --fail-on, and 2 for input, containment, or parse errors. The default --fail-on none reports findings without failing a build.

List and explain rules:

mcp-latchpoint rules
mcp-latchpoint explain MCP004
Recognized layouts

Explicit files may use these structures:

Client layoutContainerAccepted file syntax
Claude Desktop, Cursor, portable .mcp.json, generic MCP JSONtop-level mcpServers objectJSON
Claude Code user/local settingstop-level mcpServers, plus projects.<path>.mcpServers in ~/.claude.jsonJSON
VS Codetop-level servers objectJSONC for .vscode/mcp.json
Codex[mcp_servers.<name>] tablesTOML

Files ending in .jsonc are also parsed as JSONC. Other .json files remain strict JSON so malformed input is not silently accepted.

--discover checks only the following paths when they exist. It does not search the rest of the home directory.

  • All systems: ~/.claude.json, ~/.cursor/mcp.json, ~/.codex/config.toml, $COPILOT_HOME/mcp-config.json with ~/.copilot/mcp-config.json as the fallback
  • Current project: .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, falling back to ~/.config/Code/User/mcp.json

Read-only MCP server

The stdio server exposes two tools: list_rules and scan. It requires an allowed root at startup. Relative scan paths are resolved below that root; absolute paths, .. traversal, and symlinks cannot escape it.

mcp-latchpoint-server --root /absolute/path/to/reviewed-configs
mcp-latchpoint serve --root /absolute/path/to/reviewed-configs

Example client entry:

{
  "mcpServers": {
    "latchpoint": {
      "command": "/absolute/path/to/mcp-latchpoint-server",
      "args": ["--root", "/absolute/path/to/reviewed-configs"]
    }
  }
}

The server returns findings and scan metadata, never raw configuration content. Stdio is the only server transport exposed by the entry point, and stdout is reserved for MCP protocol messages.

The serve command is also the entry point advertised in the MCP Registry. Set --root to a directory you explicitly trust before connecting a client.

Glama build

The Glama listing builds a container from the repository. In its Dockerfile configuration, use Python 3.13, these build steps and command arguments:

["uv sync --no-dev"]
["mcp-proxy", "--", "/app/.venv/bin/mcp-latchpoint-server", "--root", "/app/examples"]

The root is an existing directory with synthetic sample configurations. It lets Glama start and inspect the tools without giving the server access to a user's files. The command uses the executable inside the virtual environment created by uv sync. For this demo, the environment-variable schema can be {"type":"object","properties":{}} and placeholder parameters can be {}.

To scan your own configurations, run the server locally with --root pointing to a directory you explicitly trust. Glama's demo root is only for the sample files in examples/.

Safety and limitations

The scanner never executes commands, installs packages, resolves referenced environment variables, or connects to endpoints. It does not follow configuration includes or inspect an MCP server's code or runtime behavior. Argument-based rules are intentionally limited to recognizable patterns, so custom flags can be missed. A clean report is not proof that a server is safe.

Secret detection is designed to emit field names and <redacted> markers rather than values. If you find a leak or a path-containment problem, follow SECURITY.md and do not attach a real configuration to a public issue.

License

MIT. See LICENSE.

Frequently asked questions

What is Latchpoint?

Offline, read-only auditing of MCP client configuration files with redacted findings

How do I install Latchpoint?

It runs on your machine. In Claude Code: claude mcp add latchpoint -- uvx mcp-latchpoint==0.1.1 serve --root. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Latchpoint need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is Latchpoint open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains Latchpoint?

It is published by robyroro. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.