thread-mind について
ThreadMind は、プロジェクトの議論をリポジトリ内の Markdown のスレッドツリーとして保存する、コーディングエージェント向け MCP サーバーです。新しいセッションでは、アクティブなスレッドと祖先の決定事項や制約を読み込み、Git ブランチとの連携やチームレビューにも対応します。
主な機能
- 01スレッド要約を Markdown で保存
- 02祖先スレッドに沿ったコンテキスト構成
- 03スレッドの作成、切り替え、統合
- 04Git ブランチに応じたスレッドの有効化
- 05要約対象コードの変更を通知
- 06コミットとレビューによる共同作業
活用シーン
- 01新しいセッションでプロジェクトの決定事項を復元
- 02別スレッドで実装案を比較検討
- 03プルリクエストで共有メモリをレビュー
- 04要約後のコード変更を把握
MCP 対応
MCP サーバーとして、プロジェクトやスレッドを管理するツールをクライアントに提供し、アクティブなスレッドの構成済みコンテキストを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y thread-mind-mcpTHREADMIND_ROOTProject directory holding .threadmind/, for clients that start servers outside your projectTHREADMIND_AUTHORシークレットAuthor ID used for team-mode ownership (defaults to one derived from your git identity)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
14掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| mode | enum | いいえ | プロジェクトモード:solo(デフォルト)または teamsolo | team |
| title | string | はい | プロジェクトタイトル |
| systemContext | string | いいえ | このプロジェクトのシステムコンテキストまたは指示 |
詳細
ThreadMind MCP
AI のためのメモリのブランチ:スレッドの要約をツリー状にまとめた、Git と相性のよい仕組みです。
ThreadMind は、AI コーディングセッションにメモリを提供する Model Context Protocol (MCP) サーバーです。各スレッドには、あるトピックについて決定した内容を短くまとめた要約が含まれ、リポジトリ内に Markdown として保存されます。新しいセッションを開始すると、アクティブなスレッドのコンテキスト(そのスレッドと祖先の決定事項)が、数万トークンに膨れ上がった会話履歴に取って代わります。
ThreadMind を使う理由
AI コーディングアシスタントとの会話は長くなり、クライアントが履歴を圧縮するか、最初からやり直すまで、すべてのリクエストに会話履歴全体が含まれます。やり直すと、決定した内容が失われます。ThreadMind は重要な内容を保持します。
- セクションごとの要約 — 決定事項、制約、状態、未解決の質問、次のステップ
- ツリーを通じた継承 — スレッドのコンテキストは、その要約と祖先の決定事項・制約から成ります。兄弟ブランチの内容は含まれません
- 分岐による検討 — 別々のスレッドでアプローチを試し、最良のアプローチの結論を親スレッドにマージし、あるアプローチを断念した理由も残せます
- Git を認識 — フィーチャーブランチで作成したスレッドは、そのブランチに切り替えるとアクティブになり、そのスレッドが説明するコードに変更がある場合は要約で警告します
- チームでの共同作業 — スレッドファイルはコードと一緒にコミットされ、プルリクエストでレビューできます
節約できる理由
ThreadMind は進行中の会話を短くできません。何を送信するかはクライアントが決めます。節約できるのは、最初からやり直すときです。
Before /clear: the conversation carries ~48,000 tokens of history
After /clear: the session starts with the thread's context, ~1,100 tokens
main
├── auth
│ └── auth-ui ← active context = main + auth (decisions, constraints) + auth-ui
└── dashboard dashboard stays out
Claude Code プラグインを使うと、/clear の実行後や会話の圧縮後にコンテキストが自動的に再読み込みされます。また、stats_show で自分のセッションにおける両方のサイズを測定できます。
クイックスタート
Claude Code プラグイン(推奨)
/plugin marketplace add mahmoud-nb/thread-mind-mcp
/plugin install thread-mind@thread-mind
プラグインはサーバーをインストールし、次のフックを追加します。
- 起動時、
/clearの実行後、会話の圧縮後にアクティブなスレッドのコンテキストを読み込む(ThreadMind プロジェクトのないリポジトリでは何も起こりません) - 会話が長くなるにつれて、またコンテキストウィンドウがほぼいっぱいになったときに、要約を保存するよう Claude に促す
- 保存前に圧縮が行われた場合は要約を復元し、
/clearによって未保存の作業が失われたことを通知する - Git ブランチの変更を追跡し、新しいアクティブスレッドのコンテキストを Claude に渡す
- Claude が編集したファイルを次の要約に記録し、ファイルに変更があったときに警告を表示する
tm:treeとtm:statsにトークンを使わず即座に応答する- 会話がどれほど大きくなるかをトランスクリプトから読み取って測定し、
stats_showで表示する
さらに、コマンド(/thread-mind:context、/thread-mind:tree、/thread-mind:create、/thread-mind:switch、/thread-mind:summary、/thread-mind:merge、/thread-mind:stats)と /config のオプションも追加されます。ステータス行(thread-mind-mcp status-line)には、アクティブなスレッドと未保存の作業が表示されます。プラグインガイドを参照してください。
以前に ThreadMind を手動で設定している場合は、Claude Code がサーバーを二重に起動しないよう、その設定を削除してください。
インストール
インストールは不要です。npx で直接実行できます。
npx thread-mind-mcp
または、グローバルにインストールします。
npm install -g thread-mind-mcp
Claude Code で設定する(プラグインなし)
プロジェクトのルートから実行します。サーバーをチームと共有するには、プロジェクトスコープで追加します。Claude Code はプロジェクトのルートに .mcp.json を作成するので、これをコミットします。
# macOS / Linux
claude mcp add --scope project thread-mind -- npx -y thread-mind-mcp
# Windows: npx is a .cmd script, wrap it in cmd /c
claude mcp add --scope project thread-mind -- cmd /c npx -y thread-mind-mcp
作成される .mcp.json(手動で作成することもできます):
{
"mcpServers": {
"thread-mind": {
"command": "npx",
"args": ["-y", "thread-mind-mcp"]
}
}
}
Windows では、"command": "cmd" と "args": ["/c", "npx", "-y", "thread-mind-mcp"] を使用します。各チームメンバーは、Claude Code がリポジトリ内で初めてサーバーを起動するときに、そのサーバーを承認します。
自分だけで使う場合は、--scope project を省略します(デフォルトの local スコープ:このプロジェクト内の自分のみ)。または、--scope user を使用します(すべてのプロジェクトで自分のみ)。どちらも ~/.claude.json に保存され、Claude Code によって管理されます。
| スコープ | 保存先 | 適用対象 |
|---|---|---|
local(デフォルト) | ~/.claude.json の現在のプロジェクト内 | このプロジェクト内の自分 |
project | プロジェクトのルートにある .mcp.json | リポジトリをクローンするすべての人 |
user | ~/.claude.json | すべてのプロジェクトで自分 |
Claude Code は
~/.claude/settings.jsonまたは.claude/settings.jsonから MCP サーバーを読み込みません。claude mcp listまたはセッション内の/mcpで設定を確認してください。
Windows + Volta: Claude Code が Volta の npx シムを解決できない場合は、volta run に処理を委ねます。
claude mcp add --scope project thread-mind -- cmd /c volta run npx -y thread-mind-mcp
その他の MCP クライアントで設定する
ThreadMind は stdio トランスポートを使用しており、あらゆる MCP クライアントと互換性があります。コマンドは常に npx -y thread-mind-mcp です。クライアントごとに異なるのは、その設定場所と、サーバーが送信する使用方法の説明を読み取るかどうかです。
| クライアント | サーバーの設定 | 使用方法の説明 |
|---|---|---|
| Cursor | .cursor/mcp.json または ~/.cursor/mcp.json | AGENTS.md |
| VS Code(GitHub Copilot) | .vscode/mcp.json(servers キー)または .mcp.json | サーバーから送信 |
| GitHub Copilot CLI | .mcp.json または copilot mcp add thread-mind -- npx -y thread-mind-mcp | AGENTS.md |
| Codex | codex mcp add thread-mind -- npx -y thread-mind-mcp(~/.codex/config.toml) | サーバーから送信 |
| Gemini CLI | .gemini/settings.json または ~/.gemini/settings.json | サーバーから送信 |
| Windsurf(Devin Desktop) | mcp_config.json | AGENTS.md |
| Claude Desktop(チャット) | THREADMIND_ROOT をプロジェクトに設定した claude_desktop_config.json | 必要に応じて Claude プロジェクトの指示 |
Claude Code、VS Code、Copilot CLI は、リポジトリのルートにある .mcp.json ファイルを共有します。各クライアントの設定については、その他の AI クライアントを参照してください。
ワークスペースの場所
ThreadMind は、次の順序で特定されるワークスペースのルートにある .threadmind/ にデータを保存します。
THREADMIND_ROOT環境変数が設定されている場合は、その値- MCP クライアントが通知するワークスペースのルート(すでに
.threadmind/を含むルートが優先されます)。Claude Code は、起動したディレクトリと--add-dirで追加したディレクトリを通知します。プロジェクトのルートから起動してください - サーバーを起動したディレクトリ
プロジェクト外でサーバーを起動し、ルートを通知しないクライアント(たとえば、プロジェクトフォルダーのないデスクトップチャットアプリ)では、THREADMIND_ROOT が必要です。
{
"mcpServers": {
"thread-mind": {
"command": "npx",
"args": ["-y", "thread-mind-mcp"],
"env": { "THREADMIND_ROOT": "/path/to/your/project" }
}
}
}
AI クライアントに ThreadMind の使い方を教える
クライアントが接続すると、サーバーは使用方法の説明(MCP サーバーの指示)を送信します。Claude Code、VS Code(GitHub Copilot)、Codex、Gemini CLI では、設定ファイルは不要です。Cursor、Copilot CLI、Windsurf など、これらの説明を読み取らないエージェントの場合は、threadmind_init を実行して AGENTS.md ファイルを生成してください。
仕組み
コアコンセプト
| 概念 | 説明 |
|---|---|
| Project | スレッドツリーを含むワークスペースです。タイトル、システムコンテキスト、モード(solo/team)を持ちます。 |
| Thread | ツリー内のノードで、議論のトピックを表します。Markdown形式の要約を保存し、Gitブランチにリンクしたり、完了または放棄したりできます。 |
| Summary | スレッドで決定した内容で、次のセクションで構成されます:決定事項、制約事項、状態、未解決の質問、次のステップ。 |
| Context | アクティブなスレッドの要約と、その祖先の決定事項および制約事項です。AI が読み込む内容です。 |
| Session | 各クライアントセッションには独自のアクティブなスレッドがあり、新しいセッションはチェックアウト済みの Git ブランチから開始します。 |
ストレージ
ThreadMind は、プロジェクトルートの .threadmind/ ディレクトリにすべてを保存します。
.threadmind/
config.json # Local state: where sessions start, author ID, session measurements
.gitignore # Excludes config.json from git
projects/
my-app.json # Project configuration
threads/
my-app/
main.md # Root thread (markdown + YAML frontmatter)
auth-system.md # Child thread
auth-api.md # Grandchild thread
スレッドファイルでは YAML フロントマターを使用します。各ファイルに親が記録されており、ファイルからツリーが再構築されるため、同期を維持したり Git で競合したりするインデックスはありません。
---
id: auth-system
title: Authentication System
parentId: main
author: mahmoud-a3f9
createdAt: 2026-04-15T10:00:00.000Z
updatedAt: 2026-04-15T12:30:00.000Z
branch: feature/auth
commit: 3f2a9c1e5b7d4a8f0c6e2b1d9a7f5c3e1b0d8a6f
paths: ["src/auth"]
---
## Decisions
- JWT with refresh tokens, stored in httpOnly cookies
- Passport.js over custom middleware, for maintainability
## State
- Login and refresh done, logout pending
status、branch、commit、paths、mergedInto は、設定されている場合にのみ表示されます。
コンテキストの構築
コンテキストをリクエストすると、ThreadMind はアクティブなスレッドからルートまでたどります。アクティブなスレッドの要約全体を保持し、祖先については 決定事項 と 制約事項 のみを含めます。
## System Context
You are building a Next.js e-commerce application...
---
## Thread: My App
## Decisions
- Next.js 15, PostgreSQL, Stripe
---
## Thread: Authentication System
## Decisions
- JWT with refresh tokens, bcrypt, Passport.js
---
## Thread: Auth API Endpoints (active)
_⚠ 2 commits changed src/api since this summary was written: check it is still accurate._
## Decisions
- POST /auth/login, POST /auth/register, POST /auth/refresh
## Next steps
- Rate limiting on /auth/login
---
_ThreadMind context: ~160 tokens | depth: 3 threads_
- 直接の祖先チェーン のみが含まれます。兄弟ブランチは除外されます
- コード変更前に書かれた要約には、その要約とともに記録されたコミットと
pathsを使用してフラグが付けられます - コンテキストが大きくなりすぎる場合、
maxTokensは最も遠い祖先から順に除外します
利用可能なツール
各ツールはタイトルと MCP アノテーション(読み取り専用、破壊的、冪等)を宣言します。クライアントはこれらを使用して、確認を求めるタイミングを判断できます。
プロジェクト管理
| ツール | 説明 |
|---|---|
project_create | ルートの「main」スレッドを含む新しいプロジェクトを作成します |
project_list | すべてのプロジェクトを一覧表示します(セッションのプロジェクトを表示します) |
project_switch | セッションを別のプロジェクトに切り替えます(プロジェクトが1つの場合は自動的に選択されます) |
project_create
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
title | string | はい | プロジェクトのタイトル(ID の生成に使用) |
systemContext | string | いいえ | システムプロンプトまたは全体に適用される指示 |
mode | "solo" | "team" | いいえ | プロジェクトのモード(デフォルト:"solo") |
スレッド管理
| ツール | 説明 |
|---|---|
thread_create | 子スレッドを作成します。フィーチャーブランチ上では、そのブランチにリンクします |
thread_switch | このセッションを別のスレッドに切り替え、構築済みのコンテキストを返します |
thread_list | ステータスとリンクされたブランチを含むスレッドツリーを表示します |
thread_status | スレッドを完了または放棄としてマークします(理由は決定事項に保持されます)。または再開します |
thread_merge | 完了したスレッドを親に統合します。親の要約を置き換え、スレッドを完了としてマークします |
thread_delete | スレッドとそのすべての子孫を削除します |
thread_rebase | スレッドを別の親に移動します(git rebase のように) |
thread_create
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
title | string | はい | スレッドのタイトル(ID の生成に使用) |
parentId | string | いいえ | 親スレッドの ID(デフォルトはアクティブなスレッド) |
thread_status
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
status | "active" | "done" | "abandoned" | はい | 新しいステータス |
threadId | string | いいえ | 対象のスレッド(デフォルトはアクティブなスレッド) |
reason | string | いいえ | 理由。スレッドの「決定事項」セクションに追加されます |
thread_merge
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
parentSummary | string | はい | スレッドの結論を含む、親の新しい要約 |
threadId | string | いいえ | 統合するスレッド(デフォルトはアクティブなスレッド) |
thread_delete
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
threadId | string | はい | 削除するスレッド ID(子孫にも連鎖して適用されます) |
thread_rebase
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
threadId | string | はい | 移動するスレッド ID |
newParentId | string | はい | 新しい親スレッド ID |
要約とコンテキスト
| ツール | 説明 |
|---|---|
summary_update | スレッド、またはそのセクションの要約を更新します |
context_get | トークン数の見積もりとともに、組み立てられたコンテキストを取得します |
summary_update
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
content | string | はい | 新しい要約、または section に追加するテキスト(マークダウン) |
threadId | string | いいえ | 対象のスレッド(デフォルトはアクティブなスレッド) |
section | string | いいえ | decisions、constraints、state、open-questions、next-steps のいずれか。指定したセクションのみを更新します |
replaceSection | boolean | いいえ | セクションに追加する代わりに置き換えます |
paths | string[] | いいえ | スレッドに関連するファイルまたはディレクトリ。変更時に要約へフラグを付けます |
context_get
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
maxTokens | number | いいえ | トークン上限。最も遠い祖先から順に除外されます(thread_switch でも指定できます) |
セットアップ
| ツール | 説明 |
|---|---|
threadmind_init | MCP サーバーの指示を読み取らないエージェント向けの指示ファイルを生成します(AGENTS.md など) |
threadmind_init
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
clients | string[] | いいえ | 生成するファイル:"agents"、"claude"、"cursor"、"generic"(デフォルト:agents と generic) |
サーバーが MCP クライアントに送信する指示と同じ内容を書き込みます。
| 対象 | ファイル | 読み取るもの |
|---|---|---|
agents | AGENTS.md | Codex、Cursor、GitHub Copilot、その他のエージェント |
claude | CLAUDE.md | Claude Code — サーバーの指示を受け取るため不要です |
cursor | .cursor/rules/threadmind.mdc | AGENTS.md の代わりに、常時適用されるプロジェクトルールとして Cursor が読み取ります(Cursor は両方を読み取ります) |
generic | .threadmind/instructions.md | 任意のクライアントのカスタム指示に貼り付けます |
以前のバージョンでは CLAUDE.md と .cursorrules を書き込んでいました。threadmind_init は Cursor ルールの生成時に .cursorrules から ThreadMind セクションを移動し、いずれかのファイルに残ったセクションがあれば報告します。
統計
| ツール | 説明 |
|---|---|
stats_show | 要約のサイズと、Claude Code プラグインがある場合は計測された会話サイズを表示します |
プラグインを使用すると、各セッションで会話が到達したサイズ(Claude Code のトランスクリプトから読み取ります)と、次のセッション開始時に読み込まれたコンテキストが記録されます。stats_show はその両方を報告します。
Measured sessions (Claude Code plugin):
Conversation size when sessions ended: ~48,200 tokens on average, ~96,000 at most (12 sessions)
ThreadMind context loaded at session start: ~1,150 tokens on average (14 sessions)
利用可能なリソース
| リソース | URI | 説明 |
|---|---|---|
| 現在のコンテキスト | threadmind://context | アクティブなスレッドの組み立て済みコンテキスト |
| スレッドツリー | threadmind://tree | スレッドツリーの ASCII 表示 |
| スレッドの要約 | threadmind://thread/{threadId} | 祖先を含まない、1 つのスレッドの要約 |
アクティブなプロジェクトのすべてのスレッドがリソースとして一覧表示されます。Claude Code では、@ を入力してスレッドを指定すると、兄弟スレッドの要約を会話に取り込めます。
利用可能なプロンプト
| プロンプト | 説明 |
|---|---|
tm-help | 利用可能なすべての ThreadMind コマンドを表示します |
tm-context | アクティブなスレッドのコンテキストを会話に読み込みます |
tm-tree | スレッドツリーを表示します |
tm-stats | 統計情報を表示します |
tm-create | 新しいスレッドを作成します(thread_create 経由) |
tm-switch | スレッドを切り替えます(thread_switch 経由) |
tm-rebase | スレッドを別の親に移動します(thread_rebase 経由) |
tm-summary | 指定された要約を保存するか、AI に作成させます(summary_update 経由) |
tm-init | 指示ファイルを生成します(threadmind_init 経由) |
start-thread | tm-context と同じです。互換性のために残されています |
summarize-thread | 内容を指定しない tm-summary と同じです。互換性のために残されています |
tm-context、tm-tree、tm-stats は、ツール呼び出しを行わずに結果を直接埋め込みます。他のプロンプトは、対応するツールを呼び出すよう AI に求めるため、変更にはクライアントの確認設定が引き続き適用されます。スレッド ID の引数は自動補完に対応しています。
Claude Code では、これらはスラッシュコマンドとして表示されます:/mcp__thread-mind__tm-help、/mcp__thread-mind__tm-create など。
クイックショートカット
サーバーの指示により、チャットに直接入力できる短いテキストコマンドを AI に教えます。
| コマンド | アクション |
|---|---|
tm:help | 利用可能なすべてのコマンドを表示します |
tm:context | 組み立てられたコンテキストを読み込みます |
tm:tree | スレッドツリーを表示します |
tm:create <title> | 新しいスレッドを作成します |
tm:switch <id> | スレッドを切り替えます |
tm:summary | 要約を書いて保存します |
tm:summary <content> | 指定した要約の内容を保存します |
tm:merge | スレッドを親に統合します |
tm:done [reason] | スレッドを完了としてマークします |
tm:abandon <reason> | スレッドを放棄としてマークします |
tm:stats | 統計情報を表示します |
tm:delete <id> | スレッドを削除します |
tm:rebase <id> <newParentId> | スレッドを別の親に移動します |
tm:init | 指示ファイルを生成します |
tm:project <title> | 新しいプロジェクトを作成します |
tm:projects | すべてのプロジェクトを一覧表示します |
使用例
1. 新しいプロジェクトを開始する
You: Create a new ThreadMind project called "E-Commerce App" with system context
"Building a Next.js e-commerce platform with Stripe payments"
AI: [calls project_create] → Project "e-commerce-app" created. Main thread active.
Claude Code では、それ以上のセットアップは必要ありません。他のエージェント(Codex、Cursor、Copilot…)でもプロジェクトを使えるようにするには、threadmind_init を実行するよう依頼します。これにより AGENTS.md ファイルが生成されます。
2. 作業して要約する
You: [discuss the architecture with AI...]
You: tm:summary
AI: [writes the summary in sections, then calls summary_update]
## Decisions
- Next.js 15 App Router, PostgreSQL with Prisma, Stripe Checkout
## Next steps
- Authentication
You: We'll use Stripe webhooks for order confirmation, record it.
AI: [calls summary_update with section "decisions"] → Section "decisions" updated.
3. Git ブランチ上でサブトピックに分岐する
$ git switch -c feature/payments
You: tm:create Payment Integration
AI: [calls thread_create] → Thread "payment-integration" created under "main".
Linked to git branch "feature/payments".
main
└── payment-integration [branch: feature/payments] ← active
4. 会話が長くなったら新しく始める
You: tm:summary
You: /clear
(the plugin loads the context of payment-integration: main's decisions
and constraints, then the whole payment-integration summary)
プラグインを使わない場合は、新しいセッションで tm:context を依頼します。
5. スレッドを終了する
You: tm:merge
AI: [writes main's new summary with the payment decisions, calls thread_merge]
→ Thread "payment-integration" merged into "main", which is now the active thread.
main ← active
└── payment-integration [done] [branch: feature/payments]
チームモード
チームモードでは、Git を介して共有するスレッドツリーで共同作業できます。
仕組み
-
チームモードでプロジェクトを作成します:
project_create with title "Shared Project" and mode "team" -
各チームメンバーには、初回の書き込み時に作成者 ID が割り当てられます。これは
git config user.nameとgit config user.emailの短いハッシュから生成されます(クローン間で安定しています。THREADMIND_AUTHOR環境変数で上書きできます) -
スレッドファイル(
.threadmind/threads/)は Git で追跡されます。各ファイルには親が記録されるため、同じ親の下でも、2 人がスレッドを作成して競合することはありません -
ローカル設定(
.threadmind/config.json)は Git の追跡対象外です。各メンバーは独自のセッション状態と測定値を持ちます -
あなたのフィーチャーブランチをチェックアウトしたチームメイトは、そのブランチに関連付けられたスレッドから開始します
ルール
| アクション | 自分のスレッド | チームメイトのスレッド |
|---|---|---|
| 要約を読む | はい | はい |
| 要約を更新する、ステータスを変更する | はい | いいえ |
| 親に統合する | 親も自分が所有している場合 | いいえ |
| 削除する | 子孫スレッドがチームメイトのものでない場合は可能 | いいえ |
| 子スレッドを作成する | はい | はい |
| 切り替える | はい | はい |
所有権は誤った編集を防ぐためのものであり、アクセス制御ではありません。
0.4 からのアップグレード: 以前はツリーが
.threadmind/trees/に保存されていました。ThreadMind は初回使用時にツリーをスレッドファイルに移動し、trees/<project>.jsonを削除します。この変更をコミットし、チーム全体で一緒にアップグレードしてください。.threadmind/stats/は使用されなくなったため、削除できます。
ワークフロー
# Pull teammates' threads
git pull
# View the full tree (includes everyone's threads)
# → Use thread_list
# Branch from a teammate's thread
# → Use thread_create with parentId set to their thread
# Push your new threads
git add .threadmind/
git commit -m "Add payment-integration thread"
git push
開発と公開
開発環境のセットアップ、テスト、リリース、および MCP Registry への公開については、SETUP.md をご覧ください。
アーキテクチャ
src/
index.ts # Entry point — stdio server, `hook <event>` or `status-line` for Claude Code
server.ts # McpServer factory (tools + resources + prompts + instructions)
services.ts # Services over one .threadmind directory, shared by server and hooks
types/
index.ts # All TypeScript interfaces
core/
frontmatter.ts # YAML frontmatter parser/serializer (zero deps)
ids.ts # ID validation, slugification, title normalization
lock.ts # Cross-process lock file
clock.ts # Strictly increasing timestamps
storage.ts # File I/O with atomic writes; tree derived from thread files
workspace.ts # Workspace root resolution (env, client roots, cwd)
session.ts # Active thread per session, per git branch
git.ts # Current branch, commits since a summary
summary.ts # Summary sections: inheritance, section updates
project.ts # Project lifecycle management
thread.ts # Thread CRUD, status, merge, tree rendering
context.ts # Context assembly, outdated summary notes, token budget
instructions.ts # Server instructions and instruction files
stats.ts # Session measurements and statistics report
hooks/
index.ts # SessionStart / SessionEnd command hooks of the Claude Code plugin
guard.ts # Session hooks: reminders, compaction, branch changes, edited files
session-context.ts # Context injected by hooks, sized to Claude Code's limit
transcript.ts # Conversation sizes read from Claude Code transcripts
settings.ts # Hook options, from the server's environment
session-cache.ts # State shared between the hooks and the status line
status-line.ts # Claude Code status line
tools/
index.ts # 14 MCP tools with Zod schemas and annotations
hook.ts # threadmind_hook, called by the plugin's hooks
resources/
index.ts # 2 MCP resources + the thread resource template
prompts/
index.ts # 11 MCP prompts
plugin/ # Claude Code plugin (manifest, .mcp.json, hooks, commands)
.claude-plugin/ # Marketplace listing the plugin
server.json # MCP Registry metadata
設計上の決定
- SQLite ではなくファイルベースのストレージ — Git との親和性が高く、人間が読みやすく、ネイティブ依存関係がありません
- スレッドファイルを唯一の信頼できる情報源にする — 各ファイルに親を記録するため、乖離したり Git で競合したりするツリーインデックスが不要です
- YAML フロントマター — スレッドのメタデータと内容を単一の
.mdファイルにまとめ、人間にもツールにも読みやすくします - 外部 YAML パーサーを使わない — シンプルなフラット形式のフロントマター向けに、最小限の手書きパーサーを使用します
- アトミックな書き込み — 一時ファイルに書き込んでフラッシュした後、対象ファイルと置き換えるため、クラッシュしてもファイルが不完全な状態で残りません
- 更新をシリアル化 — ロックファイルを介して、セッションやフックをまたぐ読み取り・変更・書き込み操作を一度に一つずつ実行します
- スラッグ化された ID — タイトルからスレッド ID を生成します(
"Auth System"→"auth-system")。自動サフィックスにより衝突を防ぎ、a-z、0-9、-のみに制限することで、パストラバーサルも防ぎます - セッションごとにアクティブなスレッドは一つ — セッション同士が互いに移動することはなく、新しいセッションはチェックアウト済みの Git ブランチから開始します
- 選択的な継承 — 祖先から引き継ぐのは決定事項と制約であり、状態や次のステップではありません
- MCP プロンプト — スラッシュコマンドです。読み取り専用のものはツール呼び出しを求める代わりに、結果を埋め込みます
- サーバーの指示 — サーバーがクライアントに使い方を伝えるため、指示ファイルは不要です。
threadmind_initは同じテキストを AGENTS.md や、指示ファイルを読み取らないエージェント向けの他のファイルに書き込みます - ワークスペースの解決 —
THREADMIND_ROOT、次にクライアントのルート、最後に作業ディレクトリの順で使用します - 節約量は推定ではなく測定 — 会話のサイズは Claude Code のトランスクリプトから取得し、コンテキストのサイズは推定値です(トークンあたり約 3.5 文字)
必要条件
- Node.js >= 18.0.0
- Git(任意:チームモードでの作成者検出、スレッドとブランチの関連付け、要約が古くなった場合の警告)
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。