Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Feynman's twelve-problems method as an MCP server: dormant problems + an evoke loop for new tricks.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SEVEN_DPT_DB必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"seven-dpt": {
"command": "npx",
"args": [
"-y",
"seven-dpt-mcp"
],
"env": {
"SEVEN_DPT_DB": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add seven-dpt --env SEVEN_DPT_DB=your-value -- npx -y seven-dpt-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"seven-dpt": {
"command": "npx",
"args": [
"-y",
"seven-dpt-mcp"
],
"env": {
"SEVEN_DPT_DB": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"seven-dpt": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"seven-dpt-mcp"
],
"env": {
"SEVEN_DPT_DB": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SEVEN_DPT_DB envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント pierreb4 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.5)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, alalanet — check before you pay
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Check packages, MCP servers and x402 endpoints before agents install or pay. Signed.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A tiny, local MCP server that gives Claude (in any project) a persistent set of long-running problems and a loop for cracking them — Feynman's *twelve favorite problems* method, driven by the tripartite model of inspiration.
The server holds state and scaffolding; the connected model does the thinking — no LLM runs inside the server, no API key.
| Tool | Purpose |
|---|---|
add_problem | Add a long-running problem to your set (refused past the ~12 cap until you retire/merge something — or pass overCap) |
update_problem | Edit, retire, solve, or reopen a problem. Closing takes a resolution — why, plus the re-open trigger; a merge is a retirement whose resolution names the absorber |
list_problems | See your open problems |
get_problem | One problem + every spark (idea, next step, outcome) — the memory |
evoke | The loop. Feed it a trick; returns your problems + a scaffold walking evocation → transcendence → approach |
capture_spark | Persist a candidate idea + concrete next step against a problem (+ optional costToOpen — the forward effort estimate — prior — your stated p(works), immutable, for later calibration — and the claim-typing trio: claimType universal/existential-bounded, forbids — one observation the spark rules out — and exhaustion — when to abandon rather than re-park. All write-once) |
update_spark | Record a spark's outcome — status (tried/worked/failed), cost (actual effort spent), value (graded payoff, 0 for a miss). Log failures too; the zero-value outcomes are the signal a background-effort policy is learned from. Can backfill claimType/forbids/exhaustion while unset (write-once: never revises) |
wake_status | Evaluate every parked problem/spark's wakeCondition right now — ripeness, progress, per-atom current/target echoes |
Storage: ~/.local/share/seven-dpt/store.json (override with SEVEN_DPT_DB). One store, shared by every project = one brain.
Retiring a problem parks it with a re-open trigger — but a trigger written in prose is a wait owned by "someone will remember." A `wakeCondition` makes it computable: a small predicate (all/any over atoms like sparkCount, a date gate, fileMatches / fileLines / fileCount on a path, or an explicit manual note) attached when you retire/solve a problem (update_problem), park a spark (update_spark), or capture one born gated (capture_spark). The ambient digest evaluates every condition at session start and surfaces what's ripe (with an act/re-park pointer), what's ripening (with current/target progress), and — loudly — any condition whose source became unreadable: a wake source that vanished must scream, not sit at 0% forever. Everything echoes its aim (prior-ledger.jsonl 12/20), so a wrong path or unit is visible when you arm it, not months later. No auto-reopen: ripeness is surfaced, you decide. --wake prints the full ledger from the CLI.
A parked spark with a wake condition can *revive* — but nothing says when it may *die*, so an unfalsifiable hope can ride the digest forever. 0.1.5 gives every spark an optional claim-typing trio, all write-once on the same anti-hindsight model as prior:
universal ("this always holds") vs existential-bounded ("this holds somewhere, within a stated frame"). A frame-bounded null is not a claim-failure; typing the claim keeps a frame-kill from being read as a lever-kill.wakeCondition: the condition under which the spark is abandoned rather than re-parked.Set them at capture, or backfill later *while unset* (update_spark); revision after the fact is refused with a visible notice — rewriting what a claim forbids after seeing results is the conventionalist stratagem the fields exist to block. ledger_invariants.py flags ORPHANED-EXISTENTIAL sparks (parked with a wake, no exhaustion — can revive but never die), and calibration.py stamps the claimType mix of every scored cohort.
On first run (no store file yet), the store seeds itself with seven-dpt's own three open product problems — auto-detection of recurring issues, the background-spend policy, and proactive surfacing. Design decision, made deliberately: the seeds are tool-generic (identical for every install, about the tool rather than about you), so the server dogfoods its own method from minute one and the ambient digest has something to show before you add your own problems. They are ordinary rows in *your* store — edit, replace, or clear them freely; an existing store is never touched. So the moment it runs it is already "taking care of its own problems": while you work on anything else, those sit in context and can be sparked by unrelated discoveries. The *policy* for how/when/how-much to chase background problems is deliberately not coded — it's meant to be learned later from the accumulated spark → outcome history, which is why update_spark exists.
That history is the reward channel: each spark carries a prior (your stated probability-it-works at capture — immutable afterwards, so stated credences can be calibrated against realized outcomes once enough sparks resolve), a costToOpen (the forward effort estimate, set at capture and preserved), a cost (the actual effort, once chased to a verdict), and a value (graded payoff, 0 for a miss). analysis/reservation_value.py turns it into a Pandora's-Box / Gittins reservation-value ranking — but it gates on data sufficiency and refuses to emit numbers until enough resolved sparks (with cost + value, *including failures*) accrue, so the policy is never fit on false precision. A Bayesian companion, analysis/reservation_value_bayes.py, was retired on 2026-10-10 (it is in git history): nothing ever invoked it, and the de-bias map it applied to spark priors was fitted on another program's ledger, where it has the opposite sign to this store's own sparks. analysis/calibration.py is the audit half of the prior loop: it scores stated priors against realized outcomes (reliability table, Brier/skill, drift check) from any two-line JSONL ledger of pre-registered priors + resolutions, and --json persists that ledger's de-bias map and buckets for analysis/self_check.py. No map is applied to spark priors. The store's own reading — resolved sparks' mean stated prior against the share that worked, with a Wilson interval — is one line of the session digest once ten sparks with a prior have resolved, and --priors lists each spark's prior beside its outcome. --split YYYY-MM-DD partitions the curve at a changepoint (a model upgrade re-prices estimates — don't pool across one untested), and a scope stamp reports the claimType mix of scored pairs, since a frame-bounded null scored as a claim-failure is the one bias the audit can't see from numbers alone. analysis/ledger_invariants.py audits the *program* the same ledger records, not any single probe: deterministic invariants for the failure class where every result is locally sound and the project is still wrong — a park-streak check (K straddles-zero verdicts in a row on the primary metric means the instrument, not the ideas, is the suspect), power-at-preregistration (a gate below the banked MDE is unresolvable *before* it runs), channel-liveness stamps, and ORPHANED-EXISTENTIAL (a parked spark with a wake but no exhaustion can revive but never die — unfalsifiable-in-practice spend). It reports its own note-classification coverage, exits 1 on alerts, supports --asof retrodiction, and --json emits ALERT markers a hook or wakeCondition (fileMatches on the output) can gate on.
Published on npm — no build step. Register it for every project (user scope):
claude mcp add --scope user seven-dpt -- npx -y seven-dpt-mcp
npm install && npm run build
claude mcp add --scope user seven-dpt -- "$(command -v node)" "$(pwd)/dist/index.js"
Then make the problems ambient — merge into ~/.claude/settings.json so every session opens with your dormant problems in context:
{
"hooks": { "SessionStart": [ { "matcher": "startup", "hooks": [{ "type": "command", "command": "npx -y seven-dpt-mcp --digest", "timeout": 10 }] }, { "matcher": "resume", "hooks": [{ "type": "command", "command": "npx -y seven-dpt-mcp --digest", "timeout": 10 }] }, { "matcher": "clear", "hooks": [{ "type": "command", "command": "npx -y seven-dpt-mcp --digest", "timeout": 10 }] } ] } }
(Installed from source instead? Replace each command with an absolute node path + /absolute/path/to/seven-dpt-mcp/dist/index.js --digest — hooks don't source your shell profile, so nvm-style setups need the absolute path.)
(--digest prints nothing when no problems are open; a fresh install prints the three seeded ones — that's the bootstrap working, not noise.)
add_problem.evoke it; watch Claude test it against every problem and reframe the ones that light up.capture_spark the hits, then update_spark once you've tried them.get_problem — if that accumulated trail feels useful, the idea's proven.evoke matching is done by the connected model, not pre-ranked by embeddings.Apache-2.0 — see LICENSE.