Skip to main content
Glama
TMHSDigital

Local AI MCP

Official
by TMHSDigital

Local AI MCP

Unified MCP server for managing local model runtimes (Ollama, LM Studio, and more): provider-agnostic discovery, lifecycle, hardware-fit, and delegated inference.

License: CC-BY-NC-ND-4.0 Version Type


Local AI MCP is an MCP server that turns your local model runtimes into an agent-callable control plane. It is operations-first: its primary job is to discover, inspect, fit, and manage the models running on your own machine. It speaks to runtimes over their local HTTP APIs and exposes one consistent tool surface across them, so an agent does not need to know whether a model lives in Ollama or LM Studio. The server is local-first: local runtimes are the primary target, with optional hosted providers (such as Moonshot AI) available behind the same tool surface when you configure an API key.

The server communicates over stdio only. It is a client to your local runtimes and never opens a network listener of its own.

Why an ops-first local-model server

  • Discovery and lifecycle, not just chat. List what is installed, what is loaded, pull and remove models, load and unload them, and check their fit against your hardware before you commit VRAM to them.

  • Hardware-aware. system_resources and fit_check read your real RAM and GPU/VRAM so an agent can pick a model that will actually run, and suggest_model ranks candidates by task and by what fits.

  • Provider-agnostic. Every tool takes an optional provider argument. Omit it and the tool operates across all detected runtimes, aggregating results per provider.

Related MCP server: cloud-chat-assistant

Inference is delegation, not chat

The complete and embed tools exist to delegate (offload) inference to a model you choose for cost control and privacy: by default that means keeping tokens and data on your own hardware, with hosted providers as an explicit opt-in. They are deliberately framed as delegated/offloaded inference primitives, not as a conversational chat surface.

The provider-adapter model

Each runtime is implemented as an adapter behind a single Provider interface (src/providers/types.ts) with a uniform method set: detect, health, listModels, listLoaded, modelInfo, pull, remove, load, unload, complete, embed, and capabilities. Adding a runtime means adding one adapter; the tool layer is unchanged.

Adapter

Default host

Transport

Notes

Ollama (src/providers/ollama.ts)

http://localhost:11434

Native REST + OpenAI-compatible

load/unload map to Ollama keep_alive semantics (keep_alive to load, keep_alive: 0 to unload). complete/embed use the OpenAI-compatible /v1 routes.

LM Studio (src/providers/lmstudio.ts)

http://localhost:1234

REST (/api/v0) + OpenAI-compatible

Uses the lms CLI for load/unload/pull/remove when present; falls back to REST for listModels/listLoaded/complete/embed.

llama.cpp (src/providers/llamacpp.ts)

http://localhost:8080

Native /health /props /slots + OpenAI /v1

Model is loaded at server start; no pull/load/unload. Slot introspection via /slots.

OpenAI-compat (src/providers/openaicompat.ts)

(unset)

OpenAI-compatible /v1

Opt-in via OPENAI_COMPAT_HOST (vLLM, Jan, etc.). Inference only.

Moonshot AI (Kimi) (src/providers/moonshot.ts)

https://api.moonshot.ai/v1

Hosted OpenAI-compatible

Requires MOONSHOT_API_KEY (Bearer auth); not detected without it. complete and listModels only; lifecycle (pull/remove/load/unload) and embed are unsupported for the hosted API. Flagship model: kimi-k3.

Auto-detection: on each call the server probes the configured endpoints to determine which providers are live (hosted providers require their API key to be set). Hardware probing is isolated in src/hardware/ and branches by platform (Windows / Linux); it exposes total/free RAM and, where detectable, GPU name and VRAM.

Tool surface (16 tools)

Discovery

Tool

Description

list_providers

Configured runtimes, their host, live/detected status, and capabilities.

list_models

Installed models across detected providers (or one provider).

list_loaded

Models currently resident in memory.

model_info

Detailed metadata for a model.

Lifecycle

Tool

Description

pull_model

Download a model. Heavy: may transfer multiple GB.

remove_model

Delete a model from disk. Destructive: requires confirm: true and a provider (no fan-out); refuses without confirm: true.

load_model

