ATLAS MCP
Safe, reliable, and verifiable execution for the Model Context Protocol, enabling governed tasks with planning, capability approval, side-effect verification, and evidence receipts.
README
<div align="center">
<img src="docs/assets/atlas-mcp-logo.png" alt="ATLAS MCP logo" width="150" />
ATLAS MCP
Safe execution Β· Durable memory Β· Verified outcomes
An open-source Model Context Protocol runtime for files, terminal, browser, memory, and computer use β with policy checks, bounded execution, and cryptographic evidence for every result.
<br />
<!-- Build & quality --> <a href="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/ci.yml"><img src="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/ci.yml/badge.svg" alt="CI status" /></a> <a href="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/codeql.yml"><img src="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/codeql.yml/badge.svg" alt="CodeQL status" /></a> <a href="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/audit.yml"><img src="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/audit.yml/badge.svg" alt="Dependency audit status" /></a> <a href="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/container.yml"><img src="https://github.com/XAGI-Lab/atlas-mcp/actions/workflows/container.yml/badge.svg" alt="Container build status" /></a>
<!-- Evidence --> <img src="https://img.shields.io/badge/evals-22%2F22_passing-22c55e?style=flat-square&logo=checkmarx&logoColor=white" alt="22 of 22 deterministic evaluations passing" /> <img src="https://img.shields.io/badge/unit_tests-76_passing-22c55e?style=flat-square&logo=vitest&logoColor=white" alt="76 unit tests passing" /> <img src="https://img.shields.io/badge/e2e-7_passing-22c55e?style=flat-square&logo=testcafe&logoColor=white" alt="7 end-to-end cases passing" /> <img src="https://img.shields.io/badge/vulnerabilities-0_known-22c55e?style=flat-square&logo=snyk&logoColor=white" alt="No known vulnerabilities" />
<br />
<!-- Stack --> <img src="https://img.shields.io/badge/TypeScript-strict-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript strict" /> <img src="https://img.shields.io/badge/Node.js-22_%7C_24-5FA04E?style=flat-square&logo=nodedotjs&logoColor=white" alt="Node.js 22 and 24" /> <img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11 or newer" /> <img src="https://img.shields.io/badge/pnpm-9.5-F69220?style=flat-square&logo=pnpm&logoColor=white" alt="pnpm 9.5" /> <img src="https://img.shields.io/badge/SQLite-local_state-003B57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite local state" /> <img src="https://img.shields.io/badge/Playwright-browser-2EAD33?style=flat-square&logo=playwright&logoColor=white" alt="Playwright browser runtime" /> <img src="https://img.shields.io/badge/Docker-hardened-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Hardened Docker image" />
<br />
<!-- Platform & project --> <img src="https://img.shields.io/badge/macOS-supported-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS supported" /> <img src="https://img.shields.io/badge/Linux-supported-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux supported" /> <img src="https://img.shields.io/badge/Windows-supported-0078D4?style=flat-square&logo=windows&logoColor=white" alt="Windows supported" /> <img src="https://img.shields.io/badge/transport-stdio-475569?style=flat-square" alt="Local stdio transport" /> <img src="https://img.shields.io/badge/telemetry-off-0f172a?style=flat-square" alt="Telemetry off" />
<br />
<a href="https://github.com/XAGI-Lab/atlas-mcp/releases"><img src="https://img.shields.io/github/v/release/XAGI-Lab/atlas-mcp?include_prereleases&style=flat-square&color=8b5cf6&logo=github" alt="Latest release" /></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-f97316?style=flat-square" alt="Apache-2.0 license" /></a> <a href="CONTRIBUTING.md"><img src="https://img.shields.io/badge/DCO-required-6366f1?style=flat-square&logo=git&logoColor=white" alt="DCO sign-off required" /></a> <a href="https://github.com/XAGI-Lab/atlas-mcp/discussions"><img src="https://img.shields.io/badge/discussions-join-2563eb?style=flat-square&logo=github" alt="GitHub Discussions" /></a> <a href="CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-ec4899?style=flat-square" alt="Pull requests welcome" /></a>
<br /><br />
<img src="docs/assets/atlas-mcp-hero.png" alt="ATLAS MCP governed execution flow" width="100%" />
</div>
<br />
[!WARNING] ATLAS MCP is an alpha release. Its local stdio runtime is tested end to end, but APIs may change before
1.0. Use an isolated workspace, keep domain and command allowlists narrow, and review every consequential approval.
Contents
| Why ATLAS MCP | Execution layers | Where to use it |
| Quickstart | MCP tool surface | How execution works |
| Evidence | Safe defaults | Reproduce the scores |
| SDKs | Repository map | Documentation |
Why ATLAS MCP
Most MCP servers hand a model a tool and hope for the best. A command runs, a click lands, a file is written β and "it returned without an error" is treated as success.
ATLAS MCP separates the action succeeded from the goal was achieved.
<table> <tr> <th width="50%">π« Typical tool server</th> <th width="50%">β ATLAS MCP</th> </tr> <tr> <td>
- Tool call executes immediately
- Success = no exception thrown
- Policy, if any, checked once
- Mutations are indistinguishable from reads
- Output is trusted
- No durable record
</td> <td>
- Plan and execute are separate tool calls
- Success = declared evidence predicates passed
- Policy re-evaluated at execution time
- Mutations need evidence and an exact approval phrase
- Page content is explicitly marked untrusted
- Redacted receipt + SHA-256 execution certificate
</td> </tr> </table>
If a mutation succeeds but its required evidence is missing or false, the task
is partial β never verified_success.
One runtime, five execution layers π§
ATLAS MCP turns a tool call into a durable, inspectable task:
| Layer | What is implemented | |
|---|---|---|
| ποΈ | Files | Root-confined read, hash, atomic write, move, mkdir, and delete with symlink-escape defenses |
| π» | Terminal | Shell-free foreground and supervised background processes with allowlists, timeouts, cancellation, and redaction |
| π | Browser | Isolated Playwright sessions, semantic DOM targets, bounded artifacts, network policy, and condition-based post-action settling |
| π§ | Memory | Scoped SQLite memory with hybrid lexical ranking, episode context, speaker matching, confidence, freshness, diversity, expiry, supersession, provenance, and redaction |
| π₯οΈ | Computer | Capability discovery plus governed screenshot, pointer, keyboard, and scroll adapters on macOS and supported Linux/X11 setups |
Every layer passes through the same policy, approval, budget, verification, receipt, and certificate pipeline.
Where you can use ATLAS MCP π οΈ
ATLAS MCP works with any MCP client that can launch a local stdio server.
<div align="center">
| Client | Setup | Status |
|---|---|---|
| Claude Desktop | docs | <img src="https://img.shields.io/badge/documented-2563eb?style=flat-square" alt="documented" /> |
| Cursor | docs | <img src="https://img.shields.io/badge/documented-2563eb?style=flat-square" alt="documented" /> |
| VS Code | docs | <img src="https://img.shields.io/badge/documented-2563eb?style=flat-square" alt="documented" /> |
| Any stdio MCP client | docs | <img src="https://img.shields.io/badge/documented-2563eb?style=flat-square" alt="documented" /> |
</div>
[!NOTE] A named client is marked verified only after the released artifact β not a source checkout β passes discovery, planning, approval, execution, cancellation, and receipt retrieval in that client. Current per-client status is tracked in COMPATIBILITY.md.
What people actually do with it
| Use case | Small example | Verified outcome | |
|---|---|---|---|
| π©βπ» | Coding clients | Inspect a repository, run pnpm check, write a bounded file change |
Exit code, file existence, content, or hash |
| π | Browser workflows | Open an allowlisted page, inspect it, fill a form after approval | Final URL and page content |
| π» | Terminal automation | Run a shell-free build or supervise a background process | Exit code and bounded stdout |
| π₯οΈ | Computer use | Discover local support, capture a screenshot, approve pointer or keyboard input | Adapter result plus declared evidence |
| π§ | Project memory | Store a test command, architectural decision, or operating procedure | Scoped record with provenance and redaction |
<details> <summary><b>Show a governed terminal operation</b></summary>
<br />
A coding client submits one bounded operation with the evidence it expects:
{
"goal": "Run the repository checks",
"operation": {
"kind": "terminal",
"action": "run",
"command": "pnpm",
"args": ["check"]
},
"requiredEvidence": [
{ "type": "exit_code", "value": 0 }
]
}
The task reaches verified_success only if the process exits 0. A process
that runs and exits 1 is a completed action with failed evidence β reported
as partial.
</details>
<details> <summary><b>Show scoped project memory</b></summary>
<br />
pnpm atlas run --request examples/07-project-decision-memory/task.json
Records are scoped, provenance-tagged, and pass through secret redaction before they are persisted.
</details>
See all runnable examples β browser inspection, verified file writes, terminal checks, scoped memory, and computer capability discovery.
Quickstart π
Requirements: Node.js 22+, pnpm 9.5, and optionally Chrome, Chromium, or Edge for browser work.
git clone https://github.com/XAGI-Lab/atlas-mcp.git
cd atlas-mcp
corepack enable
pnpm install --frozen-lockfile
pnpm build
pnpm atlas doctor
pnpm atlas init --client generic
<table> <tr><th>Goal</th><th>Command</th></tr> <tr><td>Start the stdio server</td><td><code>pnpm atlas serve</code></td></tr> <tr><td>Run a read-only system task</td><td><code>pnpm atlas run --request examples/01-system-info/task.json</code></td></tr> <tr><td>Run a verified mutation</td><td><code>pnpm atlas run --request examples/02-verified-file-write/task.json</code></td></tr> <tr><td>Inspect a stored receipt</td><td><code>pnpm atlas inspect <task-id></code></td></tr> <tr><td>Test a policy file</td><td><code>pnpm atlas policy test</code></td></tr> </table>
Mutations pause for an exact, expiring, task-scoped approval phrase. See installation and client setup for Claude Desktop, Cursor, VS Code, generic clients, Python, and Docker.
[!CAUTION] The npm package
atlas-mcpand the PyPI packageatlas-mcpare unrelated third-party projects. Install only from this repository or from official XAGI-Lab releases.
A deliberately small MCP surface β¨
Six tools, in front of five capability runtimes:
| MCP tool | Purpose |
|---|---|
atlas_capabilities |
Discover operations, platform support, limits, and policy posture |
atlas_plan |
Validate, persist, and policy-check one bounded operation |
atlas_execute |
Execute an approved plan and verify the declared outcome |
atlas_task_status |
Read durable task state |
atlas_task_cancel |
Cooperatively cancel pending or running work |
atlas_receipt |
Retrieve redacted evidence and the execution certificate |
High-level tools keep schemas compact while the operation contract carries the specific file, terminal, browser, memory, computer, or system action.
How execution works βοΈ
flowchart LR
Client["MCP client"] --> Plan["Persist bounded plan"]
Plan --> Policy{"Policy at plan time"}
Policy -->|deny| Stop["Policy blocked"]
Policy -->|allow or exact approval| Recheck{"Policy at execution time"}
Recheck --> Runtime["File Β· terminal Β· browser Β· memory Β· computer"]
Runtime --> Observe["Post-action observation"]
Observe --> Verify{"Evidence predicates pass?"}
Verify -->|yes| Success["Verified success"]
Verify -->|no| Partial["Partial or failed"]
Success --> Receipt["Redacted receipt + SHA-256 certificate"]
Partial --> Receipt
Task lifecycle:
planned β awaiting_approval β running β verifying
β verified_success
β partial | failed | cancelled | budget_exhausted
Policy is evaluated twice β once when the plan is persisted and again at execution β so a stale plan can never ride a since-tightened policy.
Evidence, not leaderboard theatre π
The numbers below come from committed scripts and JSON artifacts measured on an Apple Silicon Mac. They are component measurements, not a claim that ATLAS MCP is universally "the best" or that unlike benchmarks are comparable.
| Capability | Current public result | What it means | |
|---|---|---|---|
| π§ | LoCoMo retrieval | 0.7597 mean evidence coverage@20 | 1,982 evidence-bearing questions; +20.75% relative over the previous public ranker; zero model, embedding, or network calls |
| π§ | Synthetic recall | 100/100 Recall@1 | Deterministic planted-fact regression over 1,000 records |
| π | Static-page settle | 183.7 ms p50 vs 301.3 ms | 39% less waiting with identical 10/10 correct reads |
| π | Slow-render settle | 10/10 vs 0/10 correct | Condition-based waiting observes the final DOM; fixed 300 ms reads too early |
| π» | Terminal | 30/30 verified executions | Shell-free process launch; 48.1 ms p50 on the measured machine |
| π₯οΈ | Computer control plane | 30/30 capability probes | 0.032 ms p50 adapter discovery; this is not a desktop task-success score |
| β | Safety/execution evals | 22/22 passing | Deterministic policy, traversal, terminal, memory, computer, cancellation, and verification scenarios |
Read the research index, the benchmark methodology, and the raw microbenchmark and LoCoMo artifacts.
Browser-agent evaluation β harness registered, score not yet claimed
The repository contains a pre-registered browser-agent evaluation harness:
| Track | Status |
|---|---|
MiniWoB-125 development suite (browsergym-miniwob==0.14.3) |
<img src="https://img.shields.io/badge/harness-ready-2563eb?style=flat-square" alt="harness ready" /> |
WebArena-Verified Hard-30 registered subset (webarena-verified==1.2.3) |
<img src="https://img.shields.io/badge/harness-ready-2563eb?style=flat-square" alt="harness ready" /> |
| Published representative score | <img src="https://img.shields.io/badge/not_yet_run-64748b?style=flat-square" alt="not yet run" /> |
Task IDs, upstream revisions, and dataset hashes are frozen in
benchmarks/browser-agent/manifests/ and
enforced by pnpm benchmark:browser:verify-upstream. A score will be published
only after a full fixed-denominator run completes without infrastructure-invalid
pairs and its sanitized artifact passes the publication gate.
[!IMPORTANT] ATLAS MCP has not run an official OSWorld, OSWorld-MCP, WebArena, or LongMemEval end-to-end submission. Those scores remain unclaimed until the exact public harness, environment, model policy, and evaluator are released with the result.
Safe defaults π
| Default | |
|---|---|
| π | Local-only stdio transport; no account or hosted service required |
| π΄ | Telemetry is off |
| π« | Shell interpreters, privilege escalation, and arbitrary desktop key names are denied |
| π | Paths and terminal working directories stay inside the configured root |
| π | Browser domains start deny-by-default; private, link-local, loopback, and cloud-metadata destinations stay blocked unless explicitly permitted |
| β οΈ | Browser output is marked untrusted; page content never changes policy |
| βοΈ | Mutations require both declared evidence and an exact task-scoped approval |
| π | Secret patterns are redacted before terminal output, memory, tasks, or receipts are persisted |
| ποΈ | Computer actions use bounded typed fields and platform adapters β not a user-supplied shell command |
See the threat model and security policy for residual risks.
Reproduce the scores π§ͺ
# full validation gate
pnpm check
pnpm evals
pnpm e2e
pnpm pack:check
pnpm security:audit
# local memory, browser, terminal, and computer microbenchmarks
pnpm benchmark:core
<details> <summary><b>LoCoMo memory retrieval</b> β dataset intentionally not vendored (CC BY-NC 4.0)</summary>
<br />
git clone https://github.com/snap-research/locomo.git /tmp/locomo
pnpm benchmark:locomo -- \
--dataset /tmp/locomo/data/locomo10.json \
--output docs/research/results/locomo-retrieval.json
</details>
<details> <summary><b>Browser-agent harness</b> β contract checks and the MiniWoB development suite</summary>
<br />
Contract and registered-selection checks run with no model and no network environment:
pnpm benchmark:browser:check
pnpm benchmark:browser:verify-upstream
The MiniWoB development suite additionally needs the pinned MiniWoB++ assets, a
built CLI (pnpm build), and an agent configuration whose api_key_env names a
variable present in the environment:
uv run --project benchmarks/browser-agent --extra miniwob \
atlas-browser-bench run-miniwob \
--manifest benchmarks/browser-agent/manifests/miniwob-125-v1.json \
--run-dir benchmarks/browser-agent/runs/miniwob-candidate \
--workspace benchmarks/browser-agent/runs/workspaces \
--base-url "$MINIWOB_BASE_URL" \
--browser-executable "$ATLAS_MCP_BROWSER" \
--implementation-commit "$(git rev-parse HEAD)" \
--agent-config benchmarks/browser-agent/runs/config/agent.json
Run outputs β HAR, screenshots, video, and transcripts β are Git-ignored and must never be committed.
</details>
Benchmark artifacts include dataset hashes, environment details, sample counts, latency percentiles, and explicit claim boundaries.
SDKs and implementation languages π§©
| SDK | Package | Language |
|---|---|---|
| TypeScript client | @atlas-mcp/sdk |
<img src="https://img.shields.io/badge/-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" /> |
| Python client | atlas-mcp |
<img src="https://img.shields.io/badge/-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python" /> |
| JSON contracts | @atlas-mcp/protocol Β· @atlas-mcp/receipt-schema |
<img src="https://img.shields.io/badge/-000000?style=flat-square&logo=json&logoColor=white" alt="JSON" /> |
ATLAS MCP is capability-driven, not language-restricted. Rust, Go, Python, TypeScript, Swift, C#, or another language can be used when measurement shows a real improvement in isolation, portability, performance, reliability, or platform integration without fragmenting the public contracts.
Repository map ποΈ
apps/cli/ CLI and stdio entrypoint
packages/protocol/ strict task and operation schemas
packages/runtime-core/ lifecycle, budgets, retries, cancellation
packages/policy-core/ local policy and scoped approvals
packages/server/ six-tool MCP server and runtime router
packages/file-runtime/ confined filesystem operations
packages/terminal-runtime/ shell-free process supervision
packages/browser-runtime/ isolated browser automation and stable-DOM wait
packages/computer-runtime/ governed local computer-use adapters
packages/memory/ scoped hybrid retrieval and lifecycle controls
packages/storage-sqlite/ durable local state
packages/verifier-core/ deterministic evidence predicates
packages/receipt-schema/ receipts and execution certificates
packages/sdk-ts/ TypeScript client SDK
sdk-py/ Python client SDK
benchmarks/browser-agent/ pre-registered browser-agent evaluation harness
evals/ deterministic evaluation harness
scripts/ benchmark and release checks
docs/research/ methods, findings, and raw results
examples/ runnable task examples
Documentation π
| π¦ Installation & client setup | π§ Capabilities & limits | ποΈ Architecture |
| π¬ Research & benchmarks | π Compatibility policy | β Validation evidence |
| π‘οΈ Threat model | πΊοΈ Roadmap | π Changelog |
Contributing π€
Code, adapters, benchmark harnesses, verifier predicates, documentation, and threat analysis are all welcome.
- Read CONTRIBUTING.md and the Code of Conduct.
- Sign your commits under the DCO (
git commit -s). - Run
pnpm checkbefore opening a pull request. - Report vulnerabilities through GitHub private vulnerability reporting β never in a public issue.
License π
Software and documentation are licensed under the Apache License 2.0. The official logo and hero artwork are licensed under CC BY-ND 4.0; see BRAND.md. Third-party benchmark datasets retain their own licenses and are not included in this repository.
<div align="center"> <br />
Built in the open by XAGI Labs.
<sub>ATLAS MCP brand assets Β© XAGI Labs Private Limited, licensed CC BY-ND 4.0.</sub>
</div>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.