PlugWiki
haft logo

Haft MCP Server: Project Memory and Decision Records for Coding Agents

CommunityLocal

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.

Install haft MCP

Claude Code

  1. 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. 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_note

  • Frames 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_problem

  • Explores 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_solution

  • Records 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_decision

  • Manages 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_refresh

  • Searches 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_query

  • Runs 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_method

  • Tracks 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_commission

  • Manages 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_section

  • Checks 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_onboard

  • Registers 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_entity

  • Validates 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 keysNo account or API key. Records live in a local SQLite database under ~/.haft/projects and markdown files in the project .haft folder.
Data retentionRecords 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

WebsiteGitHubChangelogIssues

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 3
  1. README.md · github.com
  2. serve.go · github.com
  3. LICENSE · github.com

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.