Codex Dev MCP Suite
Click on "Install 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., "@Codex Dev MCP Suiteget an overview of my project"
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.
Dev MCP Suite
Published as codex-dev-mcp-suite for backward compatibility.
Four local, file-based MCP servers for solo developers and vibecoders who keep losing context when sessions hit "input too long" / get compacted / restart. Stop re-pasting context across sessions.
All servers are local, dependency-light (only the MCP SDK), and split storage per-project by the working directory. Works with any MCP-capable client (Codex CLI, Claude Code, Cursor, Cline, Gemini-compatible launchers, Hermes, or any stdio MCP host).
Quickstart
Try it in 10 seconds (no clone, no config):
npx -y -p codex-dev-mcp-suite project-memory-mcp --helpLocal-first by default: no hosted backend, no telemetry. Works offline with
keyword recall; model/provider config is optional. For strict no-network mode,
set MCP_DETERMINISTIC_FALLBACK=true.
Register all four servers with an MCP client (Codex CLI shown):
# ~/.codex/config.toml
[mcp_servers.project-memory]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "project-memory-mcp"]
[mcp_servers.devjournal]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "devjournal-mcp"]
[mcp_servers.checkpoint]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "checkpoint-mcp"]
[mcp_servers.context-pack]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "context-pack-mcp"]Inspect any server without starting it:
project-memory-mcp --version
project-memory-mcp --doctor # config diagnostics; API keys redactedOther clients (Claude Code, Cursor, Cline, ...): see
docs/clients/. Full env reference:
docs/configuration.md. Data flow:
docs/privacy.md.
Related MCP server: Mono Memory MCP
The four servers
Server | What it does | Key tools |
project-memory | Searchable Markdown knowledge vault (Obsidian-style notes + on-demand recall). Notes are also exposed as MCP resources. |
|
devjournal | Per-project session timeline + handoff/resume (anti-compaction). |
|
checkpoint | Git-independent file snapshots for safe experimentation. |
|
context-pack | Token-efficient project briefing (stack, tree, symbols, search). |
|
Recall quality (project-memory & devjournal)
Recall auto-selects the best available mode:
semantic — if an embeddings endpoint is configured (any OpenAI-compatible
/v1/embeddings: OpenAI, Ollama, LM Studio, OpenRouter, vLLM, LiteLLM, 9router, ...)rerank — keyword prefilter then an LLM reranker (any OpenAI-compatible chat model)
keyword — always-available offline fallback
All network features degrade gracefully: no endpoint = keyword mode, never an error.
Use the neutral MCP_* environment variables for new installs; legacy
NINEROUTER_* and LLM_* variables are still supported. See
docs/configuration.md.
Need hard local-only behavior? Set MCP_DETERMINISTIC_FALLBACK=true to disable
embeddings/rerank even if model keys are present; results are labeled
[deterministic].
Install
Requires Node.js >= 18.
Quickest: run via npx (no clone)
Point your MCP client at the published package — no install step needed:
# Codex CLI ~/.codex/config.toml
[mcp_servers.project-memory]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "project-memory-mcp"]
[mcp_servers.devjournal]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "devjournal-mcp"]
[mcp_servers.checkpoint]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "checkpoint-mcp"]
[mcp_servers.context-pack]
command = "npx"
args = ["-y", "-p", "codex-dev-mcp-suite", "context-pack-mcp"]Or install globally: npm i -g codex-dev-mcp-suite → commands
project-memory-mcp, devjournal-mcp, checkpoint-mcp, context-pack-mcp.
From source
git clone https://github.com/<you>/codex-dev-mcp-suite.git
cd codex-dev-mcp-suite
# install the MCP SDK in each server
for s in project-memory checkpoint context-pack devjournal; do (cd "$s" && npm install); doneRegister with your MCP client
Client-specific examples:
Codex CLI (~/.codex/config.toml):
[mcp_servers.project-memory]
command = "node"
args = ["/abs/path/codex-dev-mcp-suite/project-memory/server.js"]
[mcp_servers.project-memory.env]
MEMORY_VAULT_DIR = "~/.codex/memories/vault"
# optional recall upgrades (see .env.example and docs/configuration.md)
# MCP_LLM_BASE_URL = "http://localhost:11434/v1" # any OpenAI-compatible endpoint
# MCP_LLM_API_KEY = "..."
# MCP_RERANK_MODEL = "llama3.1:8b"
[mcp_servers.checkpoint]
command = "node"
args = ["/abs/path/codex-dev-mcp-suite/checkpoint/server.js"]
[mcp_servers.context-pack]
command = "node"
args = ["/abs/path/codex-dev-mcp-suite/context-pack/server.js"]
[mcp_servers.devjournal]
command = "node"
args = ["/abs/path/codex-dev-mcp-suite/devjournal/server.js"]
[mcp_servers.devjournal.env]
JOURNAL_DIR = "~/.codex/memories/journal"Claude Code / Cursor / Cline / other MCP clients (mcpServers JSON): same
idea — use the npm bin commands (project-memory-mcp, devjournal-mcp,
checkpoint-mcp, context-pack-mcp) or node /abs/path/<server>/server.js,
with optional env.
Memory Recall Modes
memory_recall supports a mode arg (default "auto") that controls fallback behavior:
Mode | Behavior |
| Smart: try semantic → keyword → LLM rerank |
| Require embedding. Returns |
| Skip embedding entirely (faster, pure keyword scoring) |
The recall output annotates the active mode for transparency:
Recall for "how do users sign in" in my-project [semantic+rerank]:
### JWT login flow (id:..., sim:0.603, ...)The +rerank suffix is appended when LLM rerank is active (MCP_RERANK_ENABLED + key).
Without embeddings, recall falls back to [keyword] or [keyword+rerank].
With MCP_DETERMINISTIC_FALLBACK=true, the mode is always [deterministic].
This means you can run codex-dev-mcp-suite with zero API keys configured —
memory_recall still works via keyword scoring, just no semantic similarity.
New in v1.5.0
project-memory now adds a lightweight knowledge-graph layer:
memory_linkresolves wiki-style links like[[id]],[[title]], and[[project:title]], and shows backlinksmemory_global_recallsearches across projects with same-project bias and graceful keyword fallbackmemory_dedupsuggests duplicate-note merges without deleting anything
Link resolution always prefers the active project first, then falls back globally when appropriate.
Daily workflow
Session start:
pack_overview+journal_resume+memory_recall "<topic>"Before a risky change:
checkpoint_createWhile working:
memory_save(durable facts),journal_log(events/blockers)Session end / before compaction:
journal_handoff
Optional: import your existing Codex history
backfill-sessions-v2.mjs reads ~/.codex/sessions/*.jsonl and imports each
session (prompts, plan, commands, files touched) into project-memory + devjournal,
grouped by project, backdated to the original session time.
node backfill-sessions-v2.mjs --dry --min-prompts 2 # preview
node backfill-sessions-v2.mjs --min-prompts 2 # importStats CLI
A read-only summary of your local memory storage — totals, top projects, recent activity, and temp-slug cleanup candidates.
npx -y -p codex-dev-mcp-suite stats # human-readable
npx -y -p codex-dev-mcp-suite stats --json # machine-readable
npx -y -p codex-dev-mcp-suite stats --root /tmp/mem # different root
npx -y -p codex-dev-mcp-suite stats --top 5 # trim top listsExample output:
Dev MCP Suite — stats
======================
Storage root: /home/you/.codex/memories
Totals
------
Notes: 89
Journal projects:19
Checkpoints: 1
Distinct projects: 25
Top projects by notes (top 10)
------------------------
24 mrtrickster99-fd1ff0fa
14 Coding-17e063ef
...
Temp/cleanup candidates (2)
------------------------
tmp.itbtDn9eB3-b62798fd
tmp.iHqM2Uh5K2-8d3660a2The CLI is a thin wrapper around lib/stats.js, which is also importable
directly from your own scripts. The default storage root is
~/.codex/memories, but --root (or the existing MEMORY_VAULT_DIR /
JOURNAL_DIR / CHECKPOINT_DIR env vars) override it.
Provider Smoke CLI
Verify every configured LLM provider (chat + embeddings) with one command. Useful after adding a new API key, or when comparing provider latency.
npx -y -p codex-dev-mcp-suite provider-smoke # uses process.env
npx -y -p codex-dev-mcp-suite provider-smoke --env-file ~/secrets.env # separate secrets file
npx -y -p codex-dev-mcp-suite provider-smoke --markdown --save-md docs/providers.mdAuto-detects providers from these env vars (highest precedence first):
Numbered slots:
MCP_PROVIDER_PRIMARY/_CHAIN2/_CHAIN3/ ...Named env:
GROQ_*,CEREBRAS_*,MISTRAL_*,OPENROUTER_*,OPENAI_*,GEMINI_*,COHERE_*,VOYAGE_*,OLLAMA_*,ANTHROPIC_*Catch-all:
MCP_LLM_BASE_URL/MCP_RERANK_BASE_URL/MCP_EMBED_BASE_URL/NINEROUTER_URL/LLM_BASE_URL(any OpenAI-compatible endpoint)
For each detected provider, runs:
chat probe (
/v1/chat/completions) — if the provider supports itembed probe (
/v1/embeddings) — if the provider supports it
Inference-only providers (Groq, Cerebras, Anthropic) skip the embed probe automatically.
Non-OpenAI-compatible providers (Cloudflare Workers AI) require a custom code path in
project-memory/embedding.js — see docs/providers.md.
No provider assumption is baked in: the tool only probes what's in your env. Zero-config users
get an empty matrix; pass --env-file to point at a secrets file.
Chat-only providers (Groq, Cerebras) skip the embeddings probe automatically
— they don't expose /v1/embeddings. Embedding-capable providers (Mistral,
OpenRouter, OpenAI, Ollama, Gemini, Cohere) run both probes.
Example output (Groq + Cerebras, both configured):
[groq]
✓ chat 200 310ms "OK"
[cerebras]
✓ chat 200 476msSee docs/providers.md for a saved smoke matrix.
Prune CLI
Remove temp project slugs (prefix tmp.) from vault / journal / checkpoints.
Default is DRY-RUN — nothing is deleted without --yes.
npx -y -p codex-dev-mcp-suite prune # dry-run report
npx -y -p codex-dev-mcp-suite prune --yes # actually delete
npx -y -p codex-dev-mcp-suite prune --json # machine-readable
npx -y -p codex-dev-mcp-suite prune --root /tmp/mem # different rootSafety: refuses to delete any slug that does not start with tmp.. Useful
right after heavy refactors or after imports that left tmp scratch dirs.
For in-session use from an MCP client, the project-memory server exposes a
memory_stats tool that returns the same summary text (or JSON) as the stats
CLI above.
Tests
node run-tests.mjs # all servers (offline, ~27 tests)
cd project-memory && npm testPrivacy
Local-first by default: no hosted backend, no built-in telemetry, no project account system. Everything is stored as files on your machine. No data leaves your machine unless you explicitly configure an external model/API endpoint for rerank or embeddings. See privacy and data flow. Your personal vault/journal/checkpoints are gitignored.
License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/verrysimatupang99/codex-dev-mcp-suite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server