decisionmatrix-mcp

Deterministic multi-criteria decision analysis for AI agents — score, rank & explain options.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
73%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'compare_two' description lacks action verbin compare_two
  • LOWTool 'health_check' description lacks action verbin health_check

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,397Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.09% of 128k context)

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

npmdecisionmatrix-mcp1.0.2stdio

Remote endpoints

https://decisionmatrix-mcp.pages.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools