ChatAtlas-local
Use ChatAtlas Local’s read-only MCP tools to explore a local archive of ChatGPT, Claude, and other AI conversations.
Search chats by words in titles/messages, with platform, tag, and date filters; returns chat IDs and best-matching quotes.
Browse or list chats newest first with platform, date, title, tag, and pagination filters.
Read a specific chat message by message, with pagination for long chats and long messages.
View recent topics over a date range, including platform counts, top tags, and weekly chat titles.
Get an archive overview: chats per platform, date coverage, tags in use, and last import time.

You've had hundreds of conversations with AI assistants. The good answers, the decisions, the half-finished plans are scattered across ChatGPT and Claude, and their own search barely helps.
ChatAtlas Local takes the data exports both of them already give you and keeps every chat in one file on your computer. Then you can:
Search everything at once, from the terminal or in your browser.
Ask Claude about it: "what did ChatGPT tell me about my sourdough starter?" or "find the chat where I planned the garden beds." Claude Desktop, Claude Code, Cursor, VS Code and others can read your archive through MCP.
Keep it forever, as plain Markdown files or a backup, whatever happens to the apps.
No account, no server, no telemetry. It never connects to the internet.
Get started
You need Node.js 22.16 or newer (or 24). Then:
npm install -g chatatlas-localBefore the first npm release, install it straight from GitHub: npm install -g github:hnt504/chatatlas-local
1. Ask for your exports
ChatGPT: Settings → Data controls → Export data. You get an email with a link to a .zip.
Claude: Settings → Privacy → Export data. Same idea: an email, then a .zip.
2. Bring them in
chatatlas-local import ~/Downloads/<your ChatGPT export>.zip ~/Downloads/<your Claude export>.zip✓ 6720ab…-2026-10-21.zip: ChatGPT, 1,284 chats (1,284 new)
✓ data-2026-10-21.zip: Claude, 412 chats (412 new)Do it again whenever you like with a newer export: new chats come in, changed ones update, nothing doubles up. Or let it happen by itself (see Exports folder).
One Claude chat, every branch. On claude.ai, Retry or editing a message hides the old reply behind a small version switcher, and the next sync of most tools keeps only what is on screen. To save a chat with all of its branches, open it in Chrome, press F12, choose Console, and paste:
(async () => {
const id = location.pathname.match(/\/chat\/([0-9a-f-]+)/)[1];
const [org] = await fetch('/api/organizations').then((r) => r.json());
const chat = await fetch(`/api/organizations/${org.uuid}/chat_conversations/${id}?tree=True&rendering_mode=messages&render_all_tools=true`).then((r) => r.json());
const a = Object.assign(document.createElement('a'), { href: URL.createObjectURL(new Blob([JSON.stringify(chat)])), download: `claude-${id}.json` });
a.click();
})();Then chatatlas-local import claude-<id>.json. The branch on screen comes first; each hidden
branch follows it, opening with "Earlier version, hidden on claude.ai by a retry or an edit."
3. Look around
chatatlas-local search sourdough starter
chatatlas-local open # the browser view in the screenshot aboveRelated MCP server: chron
Connect Claude (and friends)
Claude Desktop
Either download chatatlas-local-<version>.mcpb from the
latest release and open it with
Claude Desktop (it asks where your exports go; no terminal needed), or, with the command
installed:
chatatlas-local setup claude-desktop --writeQuit Claude Desktop completely and open it again. Then ask it something like "Search my old chats for the kitchen remodel estimate."
About the red warning. When you open the extension, Claude Desktop says installing it "will grant this extension access to everything on your computer." It says that for every extension installed from a file rather than from Anthropic's directory, because an extension is a program that runs as you. Here's what this one actually does: it reads your exports and its own archive file, never connects to the internet, and gives Claude read-only tools. The code is all here to check.
Claude Code
Install it as a plugin (the MCP tools and a skill that teaches Claude when to look here):
/plugin install chatatlas-local --marketplace hnt504/chatatlas-localOr, with the command installed:
chatatlas-local setup claude-code --write # the MCP tools, for every project
chatatlas-local skill # teaches Claude Code when to look hereCursor, VS Code, Windsurf, Gemini CLI, Codex
chatatlas-local setup # shows each app's settings, and whether it's connected
chatatlas-local setup cursor --write # or vscode, windsurf, gemini-cli, codex--write keeps a copy of the app's old settings file next to it before changing anything.
What about ChatGPT?
ChatGPT can't reach a file on your computer, so it can't read your archive here. You can still import your ChatGPT exports and search them from Claude, the terminal or the browser view.
What the assistant can do
Everything is read-only. An assistant can find and read your chats; it can't change, tag or delete anything.
Tool | What it does |
| Chats holding every word you asked about, with the best-matching message quoted |
| Browse by platform, date, words in the title, or tag |
| Read a conversation message by message (long ones a page at a time) |
| What you talked about over a stretch of days, week by week |
| What the archive holds and how far back it goes |
An exports folder
Point ChatAtlas Local at a folder (your Downloads, say) and any ChatGPT or Claude export you save there comes in by itself. Other files are left alone, and each file is only read once.
chatatlas-local watch ~/Downloads # until you press Ctrl+C
chatatlas-local setup claude-desktop --inbox ~/Downloads --write # whenever Claude Desktop is openThe Claude Desktop extension asks for this folder when you install it.
Commands
Command | |
| A ChatGPT or Claude export (the .zip, its |
| Chats holding every word. Each word also finds longer words it starts ("plan" finds "planning"); accents don't matter |
| Newest first |
| Read one chat. |
| What you talked about lately ( |
| Chats per platform, chats per month, your tags |
| The browser view. |
| Tag a chat ( |
| Take chats out of the archive |
| Every chat as a Markdown file, or |
| Bring in exports saved there, and keep watching |
| Connect an assistant |
| Install the Claude Code skill |
| Check Node, the archive, the search index and every connected app |
| Where the archive file is |
Filters for search, list, export and topics: --platform chatgpt, --tag work,
--since 2025-03, --until 2026, --title garden, --limit 50, --offset 50, --json.
Privacy policy
ChatAtlas Local is a program that runs on your computer. It has no servers and no accounts.
What it collects: nothing. It has no analytics, telemetry or crash reporting, and never makes a network connection.
What it stores, and where: the chats from the exports you import, plus any tags you add, in one SQLite file on your computer:
~/.chatatlas-local/chatatlas.db(chatatlas-local wheresays exactly where). Use another with--db <file>or theCHATATLAS_LOCAL_DBsetting. It reads your export files and doesn't change or delete them.Sharing: ChatAtlas Local shares nothing with anyone, including its author. If you connect an AI assistant (Claude Desktop, Claude Code, Cursor and so on), that assistant can search and read your archive through read-only tools when you ask it to, and what it reads becomes part of your conversation with it, under that assistant's own privacy policy.
The browser view listens on
127.0.0.1only, answers only requests addressed to it, and every request needs a random key that only the tab it opened knows.How long it's kept: until you delete it.
chatatlas-local forget <id>removes a chat; removing the~/.chatatlas-localfolder removes everything. Your ChatGPT and Claude accounts are never touched.Installing: npm (or GitHub, for the Claude Desktop extension) serves the download under its own terms; after that, nothing goes over the network.
Contact: questions go to GitHub issues; anything that could expose someone's chats goes privately through security advisories.
ChatAtlas Local and ChatAtlas Pro
ChatAtlas Local is free and open source, and stays that way. ChatAtlas Pro is the hosted version, for people who want more:
Local | Pro | |
ChatGPT and Claude exports | ✓ | ✓ |
Search by words | ✓ | ✓ |
Claude Desktop, Claude Code, Cursor and more | ✓ | ✓ |
Your data stays on your computer | ✓ | Kept in your account |
Gemini, Grok, Perplexity, DeepSeek and more | Through a ChatAtlas backup | ✓ |
Search by meaning | ✓ | |
ChatGPT and claude.ai on the web | ✓ | |
Folders, projects, any device | ✓ |
They speak the same backup format: chatatlas-local export <folder> --format chatatlas makes a
file ChatAtlas Pro imports, and a ChatAtlas backup comes into ChatAtlas Local the same way.
Questions
Which Node do I need? 22.16 or newer, or 24 and up (23 won't do), because ChatAtlas Local uses the SQLite database built
into Node. chatatlas-local doctor checks.
A chat I had yesterday isn't there. The archive holds what was in the exports you imported. Ask for a fresh export and import it (or drop it in your exports folder).
Can it read exports from Gemini or other apps? Not directly yet. ChatAtlas backups can carry chats from any platform, and support for more exports is welcome as a pull request.
How big does it get? About the size of the exports' text. A 60 MB export of 3,000 chats imports in about two seconds and searches in well under a tenth of a second.
Contributing
Bug reports and pull requests are welcome. See CONTRIBUTING.md.
License
Available Tools
5 toolsarchive_overviewArchive overviewARead-onlyIdempotent
What the archive holds: how many chats from each platform, the dates they cover, the tags in use and when it was last imported.
Inputs: no named parameters.
list_chatsList chatsARead-onlyIdempotent
Browse the user's saved conversations, newest first, by platform, date, words in the title or tag. Each line has the chat's id for read_chat.
Inputs: tag, limit, since, title, +3 more.
read_chatRead a chatARead-onlyIdempotent
Read one saved conversation, message by message, numbered from 1. Long chats come a page at a time: carry on with from_message. A very long single message comes in parts: carry on with part.
Inputs: chat (required), part, from_message.
recent_topicsRecent topicsBRead-onlyIdempotent
What the user talked about with their AIs over a stretch of days: how many chats on each platform, the tags that come up most, and the chats' titles week by week.
Inputs: days, platform.
search_chatsSearch chatsARead-onlyIdempotent
Find the user's saved conversations that mention something: chats holding every word of the query in the title or messages (each word also matches longer words it starts, accents ignored), title matches first, then newest, with the best-matching message quoted. Each result has the chat's id for read_chat.
Inputs: query (required), tag, limit, since, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a distinct primary purpose: aggregate overview, content search, filtered browsing, single-chat reading, and recent topic summarization. The main overlap is between search_chats and list_chats, since both can find chats by title words, but their descriptions clarify that search also scans message content while list is for browsing with metadata filters.
The names use consistent snake_case and readable vocabulary, but the convention is mixed: search_chats, list_chats, and read_chat are verb_noun, while archive_overview and recent_topics are noun phrases. This is still understandable but not a predictable single pattern.
Five tools is well-scoped for a local chat archive: overview, search, browse, read, and recent-topic summarization. Each tool covers a distinct workflow and none feels redundant or extraneous.
The surface covers the core read-only lifecycle for saved conversations: orienting with overview/topics, finding chats, browsing, and reading messages with pagination. Minor gaps exist around archive management, such as import, export, or tag editing, but these may be intentionally out of scope.
Maintenance
Related MCP Connectors
Your WhatsApp history in Claude and ChatGPT: search years of chats, voice notes transcribed.
One memory for Claude, ChatGPT and Cursor, kept on your computer. Optional sync, encrypted first.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides read-only access to local Beeper message history on macOS, enabling users to search conversations, read messages, and list recent chats through natural language queries. Supports both SQLite and IndexedDB storage formats with privacy-focused local-only operation.1-
- FlicenseNot gradedqualityCmaintenancePermanent, timestamped audit log for every AI conversation, stored locally in SQLite, owned by you.-
- FlicenseAqualityDmaintenanceEnables full-text search and browsing of Claude.ai conversation history by ingesting exported conversations into a local SQLite database with FTS5 indexes.51-
- FlicenseAqualityBmaintenanceGives agents a stable interface for durable memory, combining exact, lexical, semantic, and graph search results.32-