
Crossmatrix
io.github.praxecPublished by GitHub account praxecv0.3.4Updated Oct 24, 2026
Multidimensional House of Quality (QFD) MCP server — cross-dimensional relationship matrices.
Overview
Crossmatrix is a local MCP server for multidimensional House of Quality (QFD) models, letting an assistant record observations and read back matrices, gaps…
- What you can do
- Open, inspect and validate a model store, including status, describe, validate and export
- Declare configuration and dimensions: scales, relations, contractions, dimensions and member rosters
- Record observations and evidence on cells, deprecate members or relations, with versioned, audited writes
- Read analyses: slices, traces, coverage, orphan and next-step gaps, stale sources, conflicts and findings
- Generate a Markdown House of Quality report or export the merged model JSON
- Optionally, in special builds, ask a model for suggested observations, new members or a narrative
- When to use it
- Useful when you want an assistant to help build and maintain structured requirement trade-off analyses such as a House of Quality, jobs-to-be-done, competitive benchmarking, test coverage or risk matrices, with the model kept as reviewable files in a repository.
- Requirements
- Runs as a local stdio process; the recommended install is an npx launcher that downloads and checksum-verifies a platform binary, or a prebuilt binary installer. A model store is created with the init command. The optional AI-assist features require a special build, an explicit opt-in and an API key such as TYPESAFE_JEV_API_KEY or OPENROUTER_API_KEY.
Installation
In SourceWeft
- Open Crossmatrix in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
crossmatrix
Multidimensional House of Quality (QFD) — cross-dimensional relationship matrices for structured trade-off and requirement analysis. A Rust workspace: crossmatrix (engine) + crossmatrix-mcp (MCP server). Part of Praxec.
Install
npm / npx (recommended for MCP clients)
The @matthew-cochran/crossmatrix package is a small launcher: on first run it
downloads the release binary for your platform, verifies it against the
release's checksums.sha256, caches it, and runs it over stdio (signals are
forwarded; stdout belongs to MCP). CROSSMATRIX_MCP_BINARY points it at a binary
you installed yourself. The package also bundles the agent skills.
Prebuilt binary (no Rust, Cargo, or Git required)
The installer resolves your OS and CPU architecture, downloads the matching
release asset, verifies its SHA-256 against the release's checksums.sha256,
extracts it safely, and atomically installs the binary into a user-local
managed directory ($HOME/.local/bin on Linux/macOS,
%LOCALAPPDATA%\Programs\crossmatrix-mcp on Windows). It never compiles from
source and fails loudly on an unsupported OS/architecture.
Pin a specific release instead of the current latest stable:
The installer scripts are published as release assets alongside the binaries.
Or download the archive directly. Every release publishes a checksums.sha256
and a machine-readable release-manifest.json listing each target, asset,
digest, version, and source SHA:
"Native CI" means each asset is built and its MCP initialize/tools/list
handshake smoke-tested on that platform's own runner. No other CPU/OS
combination is claimed; unsupported platforms are rejected rather than
silently cross-compiled.
Updates
Re-run the installer to update. Only the binary in the managed install directory is replaced (atomically); application state and configuration live outside that directory and are never overwritten.
From source
produces the crossmatrix-mcp MCP stdio server.
Repo-committed models: .crossmatrix/
crossmatrix keeps a model as three documents linked by stable id@version
(ADR-0004), plus an append-only audit log, in a directory you commit:
Writes are canonical JSON (sorted keys, 2-space indent, trailing newline) and
atomic, so diffs stay small. Findings are computed on every read and never
stored. check exits non-zero with path-specific diagnostics (for example
state/demo.json: cells[3].to: unknown member 'x' in dimension 'dim_part');
run it in CI.
The server finds its store from, in order: CROSSMATRIX_DIR, the nearest
ancestor directory containing .crossmatrix/, $XDG_DATA_HOME/crossmatrix
(or ~/.local/share/crossmatrix), then ./crossmatrix-state. model.status
reports the resolved root.
CLI
Tools
Two MCP tools, crossmatrix.command (writes) and crossmatrix.query (reads).
Every response, including a rejection, carries links to the legal next ops;
a rejection's structuredContent is {ok: false, error: {code, message}, links}.
Writes (crossmatrix.command)
Observation-only: a numeric member weight is accepted only with
sourceRef.system (a deterministic import), and a measuredValue only with
provenanceClass: observed plus a sourceRef. expectedVersion is an
optimistic lock; requestId makes a command idempotent, also across restarts.
Each accepted mutation appends one audit line {ts, requestId, actor, op, beforeVersion, afterVersion, summary}.
The legacy one-call flow still works: a command carrying a full model
imports it into the session (in memory) for the queries that follow.
Reads (crossmatrix.query)
model.status, describe, slice, trace, explain, coverage,
gaps.orphans, gaps.next, stale, conflicts, analyze.marginalize,
analyze.contract, analyze.findings, validate, report, export.
report {relationId?}returns a Markdown House of Quality: weights, the relationship matrix, the correlation roof (a self-relation), technical importance, targets (attributes.target), coverage and findings with contributors. WithoutrelationIdit covers every relation.export {format: model|report|findings}returns the merged model JSON.conflicts {relationId?}lists valence-by-separation tensions and conflicts.traceandsliceaccept a member id or asourceRef.uri, page withlimit/cursor, and withrollup: trueroll leaf observations up acontainshierarchy (a directory implements a feature if any file under it does).stale {hashes?, readFiles?}compares stored source hashes with current ones (readFileshashesfile://sources inside the project) and returns the changed members plus every cell that references them, paged.
AI assist (optional, off by default)
Two optional cargo features add model-backed helpers. Neither is in the default
build or the release binaries unless you build with them, both need an explicit
opt-in and a key, and neither ever writes an analysis number: suggestions
are recorded as proposed observations that count in no analysis until a human
or LLM confirms the cell with an ordinary observe.
Configuration: Jev uses https://api.typesafe.ai with jev-latest when
TYPESAFE_JEV_API_KEY is set, otherwise OpenRouter with ~typesafe/jev-latest;
override with CROSSMATRIX_JEV_BASE_URL, CROSSMATRIX_JEV_MODEL and
CROSSMATRIX_JEV_TIMEOUT_SECS. Rig uses OpenRouter with CROSSMATRIX_RIG_MODEL
(default openai/gpt-5-mini) and CROSSMATRIX_RIG_TIMEOUT_SECS. Calls are
bounded (timeout, cells per call, token budget) and every response reports
usage. Without the feature, opt-in or key, the query returns
{ok: false, status: "assist_unavailable", reason, links}.
Agent skills
crossmatrix ships Agent Skills that teach an agent the method and
common uses. Install them into a project (or --user) for one client or all:
Targets: claude, codex, cursor, copilot, gemini, agents-md, all. A
.crossmatrix-skills.json manifest records file hashes, so re-installs update
only files you have not edited (--force overwrites them) and uninstall
removes only unmodified files. The installer never edits MCP configuration; it
prints the registration command instead
(claude mcp add crossmatrix --scope user -- npx -y @matthew-cochran/crossmatrix).
Using it with Praxec
This is an MCP tool used by Praxec packs. The easiest way to get it — and a workflow pack that uses it — up and running is the one-command setup:
See the pack registry for this tool's provider coordinates (container image / release binary) and which packs depend on it.
Releasing
Maintainers: see docs/releasing.md (version bump, dev → main, tag, scripts/npm-release.sh, crates.io, rollback).
License
Source: README.md at commit 3555966
Tools
0Version history
4- v0.3.4LatestOct 22, 2026
- v0.3.3Oct 20, 2026
- v0.3.2Oct 16, 2026
- v0.3.1Oct 13, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts