Deterministic multi-criteria decision analysis for AI agents β score, rank & explain options.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A transparent, 100% deterministic Model Context Protocol (MCP) server that gives LLM agents a reliable multi-criteria decision analysis (MCDA) engine.
Agents are great at gathering options but unreliable at weighing them: they lose precision, apply inconsistent weights, and can't show their work. DecisionMatrix offloads the scoring to an exact, explainable engine. You provide options and weighted criteria (plus a score matrix); it returns a fully scored, ranked, and explained result β with per-criterion breakdowns, the methodology used, the weights applied, and a plain-language explanation.
Every number flows through decimal.js at
40-digit precision (never floats), so identical inputs always produce
byte-identical output. The server is stateless β no database, no sessions.
A public remote MCP server runs on Cloudflare's edge β point any Streamable-HTTP MCP client at it:
It runs in open mode on the free tier (no key, 15 calls/day per IP). Paid plans
(Starter $12/mo Β· 5,000/day, Pro $39/mo Β· 50,000/day) are live via Stripe
Checkout β buy a plan, get an API key instantly, and send it as X-API-Key. Self-host
for unlimited calls with no keys. Landing page + pricing: https://decisionmatrix-mcp.pages.dev.
Six tools, all returning a uniform, agent-parseable envelope:
| Tool | Purpose |
|---|---|
create_decision | Main tool. Rank options against weighted criteria β winner, full ranking, per-criterion breakdowns, methodology, weights, and a plain-language explanation. |
score_options | Return the full normalized scored matrix when scores are supplied separately. |
sensitivity_analysis | Sweep each criterion's weight Β±X% and report how robust the winner is (and where it flips). |
compare_two | Head-to-head comparison of exactly two options with per-criterion win counts. |
list_methods | Discovery: available scoring methods and when to use each. |
health_check | Version, status, and capabilities. |
| method | model | normalization | notes |
|---|---|---|---|
weighted_sum (default) | Simple Additive Weighting (SAW) | min-max per criterion | Most transparent; additive contributions. Handles negatives. |
weighted_product | Weighted Product Model (WPM) | ratio (x/max, min/x) | Punishes any single weak criterion; requires scores > 0. |
topsis | Closeness to ideal solution | vector (Euclidean) | 0β1 closeness coefficient; robust with many criteria. |
Each criterion has a direction: benefit (higher is better β quality, speed) or
cost (lower is better β price, latency, risk). Weights are relative; they are
normalized to sum to 1 internally.
Every successful response contains: status, method, winner, ranking
(with per-criterion breakdown), methodology, weights_used, inputs_used,
notes, and a natural-language explanation.
Errors never cross the tool boundary as exceptions β they come back as a structured, actionable envelope:
Design note β exact numbers:
scoreis a deterministically-rounded number (6 dp) for easy consumption;score_exact/raw_scoreare full-precision strings so no precision is lost in JSON. Rankings are computed on the exact values, with input order as a stable tie-break.
Separation of concerns: engine.mjs is pure and transport-agnostic (import it
directly in tests or any Node/Deno/edge runtime); index.mjs only handles the MCP
JSON-RPC wiring, HTTP, CORS, and the auth/metering seam.
decimal.js (math) and esbuild (bundler).Quick manual call:
Run the server locally over stdio with a single command β nothing to deploy:
Claude Desktop / any stdio MCP client (claude_desktop_config.json):
This is the same deterministic engine as the hosted server, running on your machine.
~/.cursor/mcp.jsonclaude_desktop_config.jsonClaude Desktop launches stdio servers, so bridge to the HTTP endpoint with mcp-remote:
.vscode/mcp.jsonPoint it at https://decisionmatrix-mcp.pages.dev/mcp (or your self-hosted URL). If
you enable auth, add X-API-Key (or Authorization: Bearer <key>) in the client's
headers.
create_decision(options, criteria, scores, method="weighted_sum")["Vendor A","Vendor B"]) or objects
([{"name":"Vendor A","scores":{...}}]). Minimum 2, names unique.{ "name", "weight" (>=0), "direction": "benefit"|"cost" }.
At least one weight must be > 0.{ "Vendor A": { "Price": 100, "Quality": 8 }, ... }[ { "option": "Vendor A", "scores": { ... } }, ... ]weighted_sum (default) Β· weighted_product Β· topsis (aliases like
saw, wpm, ideal also resolve).score_options(options, criteria, scores, method)Same inputs as create_decision; returns the full scored matrix (per-option,
per-criterion normalized scores + totals) without the winner narrative.
sensitivity_analysis(options, criteria, scores, method, variation=0.2, steps=10)Sweeps each criterion's weight from -variation to +variation (fractional, e.g.
0.2 = Β±20%) in steps increments (2β100), renormalizing the others, and recomputes
the winner each time. Returns a robustness_score (share of scenarios the baseline
winner stays #1), the fragile_criteria, and per-criterion flip points.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/decisionmatrix-mcp)<a href="https://allmcps.com/mcp/decisionmatrix-mcp"><img src="https://allmcps.com/api/badge/decisionmatrix-mcp?style=directory" alt="Decisionmatrix MCP on AllMCPs" /></a>