mcpField
T
Threadctx

Threadctx

本地服务
github.com/threadctx-dev记忆与知识113 周前更新

关于 Threadctx

Threadctx 是面向编码 Agent 的共享记忆 MCP 服务,提供本地文件存储和云端团队记忆模式。它通过查询、写入工具及自动添加项目规则,帮助团队在不同编码工具间复用经验。

主要功能

  1. 01本地 JSON 文件记忆
  2. 02云端共享团队记忆
  3. 03按仓库范围检索
  4. 04从 Git 提交提取记忆
  5. 05自动注入 Agent 项目规则

适用场景

  1. 01记录并复用架构决策
  2. 02查找类似任务的历史经验
  3. 03从提交历史整理团队知识

MCP 相关

作为 MCP 服务,向客户端提供 memory_query 和 memory_write 工具,并在初始化握手中发送使用记忆的指引。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"threadctx": {
"command": "npx",
"args": [
"-y",
"threadctx-mcp"
],
"env": {
"THREADCTX_MODE": "<THREADCTX_MODE>",
"THREADCTX_API_KEY": "<THREADCTX_API_KEY>"
}
}
}
}
启动命令npx -y threadctx-mcp
需要配置的环境变量
THREADCTX_MODE'local' (default, free, no signup) or 'cloud' (shared team memory)
THREADCTX_API_KEY密钥API key for cloud mode, issued at threadctx.dev. Not needed in local mode.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmthreadctx-mcp0.5.0

工具

2

收录的工具列表 · 更新于 3 周前

参数类型必填说明
tagsarray否可选的简短标签,例如 ["incident", "retry-logic"]。
contentstring是要记住的学习内容,写成让未来的读者也能充分了解上下文的形式。

详细介绍

threadctx-mcp

smithery badge

面向 AI 编码 Agent 的共享记忆 MCP 服务。与 Claude Code、Cursor 和任何 MCP 客户端的运行方式都完全相同——同一个包、同一种配置格式,无需针对不同客户端进行集成。首次启动时,它还会将一条“检查团队记忆”的指令写入仓库所用 Agent 的规则文件(AGENTS.md、CLAUDE.md、Copilot、Windsurf、Cline、Gemini),确保 Agent 真正读取记忆,而不仅仅是能够访问。

这个仓库本身也在使用它:仓库自己的 AGENTS.md 和 CLAUDE.md 是通过 npx threadctx-mcp init 设置的,这就是你也可以运行的命令——查看 git 历史记录即可了解整个过程。

模式

  • **本地(默认,免费,无需注册):**记忆以普通 JSON 文件的形式存储在 ~/.threadctx/local.json 中——零原生依赖,因此在任何安装了 Node 18+ 的机器上,npx threadctx-mcp 都能即时安装(无需编译器,也无需执行 node-gyp)。除 Agent 已使用的 LLM 提供商外,不会进行任何网络调用。匹配基于关键词,并限定在当前仓库范围内(通过 git remote 检测)。随时运行 npx threadctx-mcp list 即可准确查看 Agent 存储的内容。
  • **云端(付费 Team 层级及以上):**记忆在仓库所有成员之间共享,并支持真正的语义搜索。需要从 threadctx.dev 获取 API 密钥(或使用你自己的可自托管部署——请参阅 ../cloud/README.md)。

快速开始

# Local mode — nothing to configure. Also auto-adds the "check team memory"
# instruction to your agents' rule files (AGENTS.md, CLAUDE.md, and any
# detected tool-specific files) on first start.
npx threadctx-mcp

# Set a repo up for your whole team (run once, commit the results)
npx threadctx-mcp init

# Cloud mode — shared team memory via threadctx.dev
npx threadctx-mcp init --mode=cloud --api-key=tctx_xxx

# Joining a repo a teammate already set up? One command:
npx threadctx-mcp join

# See what your agents have written to this machine
npx threadctx-mcp list            # this repo
npx threadctx-mcp list --all      # every repo

init 会写入三个可提交且不含密钥的文件:.threadctx.json (仅包含 { "mode": ... })、.mcp.json(Claude Code 项目配置)和 .cursor/mcp.json(Cursor 项目配置)。将这三个文件全部提交——之后,每位在 Claude Code 或 Cursor 中打开仓库的团队成员都会收到提示,自动启用 threadctx,无需安装或配置任何内容。 使用其他 MCP 客户端的团队成员运行 npx threadctx-mcp join,即可用同样的方式设置自己的机器,并打印适用于其客户端的配置块。

你的 API 密钥绝不会出现在任何已提交文件中。运行时会从 THREADCTX_API_KEY 环境变量读取密钥(在 shell 配置文件中导出该变量),因此从机制上保证密钥不会进入版本控制。

threadctx 还会在项目规则中添加一条简短且有明确标记的指令,告知 Agent 在任务开始前调用 memory_query,并在完成后调用 memory_write。每次都会写入两个通用文件——AGENTS.md(由 Copilot、Cursor、Windsurf、Zed、Codex、Aider 等约 24 种工具读取的跨工具标准)和 CLAUDE.md(Claude Code 更丰富的原生格式)——以及 .cursor/rules/threadctx.mdc。 只有检测到仓库中存在相应工具的痕迹时,才会添加该工具专属文件,因此不会为你未使用的工具在项目中到处创建规则文件:

工具写入的文件写入条件
跨工具标准AGENTS.md始终
Claude CodeCLAUDE.md始终
Cursor.cursor/rules/threadctx.mdc始终
GitHub Copilot.github/copilot-instructions.md存在 .github/
Windsurf.windsurf/rules/threadctx.md存在 .windsurf/
Cline.clinerules/threadctx.md存在 .clinerules
Gemini CLIGEMINI.md存在 .gemini/

对于共享文件(AGENTS.md、CLAUDE.md、Copilot、Gemini),会插入带标记边界的内容块,并保留周边的自有内容;专用文件则由 threadctx 完全管理。**MCP 服务首次在项目中启动时,这些操作会自动进行——无需运行 init。**运行 init 只会显式触发这些操作并打印结果;无论哪种方式,操作都是幂等的(可以安全地重复运行,且不会重复添加)。使用 THREADCTX_NO_AUTO_RULES=1 完全退出,或在单次 init 调用中使用 --no-rules。

同一条指令也会作为 MCP initialize 握手的一部分发送(即协议的 instructions 字段),因此即使规则文件尚不存在,模型也能收到指令;不读取项目规则文件的客户端也能收到。基于文件的规则则在此基础上提供双重保障,因为无法保证每个 MCP 客户端都会显著展示 instructions。

Claude Code 设置

将以下内容添加到 Claude Code MCP 配置中(使用 claude mcp add,或直接编辑 ~/.claude/mcp.json):

{
  "mcpServers": {
    "threadctx": {
      "command": "npx",
      "args": ["-y", "threadctx-mcp"],
      "env": {
        "THREADCTX_MODE": "cloud",
        "THREADCTX_API_KEY": "tctx_xxx"
      }
    }
  }
}

Cursor 设置

将相同的配置块添加到项目根目录下的 .cursor/mcp.json(或通过 Cursor Settings → Tools & MCP 添加):

{
  "mcpServers": {
    "threadctx": {
      "command": "npx",
      "args": ["-y", "threadctx-mcp"],
      "env": {
        "THREADCTX_MODE": "cloud",
        "THREADCTX_API_KEY": "tctx_xxx"
      }
    }
  }
}

完成——相同的包和配置可用于这两个客户端,因为 MCP 是可移植的开源协议。

被动捕获——将 git 历史转化为记忆

记忆不应依赖 Agent 记得调用 memory_write。 threadctx capture 会读取上次运行后新增的提交,使用你自己的大模型提供商密钥提炼真正可复用的决策和注意事项(跳过琐碎提交),将其与已存储的内容去重,并写入筛选后保留的内容。它与工具无关——无论工作是在 Claude Code、Cursor、Copilot 还是普通编辑器中完成,都没有影响。

# Off by default because it calls an LLM (billed to your provider). Enable it:
export THREADCTX_CAPTURE_ENABLED=1
export ANTHROPIC_API_KEY=sk-...     # or OPENAI_API_KEY

