ORA
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ORA search for my past database schema decisions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ORA
Persistent memory + intelligent context for Claude Code. Save your solutions, track your decisions, learn your patterns. Across all projects.
ORA is an MCP server that turns Claude Code into an assistant with real memory and project intelligence. No more repeating your preferences, re-explaining your architecture, or losing track of past decisions.
You code → ORA remembers solutions, decisions, patterns → You reuse them everywhereQuick Start
1. Install
git clone https://github.com/black-dash77/ora-mcp.git ~/.ora/server
cd ~/.ora/server
npm install && npm run build2. Configure Claude Code
Add to the .mcp.json file at your project root:
{
"mcpServers": {
"ora": {
"command": "node",
"args": ["/Users/YOUR_USER/.ora/server/dist/index.js"]
}
}
}Note: Replace
YOUR_USERwith your system username (e.g.,/Users/john/...on Mac,/home/john/...on Linux).Tip: Place this file in
~/.claude/.mcp.jsonto enable ORA in all your projects automatically.
3. Configure CLAUDE.md (recommended)
Add these instructions to your ~/.claude/CLAUDE.md (global) or .claude/CLAUDE.md (per project) for optimal ORA integration:
# ORA — My Persistent Memory
ORA is not an external tool. It's my cognitive extension, my memory between sessions. I must use it as I would naturally consult my own memories.
---
## Core Principle
**I never read a file without first consulting ORA.**
**I never finish a significant task without enriching ORA.**
---
## Automatic Workflow
### 1. At the start of EACH session or new task
BEFORE reading files or exploring code:
ora search [topic keywords]
ora fichier search [name if known]
ora composant search [name if relevant]
This gives me:
- Already accumulated context
- Past decisions
- Already analyzed files
- Identified patterns
**If ORA has info → I use it, I don't re-read files.**
**If ORA has nothing → I explore, then I store.**
### 2. During work
Every time I:
- Understand an architecture → `ora :: ARCHITECTURE: ...`
- Make a technical decision → `ora :: DECISION: ...`
- Identify a pattern → `ora :: PATTERN: ...`
- Encounter a trap/bug → `ora :: TRAP: ...`
- Discover a convention → `ora :: CONVENTION: ...`
### 3. After each code modification
ora :: [TYPE] Description
- Files: [list]
- Changes: [summary]
- Context: [why]
- Links: [dependencies, related files]
Types: FEAT, FIX, REFACTOR, CONFIG, STYLE, DOCS, PERF, TEST
### 4. For important files
When I analyze a structural file:
ora fichier :: [path]
With content including:
- File role
- Main exports
- Key dependencies
- Patterns used
### 5. For reusable components
ora composant :: [ComponentName]
With:
- Props and their usage
- Usage patterns
- Files where it's used
---
## ORA Commands
| Command | Action |
|---------|--------|
| `ora :: [content]` | Capture a note |
| `ora fichier :: [path]` | Capture file info |
| `ora composant :: [name]` | Capture component info |
| `ora search [query]` | Search my notes |
| `ora fichier search [q]` | Search in files |
| `ora fichier list` | List memorized files |
| `ora composant search [q]` | Search components |
| `ora composant list` | List components |
| `ora show` | My memory statistics |
| `ora forget [id]` | Forget a note |
---
## Capture Formats
### General note
[TYPE] Short title
- Context: why it's important
- Details: key information
- Files: paths involved
- Links: relations with other elements
### Technical decision
DECISION: [Subject]
- Choice: what was decided
- Alternatives: what was discarded
- Reason: why this choice
- Impact: affected files/features
### Architecture / Structure
ARCHITECTURE: [Module/feature name]
- Role: what it does
- Key files: with their roles
- Flow: how data circulates
- Dependencies: what it depends on
### Identified pattern
PATTERN: [Pattern name]
- Usage: when to use it
- Example: reference file
- Convention: rules to follow
### Trap / Known bug
TRAP: [Short description]
- Symptom: what happens
- Cause: why
- Solution: how to avoid/resolve
---
## Golden Rules
1. **Context economy**: ORA allows me not to re-read the same files. If I've already analyzed a file, I consult ORA first.
2. **Smart granularity**: I store what will be useful later, not everything. An important decision > 100 lines of code.
3. **Links and relations**: Always mention related files, dependencies, context. An isolated note has little value.
4. **Update**: If I modify a file already in ORA, I update the corresponding note.
5. **Search before action**: `ora search` is my first reflex, not `Read`.
---
## Anti-patterns (what I DON'T do)
- Read a large file without searching ORA first
- End a session without capturing acquired context
- Store verbatim code (I store understanding, not code)
- Ignore ORA when the user gives me context (I store it for later)
- Ask the user for info that ORA might have
---
## Autonomy
With ORA well used, I become:
- **Faster**: no need to re-explore
- **More consistent**: I remember past decisions
- **More economical**: fewer reads = more context available
- **Smarter**: I accumulate knowledge about the project
ORA is my memory. I consult it naturally, I enrich it systematically.4. You're all set
Restart Claude Code. You can now speak naturally:
"Save in ORA: circular imports are resolved with barrel exports"
Related MCP server: memory-mcp
How it works
You talk to Claude Code normally. It uses ORA tools to store and retrieve what's useful.
Save
"Save this Button component in ORA"
"Remember in ORA: always use server actions for Next.js mutations"
"Save my tsconfig.json in ORA"
"Save the src/components folder in ORA"Retrieve
"Search ORA for how I handled auth"
"Show me my Button component from ORA"
"What are my conventions for this project?"Restore
"Run my 'Setup React Native' workflow"
"Recreate my ESLint setup from ORA"Decisions & Context (automatic)
ORA captures decisions and context proactively during your sessions:
→ You choose a library → ORA stores the decision + rationale
→ You fix a bug → ORA captures symptom → solution
→ You start a session → ORA loads full project context
→ You finish work → ORA saves a session summaryCLI Usage (without Claude Code)
ORA also works from the command line:
# See what's stored
ora stats
ora list
ora list components
# Search
ora search "auth middleware"
# View full content
ora get comp_8de180c1b5a9
# Export / Import
ora export --output backup.json
ora import backup.json
# Diagnostics
ora doctorNote: Add an alias to your
.zshrcor.bashrc:alias ora='node "$HOME/.ora/server/dist/index.js"'
The 8 Pillars
MEMORY — What you know
Stores your solutions, components, files and entire folders.
What you say | What ORA does |
"Remember that X solves Y" | Saves a problem → solution note |
"Save this component" | Stores the code + metadata |
"Save this config file" | Stores the reusable template |
"Save this folder" | Reads recursively and stores everything |
RULES — How you code
Define your conventions in .ora/rules.yaml:
"Initialize ORA rules for this project"Creates a .ora/rules.yaml file that you customize:
style:
language: typescript
indent: 2
quotes: single
naming:
files: kebab-case
components: PascalCase
functions: camelCase
preferences:
framework: next
styling: tailwind
testing: vitest
custom_rules:
- "Functional components only"
- "No any"
- "Server components by default"
avoid:
- "var"
- "inline styles"
- "console.log in production"Claude Code automatically reads this file and follows your conventions.
CONTEXT — What you're building
"Analyze this project's structure"
"Load the full context for this project"ORA scans the file tree and provides a complete project digest:
Framework: Next.js, React, Vue, Svelte, Express...
Tools: Tailwind, Prisma, Vitest, ESLint...
Database: Supabase, PostgreSQL, MongoDB, SQLite...
Language: TypeScript, Python, Rust, Go...
Recent decisions: Past architectural choices
Session history: What was done before
Git info: Current branch + recent commits
REPO — Your Git history
Claude Code sees files but not the history. ORA gives it access.
What you say | What ORA does |
"Summarize recent commits" | Shows recent history |
"Who modified this file?" | File history with authors |
"Show the diff with main" | Diff between branches |
"Generate a commit message" | Analyzes your style + suggests |
TICKET — Your GitHub issues
No more copy-pasting ticket context.
What you say | What ORA does |
"Show me issue #12" | Retrieves title, body, comments |
"What are my open issues?" | Lists repo issues |
"Close ticket #5" | Updates the status |
Requires GitHub CLI (
gh) installed and authenticated.
SMART — Your productivity coach
ORA analyzes your usage and helps you get maximum value from your memory.
What you say | What ORA does |
"How well am I using ORA?" | Coverage stats + recommendations |
"Scan this project for things to save" | Suggests capturable elements |
"What templates are available?" | Lists pre-built starter packs |
"Apply the expo-supabase template" | Populates memory with best practices |
DECISIONS — Your conversational memory
ORA remembers technical decisions made during sessions — not just code snippets.
What you say | What ORA does |
"We chose Zustand over Redux" | Stores decision + context + alternatives |
"Why did we use SQLite?" | Recalls past decisions with rationale |
"Summarize this session" | Creates a session summary |
"Show session history" | Lists past sessions + topics |
Proactive behavior (via CLAUDE.md):
Automatically captures decisions when a significant choice is made
Auto-captures bug fixes (symptom → solution)
Saves session summaries at end of productive sessions
PATTERNS — Your coding style, learned
ORA analyzes your codebase and detects your conventions automatically.
What you say | What ORA does |
"Learn my coding patterns" | Static analysis → detected conventions |
"What patterns do you know?" | Lists learned patterns with confidence |
Detected patterns include:
Naming: kebab-case files, camelCase functions, PascalCase components
Imports: named imports, relative paths, path aliases
Structure: feature-based, layer-based, app router
Components: arrow vs function, interface vs type for props
Workflows
Workflows bundle multiple ORA elements into a single package.
Create
"Create a workflow 'Auth System' with my AuthProvider component,
my middleware.ts file, and my note about JWTs"Run
"Run my Auth System workflow"→ Everything is restored at once. Ideal for starting a new project with your usual stack.
Where is the data?
~/.ora/data/ora.db ← Single SQLite database, shared across all projects100% local — nothing leaves your machine
Instant search — FTS5 index (Full-Text Search)
Cross-project — the same memory everywhere
Simple backup —
ora exportgenerates a JSON
The 35 MCP Tools
Tool | Role |
| Store a solution (problem → solution) |
| Store a component with its code |
| Store a template file |
| Store an entire folder |
| Retrieve full content by ID |
| Global full-text search |
| List by type |
| Delete an element |
| Memory stats |
Tool | Role |
| Read project conventions |
| Create the .ora/rules.yaml template |
Tool | Role |
| Analyze file tree + detect stack |
| Full project digest (structure, decisions, sessions, git) |
Tool | Role |
| Create a bundle |
| Execute (restore everything) |
| List workflows |
| Delete a workflow |
Tool | Role |
| Summarize recent commits |
| File history (who, when, why) |
| Diff between branches or commits |
| Analyze style + suggest a message |
Tool | Role |
| Retrieve a full GitHub ticket |
| List issues (filter by status/labels) |
| Close/reopen + comment |
Tool | Role |
| Memory usage stats + recommendations |
| Scan a project and suggest what to capture |
| List available template packs |
| Apply a template to populate memory |
Tool | Role |
| Store a technical decision with context |
| Search past decisions (FTS) |
| Create a session summary |
| List past sessions |
| Smart multi-type capture (bug_fix, decision, pattern, tip) |
Tool | Role |
| Analyze code and detect conventions |
| List learned patterns for a project |
Security
Protection | Detail |
Local storage | No network calls, zero cloud |
Secret detection | Alerts if API keys, tokens, passwords detected |
Auto exclusions | node_modules, .git, dist, binaries ignored |
Size limits | 1MB/file, 50MB/folder max |
CLI Commands
ora serve Start the MCP server (default)
ora init Initialize the database
ora doctor Check that everything works
ora stats Memory statistics
ora search <query> Full-text search
ora list [type] List (notes/components/files/folders/workflows/all)
ora get <id> Show full content
ora export [--output] Export everything to JSON
ora import <file> Import a backup
ora reset Reset the database
ora help HelpDevelopment
npm run dev # Dev mode (tsx hot reload)
npm run build # Compile TypeScript
npm test # Tests (vitest)
npm run lint # ESLint
npm run format # PrettierStructure
src/
├── index.ts # Entry point (MCP or CLI)
├── server.ts # MCP server, routing 35 tools
├── cli/ # Terminal commands
├── storage/ # SQLite CRUD (notes, components, files, folders, decisions, patterns, workflows)
├── tools/ # MCP tool definitions (memory, context, decisions, patterns, smart)
└── utils/ # Config, logger, parserStack
Component | Technology |
Runtime | Node.js >= 18 |
Language | TypeScript |
Database | SQLite (better-sqlite3) |
Search | FTS5 |
Protocol | MCP (Model Context Protocol) |
Config | YAML (js-yaml) |
Compatibility
ORA uses the Model Context Protocol (MCP), an open standard. It works with any MCP-compatible client:
Client | MCP Support | Configuration |
Claude Code (CLI) | Native |
|
Claude Desktop | Native |
|
Cursor | Native | Settings → MCP |
Windsurf | Native |
|
Cline (VS Code) | Native | Settings → MCP Servers |
Continue.dev | Native |
|
Configuration Examples
{
"mcpServers": {
"ora": {
"command": "node",
"args": ["/Users/YOUR_USER/.ora/server/dist/index.js"]
}
}
}{
"mcpServers": {
"ora": {
"command": "node",
"args": ["/Users/YOUR_USER/.ora/server/dist/index.js"]
}
}
}Add an MCP server with:
Command:
nodeArgs:
/Users/YOUR_USER/.ora/server/dist/index.js
Or in .cursor/mcp.json:
{
"mcpServers": {
"ora": {
"command": "node",
"args": ["/Users/YOUR_USER/.ora/server/dist/index.js"]
}
}
}Note: Replace
YOUR_USERwith your system username.
FAQ
Does ORA work with tools other than Claude? Yes. ORA uses the MCP (Model Context Protocol), an open standard. It works with Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Continue.dev, and any MCP-compatible client.
Is my data sent anywhere?
No. Everything stays in ~/.ora/data/ora.db on your machine.
Can I use ORA across multiple projects? Yes, that's the point. Memory is global and shared across all your projects.
How do I transfer my memory to another machine?
ora export generates a JSON that you can ora import elsewhere.
How much space does it take? Very little. A database with hundreds of elements is only a few hundred KB.
License
MIT
Available Tools
43 toolsora_apply_templateB
Applique un template pour pre-peupler la memoire ORA avec des notes, composants et fichiers types pour une stack donnee. Ideal pour demarrer rapidement.
Inputs: template_id (required).
ora_auto_captureA
Capture intelligente multi-type. Dispatche automatiquement vers note, decision ou composant selon le type. Utilise pour capturer rapidement un element sans choisir manuellement l'outil.
Inputs: type (required), content (required), tags, project_path.
ora_capture_componentA
Sauvegarde un composant réutilisable. Utilisé quand l'utilisateur écrit /ora composant :: [nom]
Inputs: code (required), name (required), tags, language, +3 more.
ora_capture_decisionA
Stocke une decision technique prise pendant la session. Utilise pour memoriser les choix architecturaux, de librairies, de patterns, etc. Appelle cet outil quand une decision significative est prise avec l'utilisateur.
Inputs: decision (required), tags, context, category, +4 more.
ora_capture_fileA
Sauvegarde un fichier template/config. Utilisé quand l'utilisateur écrit /ora fichier :: [nom]
Inputs: name (required), content (required), tags, file_type, +2 more.
ora_capture_folderA
Sauvegarde un dossier entier dans la memoire ORA. Lit recursivement les fichiers texte et les stocke comme une entree unique.
Inputs: path (required), name, tags, exclude, +3 more.
ora_capture_noteB
Capture une note/solution dans la mémoire ORA. Utilisé quand l'utilisateur écrit /ora :: [contenu]. Format recommandé: problème → solution
Inputs: content (required), tags, project_path.
ora_check_patternsA
Retourne les patterns appris pour un projet. Permet de verifier les conventions detectees.
Inputs: project_path (required), category.
ora_coverageA
Analyse la couverture de la memoire ORA et fournit des recommandations pour maximiser l'efficacite. Montre les pourcentages par categorie et suggere les prochaines actions prioritaires.
Inputs: no named parameters.
ora_create_workflowB
Cree un workflow (bundle) qui regroupe plusieurs elements ORA. Permet de restaurer un ensemble de notes, composants, fichiers et dossiers en une seule commande.
Inputs: name (required), items (required), tags, description, +1 more.
ora_deleteB
Supprime un élément de la mémoire. Utilisé pour /ora forget [id]
Inputs: id (required), type (required).
ora_delete_workflowB
Supprime un workflow.
Inputs: id (required).
ora_getB
Recupere le contenu complet d'un element ORA par son ID. Utilise pour restaurer des fichiers, composants ou dossiers dans un projet.
Inputs: id (required).
ora_get_rulesA
Lit les conventions du projet depuis .ora/rules.yaml. Retourne les regles de style, architecture, nommage et preferences du projet.
Inputs: project_path (required).
ora_get_structureA
Analyse la structure d'un projet et retourne l'arborescence des fichiers, les fichiers cles detectes, et le stack technique identifie.
Inputs: project_path (required), depth, exclude.
ora_git_commit_styleA
Analyse le style des commits du repo et suggere un message pour les changements actuels (stages).
Inputs: project_path.
ora_git_diffA
Affiche le diff entre deux branches, commits, ou le diff actuel. Peut filtrer par fichier.
Inputs: from (required), to, file_path, project_path.
ora_git_file_historyB
Montre qui a modifie un fichier, quand et pourquoi. Suit les renommages.
Inputs: file_path (required), limit, project_path.
ora_git_summaryA
Resume les derniers commits du repo. Montre l'historique recent avec hash, auteur, date et message.
Inputs: limit, branch, project_path.
ora_human_activateA
Activer une personnalite pour cette session. Tous les souvenirs seront lies a ce human.
Inputs: name (required).
ora_human_createB
Creer une nouvelle personnalite nommee. Chaque human a sa propre memoire et personnalite qui evolue au fil des sessions.
Inputs: name (required), description, personality.
ora_human_evolveA
Faire evoluer la personnalite et les traits du human actif. Les traits sont fusionnes (pas remplaces).
Inputs: traits, personality.
ora_human_forgetB
Oublier les vieux souvenirs sans importance du human actif. Garde les souvenirs a fort impact et frequemment rappeles.
Inputs: min_access, min_impact, max_age_days.
ora_human_introspectA
Snapshot de l'etat mental du human actif : personnalite, traits, 5 derniers souvenirs. A utiliser au debut de chaque session.
Inputs: no named parameters.
ora_human_listA
Lister toutes les personnalites disponibles avec leurs statistiques.
Inputs: no named parameters.
ora_human_recallB
Chercher dans les souvenirs du human actif avec scoring neuronal. Les souvenirs recents, importants et emotionnels sont privilegies.
Inputs: query (required), limit, min_impact, project_path.
ora_human_rememberB
Stocker un souvenir de conversation pour le human actif. Inclut le contexte emotionnel, les intentions et les resultats.
Inputs: content (required), mood, tags, intent, +6 more.
ora_init_rulesC
Cree un fichier .ora/rules.yaml template dans le projet. Permet au developpeur de definir ses conventions.
Inputs: project_path (required).
ora_learn_patternsA
Analyse le code source d'un projet et detecte les patterns de codage (nommage, imports, structure, composants). Stocke les patterns detectes avec un score de confiance.
Inputs: project_path (required), categories.
ora_listC
Liste les éléments stockés. Utilisé pour /ora composant list, /ora fichier list, etc.
Inputs: type (required), sort, limit.
ora_list_workflowsC
Liste tous les workflows disponibles.
Inputs: limit.
ora_project_contextA
Retourne un digest complet du projet: structure, stack, rules, decisions recentes, sessions passees, notes/composants lies, et infos git. Appelle cet outil au debut d'une conversation pour comprendre le contexte du projet.
Inputs: project_path (required).
ora_recall_decisionsA
Recherche dans les decisions passees. Utilise pour retrouver pourquoi un choix technique a ete fait.
Inputs: query (required), limit, category, project_path.
ora_run_workflowB
Execute un workflow: recupere le contenu complet de tous les elements du bundle. Retourne tout le contenu pour que Claude Code puisse le restaurer dans le projet.
Inputs: id (required).
ora_searchA
Recherche dans la memoire ORA (notes, composants, fichiers, dossiers). Utilise quand l'utilisateur a un probleme ou cherche quelque chose, ou pour /ora search [query].
Inputs: query (required), tags, type, limit, +1 more.
ora_session_historyB
Liste les sessions de travail passees. Permet de voir l'historique des conversations et ce qui a ete accompli.
Inputs: limit, project_path.
ora_session_summaryA
Cree un resume de la session de travail actuelle. Appelle cet outil a la fin d'une session productive pour garder une trace du travail accompli.
Inputs: summary (required), topics, project_path.
ora_statsB
Retourne les statistiques de la mémoire ORA. Utilisé pour /ora show
Inputs: no named parameters.
ora_suggestA
Analyse le projet courant et suggere les elements a capturer dans ORA (configs, composants, hooks, patterns). Compare avec ce qui est deja stocke.
Inputs: project_path (required).
ora_templatesB
Liste les packs de templates disponibles (pre-construits par type de projet). Chaque template contient des notes, composants et configs types pour une stack.
Inputs: category.
ora_ticket_getA
Recupere le contenu complet d'un ticket GitHub Issue (titre, description, commentaires, labels, assignees).
Inputs: issue_number (required), repo, project_path.
ora_ticket_listB
Liste les issues GitHub du repo courant ou specifie. Filtre par statut et labels.
Inputs: repo, limit, state, labels, +1 more.
ora_ticket_updateB
Met a jour le statut d'un ticket GitHub (close/reopen). Peut ajouter un commentaire.
Inputs: action (required), issue_number (required), repo, comment, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
Each tool has a clearly distinct purpose: capture types (note, decision, component, file, folder) are separated, human management tools are unique, git and ticket tools are specific. The only potential overlap is ora_auto_capture, but it is explicitly an intelligent dispatch that does not replace manual choices.
All tools follow the 'ora_<verb>_<noun>' pattern with consistent prefixes like 'capture_', 'human_', 'git_', 'ticket_', 'workflow_'. The naming is uniform and predictable across all 43 tools.
With 43 tools, the count is well above the typical well-scoped range (3-15). While the server covers a broad domain, the number of tools feels excessive and may overwhelm an agent, making selection harder.
The tool set covers creation, retrieval, search, listing, and deletion for most memory types, plus session and human management. However, missing update/edit functionality for captured items (notes, decisions, etc.) is a minor gap.
Related MCP Connectors
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Private memory for AI agents: save and recall facts across Claude Code, Codex, Cursor and ChatGPT.
Long-term memory for Claude, ChatGPT, Cursor: search, save and organize notes, links, docs, videos.
Related MCP Servers
- AlicenseAqualityDmaintenancePersistent memory for Claude Code. Automatically indexes every conversation and provides production-grade hybrid search (BM25 + vectors + reranker) via MCP tools. 100% local, zero config, zero API keys, zero invoice.1642 npm8MIT
- AlicenseAqualityDmaintenancePersistent memory and automatic git snapshots for Claude Code, capturing decisions, patterns, and architecture across sessions.10118 npm100MIT
- AlicenseNot gradedqualityDmaintenanceGives Claude Code long-term memory that persists across sessions via hybrid BM25 and vector semantic search, with multi-project isolation.23 npm8MIT
- AlicenseNot gradedqualityDmaintenancePersistent memory for Claude Code — a self-evolving knowledge layer that survives across sessions, grows from every conversation, and surfaces relevant context automatically.14MIT