Skip to main content
Glama

local-llm-mcp

local-llm-mcp hero

terminal demo

Why I built this

One afternoon I watched Claude Code reach for a frontier model — the good one, the one my credit card feels — to generate an __init__.py. Then a pytest skeleton. Then a throwaway first draft of a function I was about to rewrite anyway.

That's when it clicked: I was paying senior-engineer rates for a senior engineer's typing. The thinking — reading my repo, planning the change, reviewing the diff, deciding what's safe to ship — that's what the expensive model is for. The boilerplate is not.

So I did the lazy thing. I already had LM Studio running on my Mac, doing nothing between prompts. Why not let the cheap model on my own machine handle the grunt work, and keep the frontier brain for the calls that actually matter?

One snag: my Mac has 24GB of RAM, and local models cheerfully ate all of it until the whole session froze. So the first thing I built wasn't the clever delegation — it was a dumb RAM valve that refuses a local call when memory runs low. Everything else grew around that.

That's all local-llm-mcp is: a small MCP server that hands your coding agent an intern. The intern only ever returns text — it can't read your repo, edit a file, or run a command — and the senior model reviews everything before a single line changes.

The whole idea in one line: senior model decides, local model types.

Related MCP server: Relay

Try it in three commands

git clone https://github.com/HenryLinyy/local-llm-mcp
cd local-llm-mcp
bash setup.sh        # venv + registers with Claude Code & Codex + smoke test

Then open a fresh Claude Code or Codex session. No API keys needed — local backends work out of the box. setup.sh even picks a RAM threshold based on your machine.

The mental model

Claude Code / Codex   the senior — reads the repo, plans, edits, runs tests, reviews
local-llm-mcp         hands one bounded task to the intern over MCP
Ollama / LM Studio    the intern — drafts boilerplate, tests, docs, summaries, for $0

A local 7B model costs $0 per token. My frontier agent does not. The rest is arithmetic — and I'll get to the arithmetic honestly below.

The intern can't touch your repo. That's not a missing feature; it's the point. I never have to trust the cheap model with anything that matters — worst case, it hands back a bad draft and the senior throws it out.

delegation boundary

What I hand the intern / what stays on my desk

✅ Hand to the intern

🚫 Keep with the senior

README & docstring first drafts

Final architecture decisions

Boilerplate, config, glue code

Security & correctness sign-off

pytest / unittest scaffolds

Anything that edits the repo

Long-file summaries

Running shell commands

Repetitive format conversions

Applying a patch unreviewed

"Sketch 3 alternative approaches"

Any judgment call

My rule of thumb: if a wrong answer is cheap to catch, delegate it. If it's expensive to catch, don't.

How I actually use it

There's no API to learn. I just tell the senior to delegate, in plain English:

Use ask_local_model with backend="ollama" to draft a pytest suite for this module.
Don't apply it — review it first, then edit the repo yourself.
Call local_status. If a local model is up, use it for boilerplate.
Otherwise fall back to backend="deepseek".

More of my go-to prompts are in examples/claude-code-prompts.md.

Bring any intern you like

Local backends need nothing but a running server. Cloud backends are optional — they read their key from an env var or keys.json, never from source.

Backend

Type

Protocol

Default URL

Default model

Key

lmstudio

local

OpenAI

http://localhost:1234/v1

qwen/qwen3-coder-next

ollama

local

OpenAI

http://localhost:11434/v1

qwen2.5-coder:7b

vllm

local

OpenAI

http://localhost:8001/v1

auto

llamacpp

local

OpenAI

http://localhost:8080/v1

auto

ds4

local

OpenAI

http://127.0.0.1:8000/v1

auto

deepseek

cloud

OpenAI

https://api.deepseek.com/v1

deepseek-v4-flash

DEEPSEEK_API_KEY

openrouter

cloud

OpenAI

https://openrouter.ai/api/v1

anthropic/claude-sonnet-4

OPENROUTER_API_KEY

groq

cloud

OpenAI

https://api.groq.com/openai/v1

openai/gpt-oss-120b

GROQ_API_KEY

cerebras

cloud

OpenAI

https://api.cerebras.ai/v1

gpt-oss-120b

CEREBRAS_API_KEY

agnes

cloud

OpenAI

https://apihub.agnes-ai.com/v1

agnes-2.0-flash

AGNES_API_KEY

