
Haft MCP Server: Project Memory and Decision Records for Coding Agents
Gives Claude Code, Codex and other coding agents a project memory of problems, options, decisions and evidence that flags what has gone stale.
Haft is a local tool built on the First Principles Framework. Your agent uses it to frame problems, compare options under the same rules and record decisions with their evidence. It marks records as stale when the evidence ages.
You install the haft program, then run haft init once in each project. The init step writes the MCP config for your agent and adds skills and a managed section in CLAUDE.md or AGENTS.md. Claude Code and Codex are the supported hosts. The others are marked experimental.
Good for
- Developers who want agents to record why a choice was made
- Teams that review architecture decisions with evidence
- People who work with Claude Code or Codex on long projects
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install haft MCP
Claude Code
- 1
Copy this prompt.
Add the haft MCP server to Claude Code. Run this command: haft init --claude Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Haft installed, Run haft init in your project.
Read-only mode: No read-only mode.
Install Haft with the curl installer from the README, then run haft init in your project with the flag for your agent. That writes the right config for you. The manual haft serve config below is a fallback that the README does not show as a hand-written config.
From the project README. Source.
Tools
Saves a non-binding note
Stores a fact, observation, caveat or rationale in project memory, tied to the thing it is about and optionally given a freshness date.
Try: “Note that the billing service rate-limits at 100 requests a minute.”
Write ·
haft_noteFrames a problem
Writes down the problem being solved and the dimensions options will be compared on.
Try: “Frame the problem of slow CI builds with cost and speed as dimensions.”
Write ·
haft_problemExplores and compares options
Records distinct solution variants with a diversity check, then compares them under the same ground rules.
Try: “Compare Postgres, SQLite and DynamoDB for this service.”
Write ·
haft_solutionRecords a decision
Writes a decision with its invariants, claims, evidence and baseline. The README says it needs a direct, clear request from you.
Try: “Record that we chose Postgres, with the benchmark as evidence.”
Write ·
haft_decisionManages artifact lifecycle
Scans, reviews, waives, reopens, supersedes or deprecates existing records so stale ones are flagged instead of silently trusted.
Try: “Which of our decisions have gone stale?”
Write ·
haft_refreshSearches project memory
Searches and shows project status, the code graph and the stored records, and looks up the First Principles Framework source text.
Try: “What did we decide about caching?”
Read ·
haft_queryRuns task checklists
Opens a task-level method card with gates to pass before non-trivial work, then closes it with evidence or a recorded waiver.
Try: “Start a method run for this refactor.”
Write ·
haft_methodTracks delegated work
Manages work commissions, the records that say what an outside runner may do and how that work moves through its lifecycle.
Try: “Create a commission for the migration task.”
Write ·
haft_commissionManages spec sections
Handles typed spec sections stored in the project database. Approving, rebaselining and reopening a baseline are manual command-line steps.
Try: “Show the spec section status.”
Write ·
haft_spec_sectionChecks project setup
Reads setup status and prepares a non-binding initial project profile for your review.
Try: “What is the Haft setup status for this repo?”
Write ·
haft_onboardRegisters a thing of concern
Creates one minimal, non-binding record for a named thing your work depends on, when the work gives a concrete reason.
Try: “Register the payments service as an entity of concern.”
Write ·
haft_entityValidates raw memory changes
An expert tool that checks, and can admit, a raw batch of memory changes. Validation never admits changes by itself, and ordinary agents use haft_entity.
Try: “Validate this memory change set.”
Write ·
haft_memory
Read from the source code
Permissions
medium risk · 3 things to watch
Medium risk
It records notes and decisions on your disk and changes your agent config when you run haft init. It has no delete tool, but lifecycle actions can deprecate or supersede records.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It writes files in your project and home folder
haft init changes your agent config, adds skills, and edits a managed section of CLAUDE.md or AGENTS.md. Only the content between the haft markers is touched. Review the diff before committing. github.com
It can leave a large helper process running
An optional embedding helper may start a local process and use about 1 to 2 GB of RAM. Set embedding.provider to none in ~/.haft/config.yaml to keep it off. github.com
The installer is a script piped to bash
The README installs with curl piped to bash. Read install.sh first if you prefer. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Sign-in and keys | No account or API key. Records live in a local SQLite database under ~/.haft/projects and markdown files in the project .haft folder. |
|---|---|
| Data retention | Records stay on your machine until you remove them. |
Questions
Is the Haft MCP server official?
It is the Haft project's own server, made by m0n0x41d, and is not made by Anthropic, OpenAI or any coding-agent vendor. It does not connect to another product.
Which coding agents does it support?
Claude Code and Codex are the stable hosts. Grok, Pi, Hermes, Zed, Antigravity, Cursor, Gemini CLI and OpenCode are marked experimental or legacy.
Does it need an account or API key?
No. It runs locally and stores records in a SQLite database on your machine.
What does haft init do?
It sets Haft up in your project once. Depending on the flag, it writes the MCP config, installs skills and adds a managed section to CLAUDE.md or AGENTS.md.
Why does Cursor not show the tools?
The README says Cursor adds MCP servers disabled by default. Open Settings, then MCP, find haft and turn it on.
Is it open source?
Yes, under the MIT license in the repo, which adds a note that the First Principles Framework concepts belong to Anatoly Levenchuk. GitHub shows the license as unrecognized because of that extra text.
Can it delete my records?
No tool deletes them. The lifecycle tool can mark records deprecated or superseded, and you can reopen them.
Information
updated Nov 2, 2026
- Publisher
- Community
- Transport
- stdio
- Auth
- None
- Last commit
- Sep 28, 2026
- Open issues
- 13
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.