Load a model into memory (Ollama keep_alive; LM Studio lms load).

unload_model

Evict a model from memory.

Ops

Tool

Description

health_check

Liveness and version per provider.

system_resources

Total/free RAM, CPU count, and GPU/VRAM.

fit_check

Whether weight + KV-cache estimate fits in free VRAM (GPU) or RAM (CPU).

benchmark

Measure latency and tokens/sec with one small completion. Heavy: runs real inference.

Registry

Tool

Description

search_available

Search a curated catalog of well-known models (Ollama library oriented).

suggest_model

Recommend a model for a task, ranked by what fits your detected hardware.

Delegation (offloaded inference)

Tool

Description

complete

Delegate a completion (streams via MCP progress when the client sends a progressToken).

embed

Delegate embedding generation to a local model.

Every tool except system_resources accepts an optional provider (ollama | lmstudio | llamacpp | openaicompat | moonshot). Omit it to operate across all detected runtimes.

Install and run

npx @tmhs/local-ai-mcp

Claude Desktop / Cursor config

{
  "mcpServers": {
    "local-ai": {
      "command": "npx",
      "args": ["-y", "@tmhs/local-ai-mcp"],
      "env": {
        "OLLAMA_HOST": "http://localhost:11434",
        "LMSTUDIO_HOST": "http://localhost:1234",
        "MOONSHOT_API_KEY": "your-moonshot-api-key"
      }
    }
  }
}

Configuration

All configuration is via environment variables with sane defaults:

Variable

Default

Description

OLLAMA_HOST

http://localhost:11434

Ollama base URL (scheme optional; added if missing).

LMSTUDIO_HOST

http://localhost:1234

LM Studio base URL.

LLAMACPP_HOST

http://localhost:8080

llama.cpp server base URL.

OPENAI_COMPAT_HOST

(unset)

Generic OpenAI-compatible /v1 base URL (vLLM, Jan, …). Provider omitted when unset.

OPENAI_COMPAT_API_KEY

(unset)

Optional Bearer token for the OpenAI-compat adapter.

MOONSHOT_HOST

https://api.moonshot.ai/v1

Moonshot AI base URL (include the /v1 path).

MOONSHOT_API_KEY

(unset)

Moonshot AI API key (Bearer token). The provider is skipped when unset.

LOCAL_AI_REQUEST_TIMEOUT_MS

120000

Timeout for normal requests (inference, pull progress, etc.).

LOCAL_AI_DETECT_TIMEOUT_MS

1500

Timeout for provider auto-detection probes.

LOCAL_AI_PULL_TIMEOUT_MS

3600000

Timeout for model pulls (multi-GB downloads); set 0 to disable.

Development

npm install
npm run build      # tsc -> dist/
npm test           # vitest; runs fully offline (mocked HTTP, stubbed hardware)

The test suite requires no running runtime and no downloaded model: every HTTP call is mocked and hardware probing is stubbed.

License

CC-BY-NC-ND-4.0 -- see LICENSE.


Built by TMHSDigital

Available Tools

16 tools
benchmarkA

HEAVY: Runs REAL inference. Executes one small completion against a loaded/loadable model and measures latency (ms) and throughput (tokens/sec). This consumes compute and may load the model. Without a provider arg, runs on the first detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to benchmark
promptNoOptional prompt; a short default is used otherwise
providerNoOptional provider id
maxTokensNoMax tokens to generate (default 64)

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully discloses that the tool is 'HEAVY', consumes compute, and may load the model. This provides essential behavioral context an agent needs to decide invocation.

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?

Three sentences, each adding unique value: purpose, heaviness warning, and provider behavior. No redundant information.

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?

The description explains inputs and output metrics (latency, throughput) with units. However, lacking an output schema, it could have specified the exact return format or structure. Still, it provides sufficient context for an agent.

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?

While the schema has 100% coverage, the description adds meaning by explaining that prompt is optional with a default, and that maxTokens defaults to 64. It also contextualizes the tool's use of these parameters in benchmarking.

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 performs a benchmark by running real inference, measuring latency and throughput. It specifies verb 'Runs' and resource 'inference', and distinguishes from sibling tools (e.g., list_models, complete) which serve 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 Guidelines3/5

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