minimax

cloud

Anthropic

https://api.minimaxi.com/anthropic

MiniMax-M3

MINIMAX_API_KEY

Every URL and default model is env-overridable. Running something exotic? Add a custom backend — no Python required.

The tools it exposes

Tool

Purpose

ask_local_model

Send a prompt to a backend, get back text + usage metadata.

list_backends

Show configured backends, URLs, protocols, key status.

local_status

Memory, guard state, backend reachability, config paths.

list_local_models / list_models

List model IDs from backends that expose GET /models.

set_backend

Add, update, or remove a custom backend live.

refresh_backends

Reload custom_backends.json without restarting.

set_guard

Change the RAM / exclusivity guards live.

set_system_prefix

Pin a system prefix for prompt-cache-friendly cloud calls.

The intern is on a short leash

I learned this the hard way, so you don't have to. Two guards:

  1. RAM valve — local calls are refused when free memory drops below LOCAL_LLM_MIN_FREE_GB. This is the feature that exists because I froze my own machine one too many times.

  2. Exclusive backend — when a heavy local server (ds4 by default) is up, other local backends stand down instead of fighting over memory.

Tune them live, no restart: set_guard(min_free_gb=8), set_guard(exclusive_backend="none").

And secrets never enter gitkeys.json, config.json, and custom_backends.json are all gitignored; keys load from env vars or a chmod 600 file. Cloud backends skip the RAM guard, but they send your prompts to a third party and may cost money — read SECURITY.md before pointing one at proprietary code.

So how much does it save?

Here's where most READMEs lie to you with a big number. I'm not going to.

The honest answer is it depends entirely on your workload, so instead of inventing a percentage I shipped a harness to measure your own:

python scripts/benchmark.py --backend ollama --model qwen2.5-coder:7b --out results.jsonl

Compare premium-only vs. delegated mode with BENCHMARK.md and the runbook. Trust your numbers — not mine, and definitely not a number a README made up to get you to star it.

Add it straight from the tool:

set_backend(name="my_qwen", base_url="http://localhost:9000/v1", default_model="qwen3-coder", local=1, protocol="openai")

…or drop it in custom_backends.json and call refresh_backends. See examples/custom_backends.openrouter.json.

python3 -m venv .venv
.venv/bin/python -m pip install -e .

# Claude Code
claude mcp add local-llm -s user -e LOCAL_LLM_MIN_FREE_GB=16 -- "$PWD/.venv/bin/python" "$PWD/server.py"

# Codex
codex mcp add local-llm --env LOCAL_LLM_MIN_FREE_GB=16 -- "$PWD/.venv/bin/python" "$PWD/server.py"
python -m unittest discover -s tests -v
python scripts/smoke_test.py

CI runs both on Python 3.10, 3.11, and 3.12.

FAQ

Does the intern touch my files? Never. It returns text; every edit goes through the senior (your main agent).

Do I need a beefy GPU? No. 7B coder models run on modest hardware, and the RAM valve keeps you from OOMing. No local model handy? Point the intern at a cheap cloud backend.

Is this a fusion model or an autonomous agent? Neither. It's a delegation layer — a tool your existing agent calls.

Why not just switch my agent to a cheap model entirely? Because I want the frontier model's judgment and the cheap model's typing. This keeps both.

Windows / Linux? The server is cross-platform (the RAM guard reads vm_stat on macOS, /proc/meminfo on Linux). The shell helpers are macOS/zsh-flavored.

My other experiments in this space

  • qwable — a local multi-model gateway and agent runtime for Codex & Claude Code on Apple Silicon.

  • Conclava — a council of local LLMs with task-aware routing and multi-model deliberation.

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. If this saved you some tokens, a ⭐ tells me it was worth open-sourcing.

License

MIT — see LICENSE. Built by someone who got tired of paying frontier prices for import os.

Available Tools

9 tools
ask_local_modelA

Send a prompt to a backend model and return text plus metadata.

