PD

pranjalbhatia710/descartes-mcp

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

21 stars 0 forks 品質 74 トレンド 14MIT

Doubt, until what remains is certain. An MCP server that recursively doubts every plan decision — grounding each in real evidence or asking you — until it converges. Runs on Claude alone, no keys.

概要

The Asker learns to the sharpest questions to understand a subject; Descartes learns to until what remains is certain. Two halves of one idea: the right question beats the confident answer. → 🪶  ·  descartes --epigraph for a passing thought from the man himself. An MCP server that, on a prompt, — iterating until the plan stops producing new load-bearing doubts. Then it hands back a refined plan plus the few decisions only you can make. The point: no unexamined assumption reaches the work, so hallucination has no room to hide. On a prompt, Descartes runs recursive Cartesian doubt: 1. the plan / decisions. 2. every load-bearing decision (one of 11 doubt operators per doubt). 3. — prune the trivial and manufactured ones. 4. each surviving doubt only from real evidence: - code doubts → resolved from the context you pass in, - world doubts → resolved via (cited, confidence-scored), - ungroundable → marked . 5.

README

以下は原文 README の抜粋です。原文を見る。

Descartes

doubt, until what remains is certain.

🔭 Sibling project: The Asker — today’s AI answers, this one asks.

The Asker learns to ask the sharpest questions to understand a subject; Descartes learns to doubt until what remains is certain. Two halves of one idea: the right question beats the confident answer. → https://github.com/pranjalbhatia710/the-asker

🪶 Landing page →  ·  descartes --epigraph for a passing thought from the man himself.

An MCP server that, on a prompt, doubts every decision in a plan, doubts its own doubts, and answers them — grounding every answer in real evidence — iterating until the plan stops producing new load-bearing doubts. Then it hands back a refined plan plus the few decisions only you can make.

The point: no unexamined assumption reaches the work, so hallucination has no room to hide.


The loop

On a prompt, Descartes runs recursive Cartesian doubt:

  1. Draft the plan / decisions.
  2. Doubt every load-bearing decision (one of 11 doubt operators per doubt).
  3. Doubt the doubts — prune the trivial and manufactured ones.
  4. Answer each surviving doubt only from real evidence:
    • code doubts → resolved from the context you pass in,
    • world doubts → resolved via Exa (cited, confidence-scored),
    • ungroundable → marked NEEDS_HUMAN.
  5. Doubt the answer — recurse: each settled answer is itself doubted (the question behind the question), spawning the next layer of doubts, bounded by depth and a global doubt budget.
  6. Bank it — every grounded finding accumulates into a knowledge base that feeds the next round of doubting and the final plan.
  7. Revise the plan with what survived, and repeat from step 2.

The output is therefore a doubt tree (each entry carries depth + parent), not a flat list, plus a knowledge_base of accumulated facts.

Stopping rule: the loop stops the moment a full pass produces no new load-bearing doubt — that is convergence. It might be pass 3 or pass 9. 20 is a hard ceiling, never a target, and recursion is bounded by DESCARTES_MAX_DEPTH (default 3) and DESCARTES_DOUBT_BUDGET (default 64). It never manufactures doubt to keep going.

Grounding rule: every answer resolves against real evidence or becomes a question for you. Low-confidence Exa is never asserted. 20 rounds of self-answered, ungrounded doubt would be 20 rounds of confident hallucination — so that is forbidden by construction.


Two engines (auto-selected)

| If you set… | Descartes runs… |

GitHub で README 全文を見る

インストール

This server does not publish a one-line install command.

Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →

設定

{ "mcpServers": { "descartes": { "command": "descartes", "args": [], "env": { "FIREWORKS_API_KEY": "${FIREWORKS_API_KEY}", "EXA_API_KEY": "${EXA_API_KEY}", "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}" } } } }