Atlas Connect — Setup & Reference

Quick Start

CLI path (simplest)

Generate instructions for your AI agent:

atlas agent-setup                    # Auto-detect agent format
atlas agent-setup --format claude    # Claude Code / CLAUDE.md
atlas agent-setup --format cursor    # Cursor / .cursorrules
atlas agent-setup --format copilot   # GitHub Copilot / copilot-instructions.md
atlas agent-setup --format generic   # Any agent

This outputs a markdown block listing all Atlas CLI commands with --json flags. Paste it into your agent’s instructions file. The agent calls Atlas as a subprocess — no server, no protocol, no additional runtime.

MCP path (protocol-native)

Generate MCP configuration:

atlas agent-setup --format mcp

Output:

{
  "mcpServers": {
    "atlas": {
      "command": "atlas",
      "args": ["connect", "start", "--stdio"]
    }
  }
}

Add this to your MCP client’s configuration (e.g., Claude Code’s claude_desktop_config.json, Cursor’s MCP settings). The client launches Atlas as a local subprocess — no network calls, no cloud relay.

Connect Scope

Connect Scope controls which watched paths are visible to agents. It operates independently of what Atlas watches — you can track a directory for your own use without exposing it through Connect.

Configuration

Scope rules live in ~/.atlas/config.toml under [connect.scope]:

[connect.scope]
allow = ["/Users/you/Projects"]
deny = [
    "~/.ssh",
    "~/.gnupg",
    "~/.aws",
    "~/.config/gh",
    "**/credentials*",
    "**/.env",
    "**/secrets*",
]

Allow list — If any entries exist, agents can only see paths under these prefixes. Everything else is invisible.

Deny list — These paths and patterns are always hidden from agents, even if they fall under an allowed prefix. Supports glob patterns (**, *, ?).

Precedence: Deny always wins over allow.

On first run, Atlas seeds default deny entries for common credential locations. These are regular deny entries — you can remove them if you choose.

CLI Commands

atlas connect scope                           # Show current rules
atlas connect scope --json                    # Machine-readable output

atlas connect scope allow /path               # Dry run: show what would change
atlas connect scope allow /path --confirm     # Apply the change

atlas connect scope deny "~/.secrets"         # Dry run
atlas connect scope deny "~/.secrets" --confirm

atlas connect scope remove "~/.ssh"           # Dry run: show what would be exposed
atlas connect scope remove "~/.ssh" --confirm

atlas connect scope reset                     # Dry run: show all rules that would be removed
atlas connect scope reset --confirm           # Clear all scope rules

All scope commands are dry-run by default. Without --confirm, they show what would change without modifying the config. This matches Atlas’s pattern for destructive operations (like atlas forget --pattern).

Behavior

Scoped-out data is invisible, not redacted. Agents receive no indication that filtered data exists — no placeholder counts, no “hidden” markers, no error messages suggesting scope boundaries. From the agent’s perspective, the data simply isn’t there.

MCP Server

Atlas implements the Model Context Protocol via the atlas connect command family. The server exposes 14 read-only tools that mirror and extend the Atlas CLI. There are no write operations — agents cannot modify your data through Connect.

Starting the Server

stdio transport (standard — MCP clients launch Atlas as a subprocess):

atlas connect start --stdio

The server runs on stdin/stdout, speaking JSON-RPC. MCP clients launch it automatically via the config from atlas agent-setup --format mcp. The process has the same filesystem access as your user account but can only execute Atlas read queries.

HTTP transport (for persistent or multi-client connections):

atlas connect start --port 3000

This daemonizes in the background, serving MCP over Streamable HTTP on 127.0.0.1:3000. It binds to localhost only — not exposed to the network. A PID file is written to ~/.atlas/connect.pid.

Stopping and Status

atlas connect stop       # Stop the HTTP daemon
atlas connect status     # Show server state, transport, query count
atlas connect status --json

Available Tools

All 14 tools are read-only and return JSON. No tool can create, modify, or delete data:

ToolDescriptionParameters
atlas_statusWhat Atlas is trackingnone
atlas_historyFull file historypath
atlas_searchSearch by name/path/hashquery, limit?, offset?
atlas_findFind by hash, name, path, extension, or duplicateshash?, name?, path?, duplicates?, extension?, path_contains?, exclude?, limit?, offset?, date_from?, date_to?, witnessed_only?
atlas_logRecent activitylimit?, offset?, today?, entity?, date_from?, date_to?, witnessed_only?
atlas_traceLineage traversalpath, forward?, depth?, reaches?
atlas_inputsDependencies for a file or directorypath, limit?, offset?
atlas_outputsProduced files for a file or directorypath, limit?, offset?
atlas_impactWhat breaks if this changespath, depth?
atlas_brokenUnresolved referencespath?, limit?, offset?
atlas_compareContent-identity comparisonpath_a, path_b
atlas_treeFork tree visualizationpath
atlas_queryAggregate query across entities and edgespath_prefix?, name_pattern?, exclude_pattern?, edge_type?, ref_pattern?, group_by?, limit?, offset?, count_only?, date_from?, date_to?, witnessed_only?
atlas_edgesSearch edges by reference path, type, or sourceref_pattern?, edge_type?, source_path_prefix?, pack_name?, limit?, offset?, date_from?, date_to?, witnessed_only?

All limit, offset, and depth parameters accept both string ("20") and number (20) values.

Temporal Filtering