The description mentions behavior without a provider argument but does not explicitly state when to use this tool vs alternatives. It lacks guidance on when not to use it, though sibling tools are clearly different.

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

completeA

DELEGATED INFERENCE: Offload a text/chat completion to a local model runtime for cost savings and privacy (data never leaves the machine). This is NOT a chat feature for the user; it delegates work to a local LLM. Provide either prompt or messages. Streams tokens via MCP progress notifications when the client supplies a progressToken (stream defaults to true). Without a provider arg, uses the first detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopNoStop sequences
modelYesModel id/name to run the completion on
promptNoPlain prompt text (alternative to messages)
streamNoStream tokens from the provider (default true). Progress notifications are sent when the client provides a progressToken.
messagesNoChat-style messages (alternative to prompt)
providerNoOptional provider id
maxTokensNoMaximum tokens to generate
temperatureNoSampling temperature

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must fully disclose behavior. It covers: data locality ('data never leaves the machine'), streaming via MCP progress notifications, default streaming behavior (true), and first-detected-provider fallback. Missing error handling details, but core safety and flow are documented.

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?

Four sentences, each purposeful: labeled purpose, usage warning, parameter guidance, streaming behavior. Front-loaded with bold 'DELEGATED INFERENCE:' for quick scanning. 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?

Lacks description of return value (e.g., completion text or stream chunks). With no output schema, this is a gap. Otherwise covers key aspects: purpose, usage, streaming. Moderate complexity (8 params) handled well but incomplete on response format.

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 coverage is 100%, baseline 3. Description adds significant value: clarifies that prompt and messages are alternatives, explains default provider behavior, and details streaming mechanics (progressToken, default true). These enrich schema definitions without redundancy.

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 explicitly states 'DELEGATED INFERENCE: Offload a text/chat completion to a local model runtime' with a clear verb and resource. It distinguishes from sibling tools like 'embed' or 'suggest_model' by specifying local model runtime and non-user-chat nature.

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?

Includes a clear exclusion: 'This is NOT a chat feature for the user.' Specifies alternative inputs ('Provide either prompt or messages') and default provider behavior. Lacks explicit comparison to sibling inference tools like 'embed' or 'suggest_model', but context makes role clear.

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

embedA

DELEGATED EMBEDDINGS: Offload embedding generation to a local model runtime for cost savings and privacy. Accepts a single string or an array of texts. Without a provider arg, uses the first detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesText or array of texts to embed
modelYesEmbedding model id/name
providerNoOptional provider id

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so description carries full burden. It mentions cost savings and privacy but fails to disclose output format, rate limits, or any destructive/reversible behavior. For a delegated operation, more detail is needed.

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?

Two sentences, each purposeful. The caps-lock phrase 'DELEGATED EMBEDDINGS' is slightly distracting but not harmful. The description is efficiently sized for the tool's simplicity.

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?

No output schema, yet description does not explain return values (e.g., shape of embeddings). With array input and multiple providers, the output semantics are non-trivial and should be clarified. Missing information limits completeness.

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 coverage is 100%, so baseline is 3. The description adds value by clarifying input types ('single string or array') and the default behavior for the provider parameter. This goes beyond the schema.

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 it generates embeddings by offloading to a local runtime, using verbs like 'offload' and 'embedding generation'. It distinguishes from siblings like 'complete' (text generation) and model management tools.

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 provides guidance on the optional provider argument defaulting to the first detected provider, but lacks explicit when-to-use vs alternatives. It does not compare with siblings like 'complete' or other embedding options.

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

fit_checkA

Determine whether a model fits on the local hardware. Resolves the model weight size from the provider or the static catalog (or an explicit sizeBytes), estimates KV-cache overhead for a context length (default 4096), then compares weight+KV against free GPU VRAM, falling back to system RAM. Returns fits, target (gpu/cpu/none), weight/kv/required/available bytes.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to check
providerNoOptional provider id
sizeBytesNoOptional explicit model weight size in bytes (overrides lookup)
contextLengthNoContext length for KV-cache estimate (default 4096)
parameterSizeNoOptional parameter size like "7B" or "3.8B" for KV estimate (overrides lookup)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses the algorithm (resolve weight, estimate KV-cache, compare against free memory) and return fields (fits, target, bytes). However, it does not mention potential network calls for provider lookup or permission requirements, which are minor omissions for a read-only check.

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?

Three sentences front-load the main purpose, then detail the process and return values. No wasted words; every sentence contributes essential information.

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?

With no output schema, the description explains return values (fits, target, bytes). Parameter count (5) with full schema coverage means schema handles details. The description is sufficiently complete for a non-mutating tool, though it could mention potential network dependencies.

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 description coverage is 100%, so the schema documents parameters. The description adds value by explaining behavioral aspects like sizeBytes overriding lookup, contextLength default (4096), and parameterSize overriding lookup for KV estimate. This goes beyond the schema but could detail provider enum options.

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 determines if a model fits on local hardware, specifying the algorithm including weight resolution, KV-cache estimation, and memory comparison. It distinguishes itself from sibling tools like load_model or model_info by focusing on hardware fit check.

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 checking model fit before loading, but does not explicitly state when to use this tool vs alternatives (e.g., load_model, suggest_model). No when-not or alternative guidance is provided, leaving usage context ambiguous.

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

health_checkA

Check whether each provider's local runtime is reachable and report its version. Without a provider arg, checks all configured providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoOptional provider id

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description bears full burden. It discloses that the tool performs a reachability check and version report, which is sufficient for a read-only operation. No misleading or missing behavioral traits.

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?

Two sentences with zero extraneous text. The purpose is front-loaded and every phrase adds information.

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

Completeness5/5

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

