Local Model Suitability MCP

Check if a task runs locally vs cloud. Save money on calls that don't need cloud inference.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~530Tokens (tool definitions)
~4.9 KBTypical response size
Minimal attention impact (0.41% 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": {
    "local-model-suitability-mcp": {
      "command": "npx",
      "args": [
        "local-model-suitability-mcp"
      ]
    }
  }
}

Runnable packages

npmlocal-model-suitability-mcp1.1.23stdio

Remote endpoints

https://local-model-suitability-mcp-production.up.railway.appstreamable-http

What it can do

Tool inventory

Tools (1)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_local_viability(task, quality_threshold, data_sensitivity)

Checks whether a task can be handled by a local model instead of a cloud API. Call this BEFORE your agent routes any task to a cloud model — at the moment a task is ready to be sent and the model has not yet been selected. Use this when your agent is about to make a cloud inference call and wants to determine whether a local model could handle it at lower cost. Returns LOCAL/CLOUD/EITHER verdict with recommended model. If verdict is LOCAL, skip the cloud call entirely — saves cost on every routable inference call. Pass data_sensitivity=CONFIDENTIAL to force LOCAL verdict for tasks that must not leave the machine. Do not route to cloud without checking local viability first.

Input Schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "description": "The exact task you are about to send to a cloud model. Be specific — include what the input is and what output you need."
    },
    "quality_threshold": {
      "type": "string",
      "enum": [
        "PRODUCTION",
        "PROTOTYPE",
        "BEST_EFFORT"
      ],
      "description": "PRODUCTION = output quality matters and errors are costly. PROTOTYPE = approximate results acceptable. BEST_EFFORT = speed and cost trump quality. Defaults to PRODUCTION."
    },
    "data_sensitivity": {
      "type": "string",
      "enum": [
        "PUBLIC",
        "INTERNAL",
        "CONFIDENTIAL"
      ],
      "description": "CONFIDENTIAL forces LOCAL verdict regardless of task complexity — data must not leave the machine. Defaults to PUBLIC."
    }
  },
  "required": [
    "task"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "verdict": {
      "type": "string",
      "enum": [
        "LOCAL",
        "CLOUD",
        "EITHER"
      ]
    },
    "confidence": {
      "type": "string",
      "enum": [
        "HIGH",
        "MEDIUM",
        "LOW"
      ]
    },
    "reason": {
      "type": "string"
    },
    "estimated_cost_saving": {
      "type": "string"
    },
    "recommended_local_models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Present when verdict is LOCAL or EITHER"
    },
    "cloud_justified_reason": {
      "type": [
        "string",
        "null"
      ],
      "description": "Non-null only when verdict is CLOUD"
    },
    "data_sensitivity_override": {
      "type": "boolean",
      "description": "Present only when data_sensitivity=CONFIDENTIAL forced a LOCAL verdict"
    },
    "task_quality_threshold": {
      "type": "string",
      "enum": [
        "PRODUCTION",
        "PROTOTYPE",
        "BEST_EFFORT"
      ]
    },
    "data_sensitivity": {
      "type": "string",
      "enum": [
        "PUBLIC",
        "INTERNAL",
        "CONFIDENTIAL"
      ]
    },
    "analysis_type": {
      "type": "string"
    },
    "checked_at": {
      "type": "string",
      "format": "date-time"
    },
    "_disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "verdict",
    "confidence",
    "reason",
    "checked_at",
    "_disclaimer"
  ],
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded1 tools
verifiedversion not recorded1 tools