langsight scan is the fastest way to audit your MCP servers. It auto-discovers every IDE config on the machine, runs health checks and security scans in parallel, and stores results locally in SQLite — all with no infrastructure dependencies.
langsight scan is designed for zero-friction use: pip install langsight && langsight scan is the entire setup. All results are saved to ~/.langsight/scan.db (SQLite) — no Docker, no Postgres, no ClickHouse required.Quick start
Run the scan
Usage
Options
Path to a
.langsight.yaml config file. If not set, LangSight auto-discovers IDE configs (see Auto-discovery below). When a .langsight.yaml is found in the current directory it is used automatically.SQLite database path for storing scan history. Override when running multiple isolated projects on the same machine.
Output results as machine-readable JSON instead of the Rich table. Useful for piping into
jq or saving to a file.Exit with code
1 if any CRITICAL or HIGH findings are present. Use as a CI/CD gate to block deployments when MCP servers are unhealthy or vulnerable.Show a remediation step below each finding. Without this flag only the finding is shown;
--fix adds the concrete action needed to resolve it.Auto-discovery
When no--config is provided, langsight scan reads MCP server definitions directly from IDE configuration files on your machine.
| IDE / Client | Config path scanned |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | .cursor/mcp.json (project) + ~/.cursor/mcp.json (global) |
| VS Code | .vscode/mcp.json (project) + ~/.config/Code/User/mcp.json (global) |
| Windsurf | ~/.windsurf/mcp.json |
.langsight.yaml | Current directory (if present, takes precedence over IDE configs) |
Example output
--fix:
Exit codes
| Code | Meaning |
|---|---|
0 | All servers healthy, no CRITICAL or HIGH findings |
1 | One or more servers DOWN, or CRITICAL/HIGH findings present when --ci is set |
Without
--ci, langsight scan always exits 0 regardless of findings. The --ci flag is what enables non-zero exit on security findings, so you can use the command interactively without breaking shell scripts.CI/CD integration
Use--ci to gate deployments on a clean MCP audit.
--config is omitted in CI, LangSight will find no IDE configs (CI machines have no Claude Desktop or Cursor installed) and scan zero servers, exiting 0. Always pass --config .langsight.yaml in CI.
SQLite scan history
Every scan writes results to~/.langsight/scan.db (or the path set by --db). The database contains three tables:
| Table | Contents |
|---|---|
health_results | Timestamp, server name, status, latency, tools count, error message |
schema_snapshots | Tool list hash per server, captured at scan time |
schema_drift_events | Recorded when a server’s tool list changes between scans |
--db to maintain separate history per project:
github-mcp had 12 tools yesterday and has 11 today, the missing tool is flagged in the findings table.
JSON output
Difference from mcp-health and security-scan
| Command | Infrastructure required | What it does |
|---|---|---|
langsight scan | None (SQLite only) | Health + security in one pass, auto-discovers IDE configs |
langsight mcp-health | Postgres or dual backend | Health checks only, stores results in Postgres/ClickHouse |
langsight security-scan | Postgres or dual backend | Security scan only, reads config from .langsight.yaml |
langsight scan is the recommended starting point. Migrate to mcp-health + security-scan + langsight monitor when you need continuous monitoring, alerting, and a web dashboard.
Related
- Auto-discovery guide — how server discovery works
langsight mcp-health— continuous health checks with Postgres backendlangsight security-scan— standalone security scanner- Storage backends — when to upgrade from SQLite to the full stack