npx threadctx-mcp capture --dry-run     # preview what it would store
npx threadctx-mcp capture               # store them (incremental since last run)
npx threadctx-mcp capture --since=v1.2.0 --diffs   # a range, with patches

# Scaffold a GitHub Action that captures every merged PR automatically:
npx threadctx-mcp capture --print-workflow > .github/workflows/threadctx-capture.yml

捕获过程会直接调用你的大模型提供商——不会通过 threadctx 的服务器转发任何内容,因此本地模式仍会遵守“除你自己的大模型提供商外,不进行网络调用”的承诺。除非设置 THREADCTX_CAPTURE_ENABLED=1(或单次使用 --force),否则此功能默认关闭,因此绝不会意外产生 token 费用。

环境变量

变量必需描述
THREADCTX_MODE否local(默认)或 cloud
THREADCTX_API_KEY仅在 cloud 模式下通过 cloud/scripts/create-tenant.ts 签发
THREADCTX_API_URL否默认为 https://threadctx.dev/api/v1;可覆盖此值以进行自托管
THREADCTX_REPO否覆盖根据 git remote 自动检测的仓库
THREADCTX_DB_PATH否local 模式下的存储路径;默认为 ~/.threadctx/local.json
THREADCTX_NO_AUTO_RULES否设为 1 可在服务启动时禁用自动注入 Agent 规则文件
THREADCTX_CAPTURE_ENABLEDcapture 所需设为 1 可启用由大模型支持的 capture 命令(默认关闭)
THREADCTX_CAPTURE_PROVIDER否同时提供两个密钥时,强制使用 anthropic 或 openai
THREADCTX_CAPTURE_MODEL否覆盖提取模型(默认:Haiku / gpt-4o-mini)
ANTHROPIC_API_KEY / OPENAI_API_KEYcapture 所需你自己的提供商密钥;capture 会直接调用该提供商

本地开发

npm install
npm run dev     # runs the server via tsx, watches for changes
npm run build   # compiles to dist/ for publishing

工具的工作方式

  • memory_write(content, tags?) — Agent 在解决不明显的错误、做出架构决策或学到值得记住的内容后调用此工具。
  • memory_query(task_description, max_results?) — Agent 在开始风险较高或重复性的工作前调用此工具。结果会附带一致的归属说明页脚(· via threadctx — shared team memory (N hits)),因此无论你是在阅读 Claude Code 的终端输出,还是 Cursor 的 Agent 面板,都能通过相同的字符串识别。

工具描述旨在引导模型主动调用 memory_query;从 0.3.0 起,服务还会以另外两种方式强化这一点,且无需任何设置:MCP initialize 响应会向每个连接的客户端附带相同的指令;首次启动时,还会自动注入 CLAUDE.md / .cursor/rules/threadctx.mdc。MCP 工具本质上仍是拉取式的(没有任何机制可以强制调用工具),但这三个层面共同构成了我们能够实现的最强保障。

CLI 子命令

命令功能
npx threadctx-mcp运行 MCP 服务(Claude Code / Cursor 启动的就是它)。在项目中首次启动时自动注入项目规则。
npx threadctx-mcp init [--mode=cloud --api-key=…] [--no-rules]为团队配置仓库:写入 .threadctx.json、可提交的 Claude Code/Cursor 项目 MCP 配置,以及项目规则文件。
npx threadctx-mcp join加入队友已配置好的仓库:获取项目 MCP 配置、规则和各客户端的说明。
npx threadctx-mcp list [--all] [--full] [--json]显示本地磁盘记忆中存储的内容。
npx threadctx-mcp capture [--dry-run] [--since=<ref>] [--max=N] [--diffs] [--model=ID] [--print-workflow]使用你自己的大模型密钥,将近期 Git 历史提炼为记忆。除非设置 THREADCTX_CAPTURE_ENABLED=1(或使用 --force),否则此功能处于关闭状态。

在人工操作的仪表板中浏览、搜索、编辑和清理团队(cloud)记忆: threadctx.dev/dashboard — 使用团队 API 密钥登录。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。