decisionmatrix-mcp
Deterministic multi-criteria decision analysis for AI agents — score, rank & explain options.
Should I use this
Quality & Safety
Findings (2)
- LOWin compare_two
- LOWin health_check
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"decisionmatrix-mcp": {
"command": "npx",
"args": [
"decisionmatrix-mcp"
]
}
}
}Runnable packages
1.0.2stdioRemote endpoints
https://decisionmatrix-mcp.pages.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟡create_decision(options, criteria, scores, method)
Rank named options against weighted criteria and return the winner, full ranking, per-criterion score breakdowns, methodology, the weights used, and a plain-language explanation. This is the main tool. Provide options, criteria [{name, weight, direction}], and a scores matrix. method defaults to weighted_sum (also: weighted_product, topsis). 100% deterministic.
Input Schema
{
"type": "object",
"properties": {
"options": {
"type": "array",
"description": "Named alternatives. Strings [\"A\",\"B\"] or objects [{\"name\":\"A\",\"scores\":{...}}].",
"items": {
"type": [
"string",
"object"
]
}
},
"criteria": {
"type": "array",
"description": "Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"benefit",
"cost"
],
"default": "benefit"
}
},
"required": [
"name",
"weight"
]
}
},
"scores": {
"description": "Score matrix. Object form: {\"Option A\": {\"Criterion 1\": 8, ...}, ...}. Array form: [{\"option\":\"Option A\",\"scores\":{...}}]. Or inline scores on each option object.",
"type": "object"
},
"method": {
"type": "string",
"enum": [
"weighted_sum",
"weighted_product",
"topsis"
],
"default": "weighted_sum"
}
},
"required": [
"options",
"criteria",
"scores"
]
}🟡score_options(options, criteria, scores, method)
Score options against criteria when the score matrix is supplied separately. Returns the full normalized scored matrix (per-option, per-criterion) plus a ranking, without the narrative winner explanation. Use create_decision if you want a winner + explanation.
Input Schema
{
"type": "object",
"properties": {
"options": {
"type": "array",
"description": "Named alternatives. Strings [\"A\",\"B\"] or objects [{\"name\":\"A\",\"scores\":{...}}].",
"items": {
"type": [
"string",
"object"
]
}
},
"criteria": {
"type": "array",
"description": "Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"benefit",
"cost"
],
"default": "benefit"
}
},
"required": [
"name",
"weight"
]
}
},
"scores": {
"description": "Score matrix. Object form: {\"Option A\": {\"Criterion 1\": 8, ...}, ...}. Array form: [{\"option\":\"Option A\",\"scores\":{...}}]. Or inline scores on each option object.",
"type": "object"
},
"method": {
"type": "string",
"enum": [
"weighted_sum",
"weighted_product",
"topsis"
],
"default": "weighted_sum"
}
},
"required": [
"options",
"criteria",
"scores"
]
}⚪sensitivity_analysis(options, criteria, scores, method, variation, ...)
Test how robust the winner is to changes in criteria weights. Sweeps each criterion's weight +/- 'variation' (default 0.2 = 20%) over 'steps' (default 10) increments, recomputes the ranking, and reports a robustness score, which criteria are most likely to flip the result, and the flip points.
Input Schema
{
"type": "object",
"properties": {
"options": {
"type": "array",
"description": "Named alternatives. Strings [\"A\",\"B\"] or objects [{\"name\":\"A\",\"scores\":{...}}].",
"items": {
"type": [
"string",
"object"
]
}
},
"criteria": {
"type": "array",
"description": "Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"benefit",
"cost"
],
"default": "benefit"
}
},
"required": [
"name",
"weight"
]
}
},
"scores": {
"description": "Score matrix. Object form: {\"Option A\": {\"Criterion 1\": 8, ...}, ...}. Array form: [{\"option\":\"Option A\",\"scores\":{...}}]. Or inline scores on each option object.",
"type": "object"
},
"method": {
"type": "string",
"enum": [
"weighted_sum",
"weighted_product",
"topsis"
],
"default": "weighted_sum"
},
"variation": {
"type": "number",
"default": 0.2,
"description": "Fractional weight sweep, 0<v<=1. 0.2 = +/-20%."
},
"steps": {
"type": "integer",
"default": 10,
"description": "Number of weight steps per criterion (2-100)."
}
},
"required": [
"options",
"criteria",
"scores"
]
}⚪compare_two(option_a, option_b, options, criteria, scores, ...)
Direct head-to-head comparison of exactly two options. Returns the winner, the score margin, how many criteria each option wins, and a per-criterion breakdown of who each criterion favours. Pass option_a and option_b (names) or a 2-element options array, plus criteria and scores.
Input Schema
{
"type": "object",
"properties": {
"option_a": {
"type": "string"
},
"option_b": {
"type": "string"
},
"options": {
"type": "array",
"description": "Named alternatives. Strings [\"A\",\"B\"] or objects [{\"name\":\"A\",\"scores\":{...}}].",
"items": {
"type": [
"string",
"object"
]
}
},
"criteria": {
"type": "array",
"description": "Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"benefit",
"cost"
],
"default": "benefit"
}
},
"required": [
"name",
"weight"
]
}
},
"scores": {
"description": "Score matrix. Object form: {\"Option A\": {\"Criterion 1\": 8, ...}, ...}. Array form: [{\"option\":\"Option A\",\"scores\":{...}}]. Or inline scores on each option object.",
"type": "object"
},
"method": {
"type": "string",
"enum": [
"weighted_sum",
"weighted_product",
"topsis"
],
"default": "weighted_sum"
}
},
"required": [
"criteria",
"scores"
]
}🟢list_methods
List the available scoring methods (weighted_sum, weighted_product, topsis) with descriptions, normalization details, score ranges, and when to use each. No parameters.
Input Schema
{
"type": "object",
"properties": {}
}🟢health_check
Server health, version, and capabilities. No parameters.
Input Schema
{
"type": "object",
"properties": {}
}Community
Evidence