Given no output schema and a single optional parameter, the description fully covers what the tool does and how to use it. No gaps remain.

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 coverage is 100% and the description adds value by explaining the default behavior when the provider parameter is omitted, which is not evident from the schema alone.

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 uses a specific verb ('Check') and resource ('each provider's local runtime'), and clearly distinguishes from sibling tools like 'list_providers' by stating it also reports version and reachability.

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 when to omit the provider parameter ('Without a provider arg, checks all configured providers'), providing clear context. However, it does not explicitly state when to use this tool versus alternatives like 'list_providers' for simply listing providers.

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

list_loadedA

List models currently loaded into memory on each detected provider. Without a provider arg, aggregates across all detected providers keyed by provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoOptional provider id

TDQS

A4.6/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 clearly describes the tool's behavior (listing loaded models, aggregating when no provider specified). It does not mention side effects or permissions, but for a listing tool the description is transparent enough.

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?

Two sentences, no filler, front-loaded with the core purpose. Every word adds value.

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

Completeness5/5

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

For a simple list tool with one optional parameter and no output schema, the description is complete. It explains the core functionality, parameter behavior, and return structure hint, fully covering what an agent needs to use the tool correctly.

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?

The schema already provides an enum and description for the 'provider' parameter. The description adds significant value by explaining the aggregation behavior when the parameter is omitted, including the return structure ('keyed by provider'), which goes beyond the schema.

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 models loaded into memory on each detected provider. It distinguishes itself from sibling tools like list_models (likely lists available models) and list_providers (lists providers), making its specific resource and action unambiguous.

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 without a provider argument, it aggregates results across all providers keyed by provider. This implies when to use the tool with and without the parameter, but it does not explicitly state when to use this over alternatives like list_models or model_info.

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

list_modelsA

List models installed/available on each detected provider. Without a provider arg, aggregates across all detected providers keyed by provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoOptional provider id

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It discloses aggregation behavior but no other traits like caching, network calls, or auth needs. Adequate for a simple read tool, but could be more transparent.

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?

Two sentences, front-loaded with purpose, followed by parameter behavior. Every sentence adds value with zero wasted 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?

No output schema, so description should hint at return format. It says 'keyed by provider' but not what each entry contains. Lacks details on whether models are installed, available, or both. Adequate for simple tool but leaves gaps.

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 covers provider with enum and description. Description adds value by explaining behavior when parameter omitted (aggregation) and output format (keyed by provider), beyond schema's description.

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?

Description clearly states it lists models per provider, with specific verb 'list' and resource 'models installed/available on each provider'. Effectively distinguishes from siblings like list_loaded and list_providers by specifying scope of listing.

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?

Provides guidance on when to omit the provider arg (aggregation) but lacks explicit guidance on when to use this tool over alternatives like list_loaded or model_info. Usage context is implied but not fully explicit.

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

list_providersA

List the configured model runtime providers (Ollama, LM Studio, llama.cpp, optional OpenAI-compat / Moonshot) with their host, whether they are detected/live, and their capabilities. Optionally filter to a single provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoOptional provider id to filter to

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided; description fully discloses read-only nature and output fields (host, detected/live, capabilities). No side effects or permissions needed; sufficient for a list tool.

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?

Single sentence concisely covers purpose, output, behavior, and optional filtering. No wasted words, front-loaded with key information.

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

Completeness5/5

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

Complete for a simple list tool with one optional parameter and no output schema. Covers return fields and filtering, leaving no gaps for agent to decide invocation.

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 coverage 100%, so baseline 3. Description adds meaning by clarifying the single optional parameter filters to one provider, enhancing schema's 'Optional provider id to filter to'.

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?

Description clearly states the tool lists configured model runtime providers with details (host, live status, capabilities). It distinguishes from sibling tools like list_models (lists models) and list_loaded (loaded models).

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?

Describes when to use (list providers with status/capabilities) and optional filtering. Lacks explicit exclusion or alternative guidance, but context from sibling tools makes usage clear.

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

load_modelA

Load a model into memory so it is ready for inference. Optionally set keepAlive (e.g. '5m', '1h'). Without a provider arg, loads on every detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to load
providerNoOptional provider id
keepAliveNoHow long to keep the model resident, e.g. '5m'

TDQS

A4.2/5.0
Behavior3/5

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

Discloses key behavior (loading into memory, keepAlive, provider default) but omits details like idempotency, errors, authentication needs. No annotations to supplement.

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?

Two concise sentences, front-loaded with core purpose, no filler.

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?

Adequate for a loading tool: covers main behavior and options. No output schema needed. Could mention return status or loading duration, but not essential.

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?

Adds meaning beyond 100% schema coverage: keepAlive format hint and provider default behavior. Baseline 3, plus additional context.

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?

Clearly states verb 'load', resource 'model', and purpose 'ready for inference'. Distinguishes from siblings like unload_model, list_models.

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?

Provides context for provider argument ('without a provider arg, loads on every detected provider'), but lacks explicit when-not-to-use or alternatives like complete/embed.

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

model_infoA

Show detailed metadata for a specific model (family, parameter size, quantization, context length). Without a provider arg, queries all detected providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to inspect
providerNoOptional provider id

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that the tool queries all providers if no provider arg is given and lists the metadata returned. This is sufficient for a read-only inspection tool, though it doesn't mention potential latency or caching.

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?

Two sentences, front-loaded with key action and resource, no redundant words. Every sentence adds essential information.

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 no output schema, the description adequately lists the metadata fields. However, it could mention the output format (e.g., JSON object) and edge cases (e.g., model not found). Still, for a simple info tool, it is largely complete.

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 covers all parameters with descriptions, but the description adds distinct value by explaining that omitting the provider arg queries all detected providers, clarifying behavior beyond the schema's enum list.

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?

Description uses specific verb 'show' and resource 'detailed metadata for a specific model', listing exact fields (family, parameter size, quantization, context length). It distinguishes from sibling tools like list_models (list all) and suggest_model (recommendations) by focusing on single-model details.

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?

Description clearly states the tool is for inspecting a specific model and mentions the provider argument behavior. However, it does not explicitly state when not to use it (e.g., if you need a list, use list_models instead), leaving some inference to the agent.

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

pull_modelA

HEAVY: Download/pull a model onto a provider. WARNING: this may download multiple gigabytes and can take a long time. Without a provider arg, attempts the pull on every detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to pull (download)
providerNoOptional provider id

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It includes a clear warning about downloading multiple gigabytes and long duration, which is critical for this heavy operation.

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?

Two concise sentences, no wasted words. The warning is front-loaded and the usage condition is clear.

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

Completeness5/5

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

Given the complexity (heavy download), absence of annotations, and no output schema, the description adequately covers behavioral warnings, parameter usage, and default behavior, leaving no critical gaps.

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 coverage is 100%, so baseline is 3. The description adds little extra meaning beyond the schema's descriptions for model and provider, though the note about no provider pulling on all providers is relevant but more about usage.

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 explicitly states the action ('Download/pull') and resource ('a model onto a provider'), and the warning about size and time clearly distinguishes it from sibling tools like unload_model or remove_model.

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 omitting the provider arg applies to all detected providers, but does not explicitly differentiate from similar tools like load_model, which might be confused with pulling.

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

remove_modelA

DESTRUCTIVE: Permanently delete a model from a provider. Requires confirm:true; without it the action is refused. The provider argument is REQUIRED so a delete cannot fan out across every detected runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to remove
confirmYesMust be true to perform this destructive deletion
providerYesRequired provider id (delete is scoped to a single provider)

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It clearly labels the action as 'DESTRUCTIVE,' states permanence, and explains the required confirm flag and provider scoping.

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?

Two concise sentences front-load the critical information: destructive nature and required confirm/providers. No unnecessary words, highly efficient.

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 destructive tool with 3 params and no annotations, the description covers key behavioral aspects but could mention whether deletion also unloads a currently loaded model or describe error conditions.

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 coverage is 100%, providing baseline 3. The description adds extra context for the provider parameter (prevents fan-out deletion) and the confirm parameter (required for action), enhancing understanding beyond the schema.

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 'permanently delete a model from a provider,' using a specific verb and resource. It distinguishes itself from the sibling 'unload_model' by emphasizing permanence and destruction.

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 provides important safety guidelines (require confirm:true, provider is required to prevent fan-out) but does not explicitly compare to alternatives like unload_model or list when not to use this tool.

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

search_availableA

Search the built-in catalog of well-known local models by name, family, or task. Note: this searches a curated static catalog, not the full live Ollama library (https://ollama.com/library).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch text matched against model name, family, and tasks

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It transparently discloses that the tool searches a curated static subset rather than the full live library, which is a key behavioral trait. No mention of auth or rate limits, but those are less relevant for a search tool.

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 with no fluff: first sentence states the purpose, second adds an important caveat. 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?

Given a simple 1-parameter tool and no output schema, the description adequately covers the purpose and key constraint. It could be more complete by hinting at the return format (e.g., list of model objects), but it remains sufficient for basic usage.

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 coverage is 100% and the description of the query parameter in the schema is already clear. The description adds no new information about the parameter beyond what is in the schema, so it meets the baseline but does not enhance understanding.

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 (search), resource (built-in catalog of well-known local models), and criteria (by name, family, or task). It effectively distinguishes this tool from siblings like 'list_models' which lists all models, by specifying it searches a curated static catalog.

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 provides useful context by noting that this is a curated static catalog, not the full live Ollama library, with a link to the live library. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.

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

suggest_modelA

Recommend local models for a task (chat/code/embed/vision/reasoning/general), ranked by task match and then by whether they fit the detected free GPU VRAM or system RAM. Returns a ranked list with fit flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task you want a model for

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses ranking behavior: by task match then memory fit, and mentions detection of free GPU VRAM or system RAM. Without annotations, this provides good transparency, though it could specify whether multiple GPUs are considered or what 'fit' means precisely.

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?

Two sentences, directly states purpose and output. No wasted words. Front-loaded with the core verb 'Recommend'.

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

Completeness5/5

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

Given the simplicity of one parameter and no output schema, the description covers all essential aspects: input (task), ranking criteria (task match, memory fit), and output (ranked list with fit flags). Leaves no major gaps.

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 single parameter 'task' is fully defined by the enum in the schema. The description adds context that the task is used for ranking models, which is a slight enhancement beyond the schema's label.

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 recommends local models for specific tasks, ranks by task match and memory fit, and returns a ranked list with fit flags. It distinguishes itself from sibling tools like list_models and fit_check by combining recommendation and system resource awareness.

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 using this tool for model recommendations but does not explicitly state when to prefer it over alternatives like list_models, fit_check, or search_available. No guidance on prerequisites or context.

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

system_resourcesA

Report local hardware resources: platform, total/free RAM, CPU count, and detected GPUs with VRAM. Used to reason about which models can run locally.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

The description implies a read-only, safe operation, but with no annotations, it lacks details on execution speed, side effects, or permission requirements. It does not contradict anything as there are no annotations.

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?

Two sentences: one lists what is reported, the second provides the use case. No fluff; each sentence serves a purpose.

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

Completeness5/5

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

For a parameterless tool without output schema, the description fully covers the tool's purpose and the data it returns. It is complete enough for an agent to decide when to call it and understand the response.

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?

With zero parameters and 100% schema coverage, the description adds value by explaining the output content (platform, RAM, CPU, GPUs). The baseline for no params is 4, and the description meets that.

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 local hardware resources, listing specific items (platform, RAM, CPU, GPUs). It distinguishes this tool from siblings like health_check or benchmark by focusing on static hardware info.

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 phrase 'Used to reason about which models can run locally' provides clear context for when to use this tool. However, it does not explicitly discuss when not to use it or compare to sibling tools like fit_check.

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

unload_modelA

Unload a model from memory to free VRAM/RAM. Without a provider arg, unloads from every detected provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id/name to unload
providerNoOptional provider id

TDQS

A4.3/5.0
Behavior3/5

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

Description discloses the main effect (freeing memory) and default behavior with optional provider, but does not mention potential side effects (e.g., if model is in use) or reversibility. No annotations provided, so some burden remains unaddressed.

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?

Two sentences, zero waste, front-loaded with the action. Every word serves a purpose.

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

Completeness5/5

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

Given low complexity and no output schema, the description is complete: covers purpose, default behavior, and both parameters. No significant gaps for a simple unload tool.

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 coverage is 100%, reducing burden. Description adds value by explaining default behavior of 'provider' parameter and clarifying 'model' as ID/name, which goes beyond schema 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 action 'Unload a model from memory to free VRAM/RAM' with specific verb and resource, and distinguishes from siblings like load_model or list_models by focusing on freeing memory.

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 provides context on when to use (to free memory) and specifies default behavior without provider arg, but does not explicitly state when not to use or compare to remove_model for permanent deletion.

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. 16 tool updatesv0.4.0
    • First observedbenchmark
    • First observedcomplete
    • First observedembed
    • First observedfit_check
    • First observedhealth_check
    • First observedlist_loaded
    • First observedlist_models
    • First observedlist_providers
    • First observedload_model
    • First observedmodel_info
    • First observedpull_model
    • First observedremove_model
    • First observedsearch_available
    • First observedsuggest_model
    • First observedsystem_resources
    • First observedunload_model

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct operation: model management (unload, load, list, pull, remove, info), system information (list_providers, health_check, system_resources), analysis (fit_check, benchmark, suggest_model, search_available), and inference (complete, embed). No two tools have overlapping purposes.

Naming Consistency4/5

Tool names predominantly follow a verb_noun pattern (unload_model, list_providers, pull_model). Some names like model_info, system_resources, and benchmark are noun-heavy or single-verb but still clear and readable. Consistent snake_case throughout.

Tool Count5/5

With 16 tools, the server is well-scoped for its domain. It covers model lifecycle, system diagnostics, analysis, and inference without being bloated or sparse.

Completeness5/5

The tool set covers the full lifecycle: pull, load, unload, remove, list, info, and inference (complete, embed). It also includes system checks (health, resources, fit), search, recommendations, and benchmarks. No obvious gaps for the stated purpose of local AI model management and inference.

Maintenance

ActivitySlowing
ResponsivenessNo issues

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that bridges MCP clients with local LLM services, enabling seamless integration with MCP-compatible applications through standard tools like chat completion, model listing, and health checks.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables agents to dynamically switch between multiple AI models (OpenAI, Anthropic, Google, etc.) with unified protocol-driven configuration and capability discovery.
    Apache 2.0

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/TMHSDigital/local-ai-mcp'

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