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
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": {
"local-model-suitability-mcp": {
"command": "npx",
"args": [
"local-model-suitability-mcp"
]
}
}
}Runnable packages
1.1.23stdioRemote endpoints
https://local-model-suitability-mcp-production.up.railway.appstreamable-httpWhat it can do
Tool inventory
Tools (1)
🟢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
Evidence