Delegated models cannot read or edit files by themselves. They only return text to the main agent, which remains responsible for validation, edits, and tests.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
promptYes
systemNo
backendNolmstudio
max_tokensNo
temperatureNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key limitations: delegated models cannot read/edit files, only return text, and the main agent handles validation/edits/tests. However, it does not mention other behaviors like authentication or rate limits, though those may be less relevant for a local model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficiently front-loading the core action and return value in the first sentence and adding behavioral context in the second. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the output schema existing, the description lacks guidance on parameter usage (e.g., prompt format, model selection, temperature tuning). It covers behavioral context but is incomplete for a tool with 6 parameters, leaving the agent to infer usage from parameter names alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no descriptions in schema) and the description does not explain any of the 6 parameters (prompt, model, system, etc.). It adds no meaning beyond the schema's type/name information, failing to compensate for the lack of param descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Send a prompt to a backend model') and its output ('return text plus metadata'). It also distinguishes from sibling tools (which are configuration/list tools) by focusing on actual model interaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that delegated models cannot read/edit files, and the main agent retains responsibility for validation/edits/tests. This provides context on when to use this tool (offloading reasoning) but does not explicitly state when not to use or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_backendsA

List all built-in and custom backends, including key status and protocol.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It does not explicitly state that the operation is read-only or disclose any behavioral traits beyond the basic listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence with no redundant information. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and no parameters, the description covers the essential purpose. Could mention that it returns a list of backends with their status and protocol, which it does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has zero parameters, so no additional meaning needed. Baseline 4 for 0 params; description adds no param info but none is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all built-in and custom backends, including key status and protocol, which is a specific verb and resource. It distinguishes from siblings like refresh_backends and set_backend.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention prerequisites or context for listing backends.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_local_modelsB

List model ids on a backend. Works when the backend exposes GET /models.

ParametersJSON Schema
NameRequiredDescriptionDefault
backendNolmstudio

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It implies a read-only operation but does not explicitly state it, nor does it mention other important aspects like authentication needs or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two clear sentences, front-loaded with the purpose. No unnecessary words, though it could add more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. However, it lacks context about sibling tools and the impact of the 'backend' parameter, making it moderately incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should explain the 'backend' parameter in detail. It only indirectly references it, missing the chance to clarify allowed values or behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (model ids on a backend). However, it does not differentiate from the sibling tool 'list_models', which could cause confusion about when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a precondition (backend exposes GET /models) but provides no guidance on when to use this tool over alternatives like 'list_models' or 'list_backends'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsD

Alias for list_local_models.

ParametersJSON Schema
NameRequiredDescriptionDefault
backendNolmstudio

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description provides no behavioral details such as read-only nature, side effects, or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively short and lacks substantive content, failing to earn its minimal length. While concise, it is not useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and no explanation, the description is far from complete. The presence of an output schema does not compensate for the lack of input semantics and purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no description for the 'backend' parameter (0% coverage), and the description adds no information about its meaning or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it is an alias for list_local_models, but does not define what list_local_models does, leaving the core purpose ambiguous. It relies on external knowledge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like list_local_models or other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

local_statusA

Report memory, guard config, backend reachability, and config file paths.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only lists what is reported, without mentioning that the operation is read-only, non-destructive, or has any side effects. The term 'report' implies a safe read, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently lists the reported items. There is no redundant wording, and the purpose is front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter status tool, the description adequately covers its functionality. The presence of an output schema may provide further detail, but the description alone offers a complete picture of what the tool reports. Minor improvement would be mentioning it is a snapshot of current state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description naturally adds no parameter information beyond the schema. With 100% schema coverage for parameters (none exist), the description is not required to elaborate. Baseline 4 applies as per guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports four specific categories: memory, guard config, backend reachability, and config file paths. This distinguishes it from sibling tools like 'ask_local_model' or 'set_backend', which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context in which the tool is appropriate. The agent must infer usage from the name and reported fields.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_backendsB

Reload custom_backends.json without restarting the MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It fails to mention side effects (e.g., clearing state), error handling for invalid files, or confirmation of success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, very concise. Could be slightly more informative (e.g., noting it returns success/failure) but remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema (not shown), the description is adequate for a simple operation but lacks mention of return value or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Per guidelines, baseline is 4; the description adds no parameter info because none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Reload custom_backends.json') and the context ('without restarting the MCP server'). It distinguishes itself from sibling tools like set_backend or list_backends, which focus on modification or listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as set_backend or list_backends. The description does not specify prerequisites or scenarios where reloading is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_backendA

Create, update, or remove a custom backend in custom_backends.json.