Four tools support date-range filtering via date_from and date_to parameters (RFC 3339 format, e.g., "2025-01-01T00:00:00Z"). These filter on the entity’s created_at timestamp — when Atlas first recorded the entity.

The witnessed_only parameter restricts results to entities that Atlas directly observed being created or modified in real-time, excluding entities discovered during an initial scan. This distinction matters: scan-discovered entities have timestamps reflecting when Atlas scanned them, not when the files were originally created. Without this filter, an agent could draw incorrect conclusions about when files were made. In the CLI, unwitnessed timestamps are displayed with a ~ prefix (e.g., ~Dec 12 2025 22:51) to make the uncertainty visible.

Log entries include a witnessed field indicating whether Atlas observed the event in real-time. For atlas_find results, witnessed = !discovered on the entity object.

Aggregate Queries

The atlas_query tool enables cross-project analysis in a single call. It filters entities by path and name patterns, traverses their edges, and returns grouped counts.

Example: Most-used plugins across all Reaper projects

{
  "name": "atlas_query",
  "arguments": {
    "name_pattern": "%.RPP",
    "exclude_pattern": "%.RPP-BAK",
    "edge_type": "input",
    "ref_pattern": "plugin://%",
    "group_by": "reference_path",
    "limit": 10
  }
}

Returns:

{
  "rows": [
    { "key": "plugin://fabfilter/pro-q 4/vst3", "count": 85 },
    { "key": "plugin://cockos/reaeq/vst2", "count": 72 }
  ],
  "total_matching_entities": 149
}

When group_by is "source", each row includes the entity’s human-readable name and path:

{
  "rows": [
    { "key": "abc-123-def", "count": 12, "name": "My Song.RPP", "path": "/Projects/2026/My Song/My Song.RPP" },
    { "key": "fed-456-cba", "count": 8, "name": "Demo Track.RPP", "path": "/Projects/2025/Demo Track/Demo Track.RPP" }
  ],
  "total_matching_entities": 2
}

Parameters use SQL LIKE patterns: % matches any sequence, _ matches one character.

The atlas_edges tool searches edges directly by their reference path pattern, edge type, or source entity location. Useful for finding all plugin references, import paths, or any edge metadata.

{
  "name": "atlas_edges",
  "arguments": {
    "ref_pattern": "plugin://%kontakt%",
    "edge_type": "input",
    "limit": 20
  }
}

Audit Log

Every query made through the MCP server is recorded in the agent_audit_log table — an append-only log stored in your local Atlas database. The audit log captures: timestamp, tool name, full arguments, result count, and query duration. This is your record of what agents asked and when.

The audit table uses clear, human-readable column names and lives in the same SQLite file as the rest of your Atlas data. You can query it directly with any SQLite tool, back it up with a file copy, or delete it entirely — it’s your data.

Viewing the Audit Log

atlas audit                        # Recent queries (default: 50)
atlas audit --today                # Today's queries only
atlas audit --tool atlas_search    # Filter by tool name
atlas audit --agent <id>           # Filter by agent ID
atlas audit -n 100                 # Show more entries
atlas audit --json                 # Machine-readable output

Activity Summary

atlas audit summary               # Last 7 days, grouped by tool
atlas audit summary --days 30     # Last 30 days
atlas audit summary --json

The summary shows a bar chart of query volume per tool:

Agent activity (last 7 days):

  atlas_search         ████████████████████ 42 queries
  atlas_history        ████████████         24 queries
  atlas_trace          ██████               12 queries
  atlas_status         ███                  6 queries

  84 total queries

CLI Agent Path

For agents that don’t support MCP, every Atlas command supports --json for structured output. The agent calls Atlas as a subprocess and parses the JSON response. This path adds no dependencies — it’s the same CLI you already use, with a flag for machine-readable output.

Commands available to agents:

atlas status --json              # What Atlas is tracking
atlas history <path> --json      # Full file history
atlas find --duplicates --json   # Find duplicate files
atlas search <query> --json      # Search by name/path/hash
atlas trace <path> --json        # Lineage (--forward or --backward)
atlas inputs <path> --json       # What does this file need?
atlas outputs <path> --json      # What does this file produce?
atlas impact <path> --json       # What breaks if this changes?
atlas broken --json              # Unresolved references
atlas compare <a> <b> --json     # Content-identity comparison
atlas log --today --json         # Recent activity
atlas tree <path> --json         # Fork visualization

Opt-in CLI Audit Logging

By default, CLI --json calls are not logged. This is intentional — the CLI is your direct interface, and logging your own usage is a choice, not a default. To enable audit logging for CLI calls, add to ~/.atlas/config.toml:

audit_cli = true

When enabled, any --json command execution is logged to the same agent_audit_log table as MCP queries, with source = "cli". This lets you see a unified view of all programmatic access to your Atlas data, whether from an agent or a script you wrote.

Note: Connect Scope filtering applies only to MCP queries. CLI --json calls are the user’s own interface and always return unfiltered results, regardless of scope configuration.

Building Without MCP

The MCP server requires the mcp feature flag (enabled by default). To build without it:

cargo build --no-default-features

This removes the rmcp, tokio, schemars, and axum dependencies entirely. The atlas connect commands will print an error message if invoked. The CLI agent path (--json) works regardless of feature flags — it has no additional dependencies.

Building without MCP gives you a smaller binary with a reduced dependency surface. Atlas is a complete product without Connect; Connect is an optional layer you choose to enable.