Heuresis MCP server
io.github.ToremLabs/heuresis·v1.0.0-rc.9Read & write your Heuresis idea graph and run TRIZ/C-K/ASIT operators from your AI assistant.
0 stars33 downloads/wk
Reviews
Write oneNobody has reviewed Heuresis yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Heuresis tools (34, 12 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_conceptwrite actionCreate a new concept (Node). If parentId is given, the concept becomes a CHILD of that concept and a partition edge is auto-created. If parentId is omitted, the concept attaches to the project root.
add_krefConvenience: create a k-ref (knowledge reference) edge from fromId → toId. Equivalent to link_concepts with kind=k-ref.
add_to_ideaAdd a single concept to an existing Idea (idempotent).
archive_conceptArchive a concept (status=archived). Reversible via unarchive_concept.
bulk_add_conceptswrite actionCreate many concepts in a single atomic transaction. `items` is an array; each item carries label / description? / parentId? / projectId? / tags?. project_id is resolved per-item (explicit > inherited from parent > workspace solo project). Returns the created ids in input order.
create_ideawrite actionCreate a new Idea (a named grouping of concepts) with an optional color and optional starting node membership.
create_projectwrite actionCreate a new Project (problem-with-direction) with a name and brief. Optional `direction`.
delete_ideawrite actionDelete an Idea. Membership rows cascade via FK; the underlying concepts are untouched.
delete_projectwrite actionDelete a project. Project_nodes / problem_frames / closed_worlds / lab_matrix_cells cascade via FK. Concepts that belonged to ONLY this project are orphaned (project_id → NULL) — they are NOT auto-deleted.
expand_conceptRecursive Branch — expand a concept by `breadth` children at each of `depth` levels (depth*breadth ≤ 60). Commits each level immediately so the webapp shows partial results as the run progresses. Optionally takes an `angle` hint that biases the underlying EXPLORE operator. Best when the anchor has few or no children yet; on a dense subtree consider `run_operator(family="explore")` so the operator
find_conceptsFind concepts by label/substring match. Returns up to k hits, each with id, label, status.
get_conceptOne concept by id, optionally with its ancestry (parent chain), direct children, and idea memberships.
get_project_graphEvery node + edge inside one project. Returns a graph the agent can reason over end-to-end. Use for project-wide questions.
get_subtreeA node and its descendants up to a given depth. Use when the user asks "tell me about everything under X".
get_workspace_summaryCounts of nodes / edges / projects / ideas + a one-line overview of each project and idea. Always start here when you don't know what's in the workspace.
link_conceptswrite actionCreate an edge between two concepts. kind is one of: 'k-ref' (knowledge reference), 'derived-from' (provenance link), 'semantic-adjacency' (sibling kinship). Partition (parent/child) edges are managed via add_concept / set_parent.
list_conceptsList concepts in the workspace or one project. Returns id / label / status / parentId / tags up to `limit` entries (default 500). Use BEFORE making changes to learn what already exists.
list_edgesList every edge in the workspace (or restricted to a project). Filter by kind: partition / k-ref / semantic-adjacency / derived-from / imported-from.
list_projectsEvery project in the workspace with brief, direction, lifecycle, and node count. Use this to figure out which project the user is asking about.
list_recent_decisionsNodes the user has explicitly resolved (validated, starred, or archived) recently. Use to surface "what did we conclude last week" without a full scan.
recolor_ideaChange an Idea's color (any CSS color string).
remove_conceptwrite actionHard-delete a concept and its descendants (walks the parent_id subtree). Edges and project/idea memberships cascade via FK. Refuses to delete a project root node.
rename_ideaRename an Idea.
run_operatorwrite actionRun an ASIT / TRIZ / Contradiction / Free / Combine / Explore operator against one concept (the anchor). Returns CANDIDATE concepts WITHOUT committing them — call `bulk_add_concepts` (or `run_operator_and_commit`) to persist. Use this when you want the agent to vet the candidates before writing. The anchor must already live in a project; the operator pulls in ancestry + validated knowledge in the
run_operator_and_commitwrite actionSame as `run_operator`, but immediately writes every top-level candidate as a child of the anchor with a partition edge and a provenance row stamped origin='mcp'. Use when the agent is confident the candidates should land directly on the canvas (e.g. inside an autonomous expand loop). Children-of-children proposed in `partitions[].children` are NOT auto-committed — request them via a separate run.
search_conceptsSubstring search across concept labels, descriptions, partition attributes, rationale, and tags. Use this when the user mentions a concept by name and you don't have its id. (Semantic search is a Phase 19.5 enhancement.)
set_idea_membersReplace an Idea's full membership with `nodeIds`. Reconciles the junction table: inserts missing pairs, deletes pairs no longer in the set. Returns added / removed counts.
set_parentRe-parent an existing concept: nodeId's parent becomes newParentId (or detached when null). Updates BOTH node.parent_id AND the partition edge so the canvas tree stays in sync.
set_standingSet a concept's STANDING — how known / proven the idea is in the wider world. `standing` ∈ 'novel' | 'emerging' | 'established' | 'unknown'. `rationale` is a one-sentence justification (saved as `standing_rationale`). Use this when classifying / judging novelty.
star_conceptToggle the starred flag on a concept (user-favorite marker).
unarchive_conceptRevive a previously-archived concept (status=open). Idempotent on already-open nodes.
update_conceptwrite actionUpdate an existing concept's label, description, tags, partitionAttribute, rationale, or status. Only the fields provided are changed.
update_projectwrite actionUpdate a project's name / brief / direction / lifecycle. Only fields provided are changed.
validate_conceptMark a concept as validated (status=validated). Optionally also overwrite `rationale`. Idempotent on already-validated nodes.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan26 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 113 days ago8/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Heuresis compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 82/100
- higher than 63% of 48,255 servers
- Tools
- 34
- the typical server has 7
- Tools that change things
- 35%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 33
- more than 22% of 12,191 servers with a package
What its tools let an agent do: 15 read · 5 create · 8 change · 4 delete · 2 run or deploy
Install Heuresis in Claude Code, Cursor or VS Code
Runs npx -y @heuresis/mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add heuresis -- npx -y @heuresis/mcp
What the publisher says
From the Heuresis repository's README, as published. We do not edit it. Read it on GitHub
@heuresis/mcp
A Model Context Protocol (MCP) server that exposes a Heuresis workspace to any MCP-capable client (Claude Desktop, Claude Code, Cursor, Windsurf, custom agents). The server logs into the user's Heuresis account, talks to the same Supabase project the webapp talks to, and respects the same RLS. Webapp and MCP are two front-ends to one cloud workspace.
Current version: 1.0.0-rc.13.
Install
npm install -g @heuresis/mcp
# or on demand without installing:
npx -y @heuresis/mcpPackage name vs. command name. The npm package is @heuresis/mcp; the
command it installs is heuresis-mcp. A bare npx -y @heuresis/mcp (no
subcommand) starts the MCP server fine, but npx @heuresis/mcp login can
fail with heuresis-mcp: not found because npx derives the command name
from the scope-stripped package name (mcp), which doesn't match. To run a
subcommand reliably on every npm/OS, name the binary explicitly with -p:
bash
npx -y -p @heuresis/mcp heuresis-mcp login
Quickstart
1. Link this machine to your Heuresis account
npx -y -p @heuresis/mcp heuresis-mcp loginThe CLI prints a device code and a one-click URL of the form https://heuresis.app/device?code=XXXX-XXXX. Open it in your browser, sign in if you aren't already, and confirm the device. The CLI polls in the background and writes credentials to ~/.heuresis/credentials.json (chmod 600 on POSIX) the moment you confirm. Subsequent runs of the MCP are silent.
The login flow rides three Supabase Edge Functions: mcp-device-init, mcp-device-grant, and mcp-device-poll.
To unlink a machine: npx -y -p @heuresis/mcp heuresis-mcp logout, or open Settings ▸ Connected devices in the webapp to revoke remotely.
npx -y -p @heuresis/mcp heuresis-mcp whoami confirms which account a machine is currently linked to.
2. Point your MCP client at it
Claude Desktop. Edit ~/Library/Application Support/Claude/claudedesktopconfig.json on macOS, or %APPDATA%/Claude/claudedesktopconfig.json on Windows:
{
"mcpServers": {
"heuresis": { "command": "npx", "args": ["-y", "@heuresis/mcp"] }
}
}Claude Code / Cursor / Windsurf. Drop a .mcp.json in the workspace root:
{
"mcpServers": {
"heuresis": { "command": "npx", "args": ["-y", "@heuresis/mcp"] }
}
}Restart the client. The Heuresis tools appear in the tool menu.
3. CLI subcommands
npx -y -p @heuresis/mcp heuresis-mcp whoami # show the linked account + device
npx -y -p @heuresis/mcp heuresis-mcp logout # delete the credentials file
npx -y -p @heuresis/mcp heuresis-mcp --help # all options
npx -y @heuresis/mcp --no-realtime # boot the server with live sync off (persisted)
npx -y @heuresis/mcp --realtime # re-enable live syncHeadless mode (CI, cloud agents, disposable containers)
Device pairing writes a refresh token to disk. That works great on a personal machine, but it does not survive disposable/ephemeral environments (CI runners, cloud agent containers, "Claude Code on the web"): the filesystem is wiped between runs, and a Supabase refresh token is single-use under rotation — so a token baked into config dies after the first session.
For those environments, skip pairing and let the server sign in fresh on every boot from your account email + password (a password is not consumed on use, so it works forever with no re-pairing). Set three env vars:
HEURESIS_EMAIL=you@example.com # your Heuresis account email
HEURESIS_PASSWORD=your-account-password # secret — store it in a secrets manager
HEURESIS_ANON_KEY=sb_publishable_... # project anon/publishable key (public, not a secret)
# optional: HEURESIS_SUPABASE_URL=... # defaults to the production projectShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Heuresis: common questions
- Is Heuresis MCP server safe?
- Mostly: it is graded B (82/100). Read the Heuresis safety report
- How do I install Heuresis?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Heuresis need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Heuresis maintained?
- The last commit was 151 days ago (2026-06-06). The latest release is v1.0.0-rc.9.
- How does Heuresis compare with other MCP servers?
- safety score 82/100 (higher than 63% of 48,255 servers); tools 34 (the typical server has 7); tools that change things 35% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.