Ontology Atlas MCP Server
Understand what your codebase builds, why it is structured that way, and what a change could affect. One shared Markdown ontology for humans and coding agents—visualized for people, accessible to agents through MCP, and reviewed with Git. Local-first. Open source.
Ontology Atlas is an open-source mcp server by wlsdks, written mainly in TypeScript, with 147 GitHub stars and the MIT license. Its code was last updated Oct 26, 2026.

Why
Coding agents now change code faster than a team can keep a picture of it in their heads. Atlas keeps that picture beside the code: what each part is for, which files implement it, what depends on what, and what nobody knows yet. Your agent reads it before a task and proposes updates after; you keep, correct or reject each change as a Markdown diff.
- Your agent starts with context. Claude Code, Codex, Cursor and Antigravity read the concepts, code paths, dependencies and open questions a task touches, over MCP.
- You own the record. One Markdown file per concept in an
atlas/folder, versioned and reviewed in Git like the code. - You decide what is true. Agent proposals stay proposals until you accept them.
- It says what it does not know. A line on the map is a declared relationship, not proof of runtime impact; missing evidence shows as unknown, never as safe. Compact task handoffs preserve whole uncertainty statements or report omissions with the document reads needed to inspect them. Initial analysis also excludes literal Markdown examples and marks truncated document evidence for review with a hash-bound original-source follow-up. Task matching and navigation use authored evidence; code examples, hidden comments and blockquotes cannot supply capability claims or work coordinates.
See it
<table> <tr> <td width="50%"><img src="public/gateway/projects.en.png" alt="Projects: each project with its domains, capabilities and code-evidence state" /><br /><b>Projects</b> — every project and how much of it has code evidence.</td> <td width="50%"><img src="public/gateway/library.en.png" alt="Library: sources on the left, the wiki pages written from them, and the concepts those pages name" /><br /><b>Library</b> — documents in, cited wiki pages out.</td> </tr> <tr> <td width="50%"><img src="public/gateway/planning.en.png" alt="Planning: a project folder's Markdown files listed on the left, one document open on the right" /><br /><b>Planning</b> — read a project folder's Markdown in place, without copying it.</td> <td width="50%"><img src="public/gateway/changes.en.png" alt="Changes: one week of commits, each with its date" /><br /><b>Changes</b> — what was merged in a period, counted and grouped, with the pull requests, commits and files behind it.</td> </tr> <tr> <td width="50%"><img src="public/gateway/git.en.png" alt="Git: an unsaved concept change with its exact Markdown diff" /><br /><b>Git</b> — the exact Markdown diff before you save.</td> <td width="50%"><img src="public/gateway/harness.en.png" alt="Harness: what the repository tells, blocks and watches for its coding agents" /><br /><b>Harness</b> — what your repository tells, blocks and watches for agents.</td> </tr> <tr> <td width="50%"><img src="public/gateway/automations.en.png" alt="Automations: scheduled checks that keep the folder current" /><br /><b>Automations</b> — scheduled checks that keep the folder current.</td> </tr> </table>New in v1.9: Git and pull request briefings, which read a repository's pull requests, commits and files in separate views, and Planning, which reads a project folder's Markdown in place. See the releases.
A few things worth knowing before you start:
- The map shows declared relationships, not proof of runtime impact; its key explains every mark and direction. Map
- An empty folder offers its start actions, and a failed start can be retried without overwriting files. Popup tours are retired. First run
- Library setup and checks need the app; a browser offers the app or adding files. Library
- Planning is read-only and works in the macOS app on a folder you choose; it shows Markdown and PNG/JPEG images. Planning
- Git's send-only action does not commit new file changes; it asks you to review a stale folder or branch again. Pull can change files across the repository. Git
- Before a folder is connected, the app keeps Library, Planning, Agents and Changes reachable. Features
Quick start
- Install the app from the download page, or open the browser version.
- Open a folder. Atlas reads its Markdown in place, or starts an
atlas/folder in your repository, and shows the path before it writes anything. - Connect your agent. In Agents › MCP, press Connect for your tool, restart the agent, and ask about your next task.
macOS (Apple Silicon) is signed and notarized and carries the MCP server inside the app. Windows x64 is an unsigned beta. On Linux, use the browser version or run the CLI and MCP server from a source checkout. Releases list each version's files and checksums.
How it works
your-repo/
├── src/
└── atlas/ ← cloned, branched and reviewed with the code
├── project.md
├── domains/ capabilities/ elements/
├── sources/ documents kept exactly as they arrived
└── wiki/ pages written from those sources, every fact cited
A Markdown file whose frontmatter has kind: is one concept. Its uid never
changes, its slug is its current address, and its path names the code it
describes. The map, documents, Library and Git screens all read these
files.
Your agent reaches the folder two ways:
- MCP: the agent starts the Atlas MCP server, which reads and writes the folder on disk, even with the app closed. Connect an agent · MCP reference
- ACP: Claude Agent and Codex also run in the app's own chat; each write waits until you allow it. Agents
A project's source-path repair opens the affected concept and recorded relative path; stale or missing targets require remeasurement.
Project checks distinguish a document changed since its last meaning review from malformed input. They ask for review and explicit re-finalization; supported code paths and saved changes do not accept the meaning.
Codex's locally configured permission profiles are excluded from the in-app mode picker because their effective approval behavior is not disclosed. Read-only startup stays required; an unsolicited move into a profile is reported as unverified, without claiming the runtime was stopped.
The full project editor confirms leaving unsaved changes inside the app, so Cancel and Back work in the macOS WebView as well as the browser.
Local-first
The installed app's Changes screen opens a chosen Git repository without requiring an ontology. Pull requests, commits and files have separate reading views. An explicit public GitHub read lists PRs updated in the selected local dates, including open and closed work; a moving, paginated list may be incomplete. Each PR original is attributed and remains inspectable. Commit-only summaries use a local model, while the separately labelled earlier combined briefing retains matched PR descriptions and earlier results. Private PR access and in-app ACP explanations are not yet available in the PR inventory. Failed reads retain the session's earlier results. Inspect individual commit messages and bounded, endpoint-based file comparisons inside Atlas. Author records and optional ontology grouping do not establish verified behavior changes. Change briefing
- No backend, account or telemetry. The folder stays plain Markdown on your disk.
- Model calls with your API key or a local model are opt-in, and each records its destination in
.ontology-atlas/llm-audit.jsonl. - A connected coding agent may send your prompt and what it reads to its own provider; Atlas's log does not cover those transfers.
Status
Atlas is early. Our benchmark has not yet shown better answers with Atlas, and Atlas was slower (the correction). Construction trials, their failures and limits are in the construction measurements.
Documentation
What is Atlas? · First five minutes · What becomes a node? · Relations · Specification · Features · CLI · Architecture
Contributing
Read CONTRIBUTING.md; external pull requests come from forks. AGENTS.md is the contract for people and agents alike.
pnpm install
pnpm dev
pnpm checks:changed -- --run
pnpm pr:land <number> merges a reviewed pull request and keeps its original
commits. Development checks covers choosing checks,
CI internals and lane budgets.
Pre-push checks the commit being pushed and runs affected lint, unit and Node tests in parallel with the relevant cheap checks. CI owns browser, full contract and dependency-graph verification. Test-only edits to CI tooling run their regressions without starting unrelated product suites; changes to the planner implementation still require exhaustive CI.
<details> <summary><b>Repository commands</b></summary>| Command | What it answers |
|---|---|
node scripts/ci/run-playwright-ci.mjs --help | Browser shard options, without discovering or running tests; unknown options fail before execution |
pnpm agents:check | Each harness's instruction files are valid; Codex and Claude files need not match |
pnpm brand:sprites | Rebuild Moru sprites, 74 animation exports, 16 poses and compass sizes from retained project sources; inspect assets/brand/moru/preview.html |
pnpm brief:new -- --slug=<slug> --owns=<path,...> | A delegation brief with the port, scratch, checks and merge lines filled in |
pnpm build:static | Reuse out/ only for matching build inputs; fail without a reuse stamp if inputs change during the build |
pnpm bundle:plan · pnpm bundle:prune | Plan merging several branches as one, then prune the branches main contains (/merge) |
pnpm checks:changed | Which gates this change needs |
pnpm conflicts:scan | Which open pull requests change the same files as this branch, and whether a trial merge conflicts |
pnpm decisions:find <terms> · pnpm decisions:check | The decision to cite or overturn, and whether this change owes one |
pnpm design:tokens -- [--prefix=<name>] | The current token ramps, resolved from app/styles |
pnpm doc:new -- --type=<kind> --area=<area> --slug=<slug> | A new living document from its template in docs/.templates/ |
pnpm docs:check | Docs gates, including pnpm docs:language, pnpm source:language, pnpm changelog:check, pnpm dev-checks:check, pnpm docs:meta |
pnpm docs:meta · pnpm doc:history -- <path> | Every living document's kind, status and area; one document's commits across moves |
pnpm docs:move | Moves the documents in docs/.moved.json and rewrites references (-- --check only reports) |
pnpm e2e:durations -- <timings dir> | Rebalances the browser shards from downloaded playwright-timings-* reports |
pnpm e2e:sleeps:check | Refuses a new fixed waitForTimeout without a // measurement window: note |
pnpm gates:yield -- --runs=200 | Which CI checks ever failed, per run, from the lane reports CI uploads |
pnpm gateway:capture -- --base-url=<static export> | Re-shoots the six app screens on the download page, in Korean and English |
pnpm harness:tokens -- --since=<date> | Where Claude Code tokens went per agent type, from local transcripts, and which runs broke the compaction window or turn caps (budget) |
pnpm knip | Dead files, exports and types |
pnpm licenses:check · pnpm notice:build · pnpm notice:check | Shipped packages are on the license allow-list, and NOTICE.md is current (rules) |
pnpm messages:build · pnpm messages:check · pnpm messages:adopt | Compose messages/<locale>.json from one file per namespace, prove it current, and carry an old branch's edits |
pnpm messages:coverage -- --locale <code> | Checks one locale's strings against en: arguments, plurals, script, keep-terms and typography |
pnpm perf:mcp:memory · pnpm perf:mcp:memory:check | Whether the MCP server releases memory across repeated calls; about a minute |
pnpm pr:ci <n> | Fire CI on a draft now |
pnpm pr:land --plan <n...> · pnpm pr:land --conduct | Dry-run a merge, or merge queued pull requests until the queue is empty |
pnpm pr:land <n> · pnpm pr:queue | Queue a pull request to merge (green ones merge together behind one CI run), and show the queue |
pnpm review:facts -- --base=<ref> | The mechanical facts a reviewer would otherwise count by hand: line growth, 800-line files, export and dependency changes, untouched sibling tests, security paths |
pnpm seo:check | After pnpm build: every sitemap URL in out/ canonicalizes to itself, / and each locale root point at /{locale}/download/, and titles and descriptions are unique per locale |
pnpm typecheck | Types across every file, with Next's generated route and page types |
pnpm ui:audit -- --url=<base> --route=<path> [--setup=<module.mjs>] | Prepare an interactive state with an optional local module, then measure rendered facts per width: horizontal overflow, occluded or unreachable controls, small touch targets, off-ramp type/radius/shadow values, low contrast, unequal repeated sets, scroll-end reserve |
pnpm ui:look -- --route=<path> [--vault=fixture|sample|<dir>] [--widths=1440] [--audit] | Builds and serves the static export on a free port (or uses --url), opens each route with a vault attached, and prints one screenshot path per route and width |
Use --scope=<selector> to audit one visible modal or region. The selector must match exactly one visible element; the report includes its measured element count.
Moru
Moru is Atlas's pixel seal companion; the compass is the app identity. The project includes 74 motions, 16 poses and their sources. Open the local motion studio to play, pause and inspect every frame.
At folder entry, Moru greets, offers a small folder and waits. Play gives way to the existing waiting view when a folder opens. The download invitation uses a separate welcome. Hops travel only while airborne; hovering lets a hop land before Moru waits. Pet Moru for a brief shy, clap, dance, thinking, pondering, hearts, laughter or flipper-groove response; right-click Moru or press Shift+F10 for pause/resume. No playback button sits beside the character. Reduced motion keeps a still expression.
New 32-pose gestures add a bow, flipper five and hat greeting to petting; the download welcome also offers a fish trick. A small wordless bubble answers touch with a heart, note or sparkle and occasionally accompanies a return hop. Waiting stays quiet. Peekaboo, rosy temper and bubble play are available in the catalogue.
Moru now keeps its rounded shape during the small nod. Play combines three phrases with different quiet rests; petting varies the order while avoiding the two most recent gestures. Waiting remains gentle and stationary.
Four new 32-pose encounters add nose-star balancing, a sparkle sneeze, peekaboo with a pup and a heart gift; the flipper groove is also redrawn with 32 poses. The second pet reveals a playful encounter, then the complete repertoire varies without recent repeats. A pup occasionally peeks out during idle play. Folder entry offers 14 reactions; the download welcome offers 18, including silent singing and bubble chasing. Prop-led scenes keep their own headroom clear of extra speech bubbles.
<img src="assets/brand/moru/moru-poses-showcase.png" width="400" height="400" alt="Moru" /> <details> <summary>Open motion samples</summary> <img src="assets/brand/moru/animated/gif/authored/moru-wave.gif" width="128" height="128" alt="Moru greeting" /> <img src="assets/brand/moru/animated/gif/authored/moru-source-read.gif" width="128" height="128" alt="Moru reading source" /> <img src="assets/brand/moru/animated/gif/authored/moru-await-permission.gif" width="128" height="128" alt="Moru waiting for a person" /> <img src="assets/brand/moru/animated/gif/authored/moru-clap.gif" width="128" height="128" alt="Moru celebrating observed completion" /> <img src="assets/brand/moru/animated/gif/authored/moru-sing.gif" width="128" alt="Moru singing" /> <img src="assets/brand/moru/animated/gif/authored/moru-fish-play.gif" width="128" alt="Moru and a fish" /> <img src="assets/brand/moru/animated/gif/authored/moru-dance.gif" width="128" alt="Moru dancing" /> <img src="assets/brand/moru/animated/gif/authored/moru-chorus.gif" width="128" alt="Moru chorus" /> <img src="assets/brand/moru/animated/gif/authored/moru-shy.gif" width="128" alt="Moru smiling shyly" /> <img src="assets/brand/moru/animated/gif/authored/moru-friend-play.gif" width="128" alt="Moru playing ball with a friend" /> <img src="assets/brand/moru/animated/gif/authored/moru-pup-cuddle.gif" width="128" alt="Moru cuddling three pups" /> <img src="assets/brand/moru/animated/gif/authored/moru-rainy-day.gif" width="128" alt="Moru with an umbrella in the rain" /> <img src="assets/brand/moru/animated/gif/authored/moru-snow-day.gif" width="128" alt="Moru watching snowflakes" /> <img src="assets/brand/moru/animated/gif/authored/moru-breeze.gif" width="128" alt="Moru in a little breeze" /> <img src="assets/brand/moru/animated/gif/authored/moru-somersault.gif" width="128" height="128" alt="Moru doing a somersault" /> <img src="assets/brand/moru/animated/gif/authored/moru-toy-fishing.gif" width="128" height="128" alt="Moru playing with a fishing-line toy" /> <img src="assets/brand/moru/animated/gif/authored/moru-laptop-code.gif" width="128" height="128" alt="Moru coding on a laptop" /> <img src="assets/brand/moru/animated/gif/authored/moru-thinking.gif" width="128" height="128" alt="Moru thinking" /> <img src="assets/brand/moru/animated/gif/authored/moru-pondering.gif" width="128" height="128" alt="Moru pondering" /> <img src="assets/brand/moru/animated/gif/authored/moru-hearts.gif" width="128" height="128" alt="Moru sending little hearts" /> <img src="assets/brand/moru/animated/gif/authored/moru-laugh.gif" width="128" height="128" alt="Moru giggling" /> <img src="assets/brand/moru/animated/gif/authored/moru-frown.gif" width="128" height="128" alt="Moru frowning thoughtfully" /> <img src="assets/brand/moru/animated/gif/authored/moru-grumpy.gif" width="128" height="128" alt="Moru with a tiny temper" /> <img src="assets/brand/moru/animated/gif/authored/moru-flipper-groove.gif" width="128" height="128" alt="Moru dancing with its flippers" /> <img src="assets/brand/moru/animated/gif/authored/moru-ontology-orbit.gif" width="128" height="128" alt="Moru watching a floating ontology model" /> <img src="assets/brand/moru/animated/gif/authored/moru-ontology-dance.gif" width="128" height="128" alt="Moru dancing with a floating ontology" /> <img src="assets/brand/moru/animated/gif/authored/moru-soft-bow.gif" width="128" height="128" alt="Moru bowing softly" /> <img src="assets/brand/moru/animated/gif/authored/moru-hat-tip.gif" width="128" height="128" alt="Moru tipping a tiny hat" /> <img src="assets/brand/moru/animated/gif/authored/moru-magic-fish.gif" width="128" height="128" alt="Moru revealing a magic fish" /> <img src="assets/brand/moru/animated/gif/authored/moru-peekaboo.gif" width="128" height="128" alt="Moru playing peekaboo" /> <img src="assets/brand/moru/animated/gif/authored/moru-warm-temper.gif" width="128" height="128" alt="Moru blushing with a tiny temper" /> <img src="assets/brand/moru/animated/gif/authored/moru-flipper-five.gif" width="128" height="128" alt="Moru offering a flipper five" /> <img src="assets/brand/moru/animated/gif/authored/moru-folder-peek.gif" width="128" height="128" alt="Moru peeking into a folder" /> <img src="assets/brand/moru/animated/gif/authored/moru-bubble-chase.gif" width="128" height="128" alt="Moru chasing a bubble" /> <img src="assets/brand/moru/animated/gif/authored/moru-nose-balance.gif" width="128" height="128" alt="Moru balancing a star" /> <img src="assets/brand/moru/animated/gif/authored/moru-star-sneeze.gif" width="128" height="128" alt="Moru sneezing sparkles" /> <img src="assets/brand/moru/animated/gif/authored/moru-pup-peek.gif" width="128" height="128" alt="Moru playing with a pup" /> <img src="assets/brand/moru/animated/gif/authored/moru-heart-gift.gif" width="128" height="128" alt="Moru offering a heart" /> </details>License
MIT. Third-party notices are in NOTICE.md, and the full license texts in public/third-party-licenses.txt. The pixel mascot and its sources are described in Brand.
Ontology Atlas alternatives
View more →Similar mcp servers in Coding Agents, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Ontology Atlas (this page) wlsdks | 147 | MIT | Oct 26, 2026 | Scanned, no flagged issues |
| Context Mode mksglu | 33k | None found | Nov 1, 2026 | Not scanned yet |
| Serena oraios | 31k | None found | Oct 28, 2026 | Not scanned yet |
| Fastmcp PrefectHQ | 28k | Apache-2.0 | Nov 1, 2026 | Scanned, no flagged issues |
| Nuclear nukeop | 19k | AGPL-3.0 | Nov 1, 2026 | Scanned, no flagged issues |
| MCP For Beginners microsoft | 18k | MIT | Oct 30, 2026 | Scanned, no flagged issues |