npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

codex-persistent-mcp

v0.1.13

Published

An MCP (stdio) server that proxies OpenAI Codex CLI with persisted sessions via `codex resume` (multi-agent friendly, e.g. Claude Code).

Readme

codex-persistent-mcp

English | 簡體中文 | 繁體中文

一個很薄的 MCP(stdio)Server:把會話持久化交給本機 codex-cli,使得透過 MCP 呼叫也能產生真實 session,之後使用者可以用 codex resume <session_id> 接力繼續聊。

快速開始(建議:npx 自動更新)

Claude Code

claude mcp add-json --scope user codex-persistent \
  '{"command":"npx","args":["-y","codex-persistent-mcp"],"env":{"CODEX_BIN":"/absolute/path/to/codex"}}'

驗證:

claude mcp list
claude mcp get codex-persistent

Codex CLI

codex mcp add codex-persistent --env CODEX_BIN=/absolute/path/to/codex -- npx -y codex-persistent-mcp

驗證:

codex mcp list --json
codex mcp get codex-persistent --json

Antigravity

Antigravity 支援用 --add-mcp 新增 MCP server:

antigravity --add-mcp '{"name":"codex-persistent","command":"npx","args":["-y","codex-persistent-mcp"],"env":{"CODEX_BIN":"/absolute/path/to/codex"}}'

解決的問題

  • 其他 Agent 透過 MCP 呼叫 Codex,也能產生真實可恢復的 session。
  • MCP server 重啟/關閉不丟上下文(上下文存於 Codex CLI 的 session store)。
  • 使用者可隨時用 codex resume <session_id> 進入同一會話補充資訊/接力對話。
  • 透過 MCP 建立的會話會在同一專案目錄(CWD)的 codex resume 中可見。

依賴

  • Node.js(建議 18+)
  • codex-cli(本專案開發時使用 codex-cli 0.77.0

安裝與建置

npm install
npm run build

全域安裝(可選)

發佈到 npm 之後,可以全域安裝成 CLI:

npm install -g codex-persistent-mcp

執行

npm start

MCP 工具

本 server 暴露 3 個主要工具(都會回傳 session_id):

  • codex_chat
    • 輸入:session_id?(UUID)、promptcwd?model?reasoning_effort?timeout_ms?
    • 輸出:session_idreplyusage?
  • codex_plan
    • 輸入:session_id?requirementsplanconstraints?cwd?model?reasoning_effort?timeout_ms?
    • 輸出:session_idcritiqueusage?
  • codex_review
    • 輸入:session_id?change_summarytest_results?open_questions?cwd?model?reasoning_effort?timeout_ms?
    • 輸出:session_idreviewusage?

為了相容舊版本,仍保留 codex_guard_plancodex_guard_final

運作原理(為什麼能 codex resume

每次 tool call 都會 spawn 一個 codex 子行程:

  • 新會話:
    • codex exec --skip-git-repo-check --json -C <cwd> "<prompt>"
  • 續寫會話:
    • codex exec --skip-git-repo-check --json -C <cwd> resume <session_id> "<prompt>"

然後解析 --json 輸出的 JSONL 事件流:

  • 讀取 thread.started.thread_id 作為 MCP 的 session_id
  • 收集 item.completed(型別為 agent_message)並回傳最後一條作為 reply

同一個 session_id 的並發請求會被序列化,避免對同一會話亂序寫入。

環境變數

  • CODEX_BINcodex 可執行檔路徑(預設 codex
  • CODEX_PERSISTENT_MCP_ORIGIN:注入到每次請求裡的識別字(預設 codex-persistent-mcp

工作目錄(cwd

Codex 會在 session 中繼資料記錄工作目錄,且 codex resume 預設會依工作目錄過濾會話清單。

  • 新建會話(不傳 session_id)時:必須傳 cwd(專案根目錄)。
  • 續寫會話(傳 session_id)時:cwd 可省略,server 會復用或從 Codex 本機 session store 推斷。

「AI vs 人」標記

Codex CLI 預設並不知道輸入是來自 MCP 的其他 AI 或是使用者本人。

本 server 會在每次請求前自動注入一個 header,讓 Codex 能穩定區分:

  • <<<MCP_CONTEXT_BEGIN>>> 的訊息:來自 AI agent via MCP(回覆給 agent)
  • 不帶該標識的訊息:來自使用者本人(例如手動 codex resume

每次呼叫的 model + reasoning 覆蓋

預設情況下,Codex CLI 會讀取 ~/.codex/config.toml(例如 modelmodel_reasoning_effort)。

本 MCP 支援對單次呼叫即時覆蓋:

  • model:透傳為 codex exec -m <model>,只對本次請求生效
  • reasoning_effort:透傳為 codex exec -c model_reasoning_effort="...",只對本次請求生效

不傳上述欄位時,會完全遵循 Codex CLI 的預設配置。

在 Claude Code 裡設定這個 MCP

Claude Code 提供 claude mcp ... 管理命令。

建議用 add-json 設定(可同時設定 env,並用 npx -y 方式啟動):

claude mcp add-json --scope user codex-persistent \
  '{"command":"npx","args":["-y","codex-persistent-mcp"],"env":{"CODEX_BIN":"/absolute/path/to/codex"}}'

若要固定版本(可重現):

claude mcp add-json --scope user codex-persistent \
  '{"command":"npx","args":["-y","[email protected]"],"env":{"CODEX_BIN":"/absolute/path/to/codex"}}'

驗證:

claude mcp list
claude mcp get codex-persistent

在 Codex CLI 裡設定這個 MCP

Codex CLI 提供 codex mcp ... 管理命令。

  1. 先 build:
npm run build
  1. 新增為 stdio MCP server:
codex mcp add --env CODEX_BIN=/absolute/path/to/codex codex-persistent -- node /absolute/path/to/this/repo/dist/server.js

若已全域安裝:

codex mcp add --env CODEX_BIN=/absolute/path/to/codex codex-persistent -- codex-persistent-mcp

若已發佈到 npm(無需 clone):

codex mcp add --env CODEX_BIN=/absolute/path/to/codex codex-persistent -- npx -y codex-persistent-mcp

驗證:

codex mcp list --json
codex mcp get codex-persistent --json

版本固定與自動更新

npx -y codex-persistent-mcp 一般會拉取最新版本,方便但可重現性較差。

如果要固定版本:

npx -y [email protected]

建議用法(雙 Agent 把關)

  • plan 前:把「需求 + 計畫草稿」送給 codex_plan,取得漏項/風險/追問/測試建議。
  • 收尾前:把「變更摘要 + 測試結果 + 未決問題」送給 codex_review,做最終把關。
  • 任意時刻:直接 codex resume <session_id> 手動接力繼續聊。

常見問題

找不到 codex

常見原因是 PATH 未繼承(例如 nvm)。解法:

  • 設定時顯式指定 CODEX_BIN=/absolute/path/to/codex(用 which codex 找路徑)

為什麼要傳 cwd

傳入專案根目錄可讓 Codex 記錄正確的工作區上下文,並讓 codex resume 在該專案目錄下預設就能看到該會話。

npm 發佈需要 2FA(維護者)

部分 npm 帳號在發佈套件時會被要求啟用兩步驗證(2FA),或使用可繞過 2FA 的自動化/細粒度 token。

  • 啟用寫入 2FA:
    • npm profile enable-2fa auth-and-writes
  • 然後帶 OTP 發佈:
    • npm publish --otp=123456