Args: name: Backend id, e.g. my_local_qwen. Lowercase letters, numbers, _ or -. base_url: OpenAI-compatible or Anthropic-compatible base URL. default_model: Model id. Empty means auto-resolve from /models where possible. local: 1 for local RAM-guarded backend, 0 for cloud backend. api_key_env: Optional environment variable name for the API key. protocol: openai or anthropic. remove: 1 removes the custom backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
localNo
removeNo
base_urlNo
protocolNoopenai
api_key_envNo
default_modelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains key behaviors: create/update/remove via the 'remove' parameter, local vs cloud with 'local', and optional API key. However, it omits details about file modification persistence or required permissions, which would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise and well-structured, with a clear opening sentence followed by parameter definitions in a bullet-like format. It is front-loaded and efficient, though slightly verbose with the 'Args:' prefix and multiple lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, create/update/delete operations, no annotations, and an output schema), the description covers essential aspects. It explains all parameters and actions, though it could optionally mention the return format or error handling, which is partially mitigated by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It richly describes all 7 parameters, including allowed characters for 'name', auto-resolve for 'default_model', and protocol selection. This adds significant meaning beyond the schema's bare type/default fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Create, update, or remove a custom backend in custom_backends.json.' It uses a specific verb ('set') and resource ('backend'), effectively distinguishing from sibling tools like list_backends and refresh_backends which handle listing and refreshing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists parameters and actions but does not provide explicit guidance on when to use this tool versus alternatives. It lacks 'when-to-use' or 'when-not-to-use' statements, leaving the agent to infer usage context from the parameter descriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_guardC

Change safety guard settings live and persist them to config.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
enforceNo
min_free_gbNo
exclusive_backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that changes are applied live and saved to config.json, which is useful behavioral context. However, it doesn't cover safety or reversibility, and annotations are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no waste. It efficiently communicates the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three defaulted parameters and no parameter explanations, the description is insufficient for correct tool usage. An output schema exists but is not included, which doesn't help the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters (enforce, min_free_gb, exclusive_backend). The agent has no clue what these values mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool changes safety guard settings and persists them. It distinguishes from sibling tools like set_backend or set_system_prefix, which modify other configurations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_system_prefixA

Set or clear a fixed system prefix prepended to every ask_local_model call.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits like persistence, overwriting behavior, or effects on existing calls. The description is too minimal to inform an agent about side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It succinctly conveys the core purpose and effect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter (with default), no required params, and low complexity, the description is largely complete. It lacks some behavioral details but is sufficient for a simple configuration tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning by explaining the parameter is a prefix and can be cleared. However, it does not clarify how clearing works (e.g., empty string vs a special value), leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets or clears a system prefix for ask_local_model calls, with a specific verb (Set/clear) and resource (system prefix). It distinguishes from sibling tools like set_backend or set_guard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for configuring the prefix before calling ask_local_model, but provides no explicit guidance on when to use this tool vs alternatives, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.3.0
    • First observedask_local_model
    • First observedlist_backends
    • First observedlist_local_models
    • First observedlist_models
    • First observedlocal_status
    • First observedrefresh_backends
    • First observedset_backend
    • First observedset_guard
    • First observedset_system_prefix

TDQS

B3.1/5.0
Disambiguation4/5

Most tools target distinct aspects (querying, listing, configuration, status). The alias list_models for list_local_models is redundant but clearly documented, causing minor potential confusion.

Naming Consistency5/5

Tools consistently follow verb_noun pattern with underscores (e.g., ask_local_model, list_backends, set_backend). The sole exception local_status is descriptive and fits the pattern.

Tool Count5/5

9 tools cover the core operations for managing local LLM backends, guards, and queries without being excessive or insufficient.

Completeness4/5

The tool set covers CRUD for backends, querying, and configuration. A minor gap is the lack of a dedicated tool for detailed backend info, but list_backends provides status.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that offloads bulk coding tasks to local LLMs, allowing Claude Code to delegate repetitive work like boilerplate generation and code polishing while preserving its context for complex reasoning.
    10
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI to delegate boilerplate, drafts, tests, and refactors to free LLM providers, saving tokens and running tasks in parallel.
    428
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables hybrid agentic coding by delegating token-heavy implementation, editing, and test-debug loops to local open-source models while frontier cloud models handle architecture and review, reducing premium API token usage and keeping code private.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HenryLinyy/local-llm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server