Skip to main content
Glama

gguf-mcp

An MCP server that inspects local model files — GGUF and safetensors — so Claude and other LLMs can answer questions about the models on your disk:

  • "What is this .gguf? Architecture, quantization, parameter count?"

  • "Will this model fit in my 12 GB GPU at 8k context?"

  • "What tensors are inside, with what shapes?"

  • "Show me its chat template / RoPE settings / tokenizer config."

Headers only. The parser never touches tensor data, so inspecting a 70 GB model takes milliseconds and a few MiB of I/O. No network, no API keys, no telemetry — your files never leave your machine.

Quick start

Claude Code

claude mcp add gguf -- npx -y gguf-mcp

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "gguf": {
      "command": "npx",
      "args": ["-y", "gguf-mcp"]
    }
  }
}

The same npx invocation works in Cursor, Windsurf, and any other MCP client.

Related MCP server: video-probe-mcp

Tools

Tool

What it does

inspect_model

One-call summary: format, architecture, parameters, quantization, context length, file size, tensor count

list_tensors

Tensor names, shapes, and storage types — filterable (attn, blk.0, ...)

estimate_vram

Fit check: exact weights size + modeled fp16 KV cache for your chosen context length

get_metadata

The GGUF key-value store (or safetensors __metadata__), filterable by key

Paths can be a .gguf file, a .safetensors file, a *.safetensors.index.json, or a model directory (sharded HuggingFace layouts are aggregated across shards). Extension-less GGUF blobs — like the ones in Ollama's ~/.ollama/models/blobs — are detected by magic bytes.

Design notes

  • Context-friendly by construction. A tokenizer vocabulary is 100k+ strings; metadata arrays are returned as {count, sample} summaries and long strings (chat templates) are truncated with a marker. The full data stays on disk where it belongs.

  • Honest estimates. estimate_vram reports exact on-disk weight bytes plus the standard KV-cache formula (2 × layers × context × KV heads × head dim × 2 bytes), and says what it excludes rather than faking precision.

  • Defensive parsing. Magic checks, version checks (incl. big-endian detection), truncation detection, and sanity caps on header sizes — malformed files produce specific, actionable errors.

  • Zero runtime dependencies beyond the MCP SDK and zod. The GGUF binary reader and safetensors parser are hand-rolled and unit-tested against synthetic files built in the test suite — no fixtures, no downloads.

Development

npm install
npm test                 # offline unit tests (vitest) — synthetic model files
npm run build            # tsc → dist/
node scripts/smoke.mjs   # end-to-end: generates models, drives the server over stdio

Architecture: src/gguf.ts (binary header parser + VRAM math) and src/safetensors.ts (JSON header + shard index) are pure logic with no MCP imports; src/index.ts is the MCP wiring and path/format detection.

Out of scope

Tensor statistics (would require reading data), PyTorch .bin (pickle — unsafe by design), ONNX, and remote HuggingFace queries (HuggingFace has an official MCP server for that).

License

MIT

Available Tools

4 tools
estimate_vramEstimate VRAM neededA

Will this model fit? Estimates memory as exact weights size plus a modeled fp16 KV cache (GGUF; context defaults to min(model context, 8192)). Safetensors models get a weights-only figure.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to a .gguf or .safetensors file, a *.safetensors.index.json, or a model directory
context_lengthNoContext window to budget the KV cache for

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full responsibility and discloses the estimation methodology (exact weights + modeled fp16 KV cache), the default context behavior, and the safetensors weights-only distinction. This is transparent about key assumptions, though it doesn't mention return format or error handling for unsupported files.

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 three short sentences, starting with a core question and immediately providing methodology and format details. It is front-loaded and has no redundant information.

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?

The estimation logic is well explained, but the output format or return value is never described. Since there is no output schema, this leaves an important gap for an agent expecting a specific result type, such as a number or an object with a breakdown.

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 schema already provides full descriptions for both parameters (100% coverage), but the tool description adds the default context length (min(model context, 8192)) and clarifies how the file type (GGUF vs safetensors) changes the estimate, adding value 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 opens with the question 'Will this model fit?' and explains it estimates memory as weights plus KV cache for GGUF, with a weights-only figure for safetensors. This clearly specifies the tool's purpose and differentiates it from sibling tools like inspect_model or list_tensors.

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 clearly implies the use case—estimating VRAM for GGUF vs safetensors models—and gives context about default context length. However, it doesn't explicitly name alternatives or say when not to use this tool, but the context is clear enough for an agent to decide.

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

get_metadataGet model metadataA

The model's metadata key-value store (GGUF) or metadata block (safetensors). Large arrays arrive as {count, sample} summaries and long strings are truncated, so tokenizer vocabularies can't flood the context. Filter keys by substring (e.g. 'tokenizer' or 'rope').

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to a .gguf or .safetensors file, a *.safetensors.index.json, or a model directory
filterNoCase-insensitive substring to filter metadata keys

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 the full burden. It discloses key behaviors: large arrays are summarized as {count, sample}, long strings are truncated to prevent context flooding, and filtering is case-insensitive. This helps the agent anticipate output size and use the filter.

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, then behavior and usage hint. Every word earns its place with no redundancy.

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 retrieval tool with two parameters and no output schema, the description sufficiently explains the output format limitations and filtering behavior. It covers what an agent needs to know to use the tool effectively.

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%, with both path and filter documented. The description adds a filter example but no substantive new semantics beyond the schema's already-clear parameter descriptions, meeting the baseline.

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 retrieves model metadata from GGUF or safetensors files, specifying the resource and scope. The verb 'get' and the focus on metadata distinguish it from sibling tools like inspect_model and list_tensors.

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?

Usage is implied: use this tool when you need model metadata. However, it does not explicitly state when to prefer this over siblings or any exclusions, leaving the agent to infer from the tool name and description.

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

inspect_modelInspect a local model fileA

Summarize a local GGUF or safetensors model: architecture, parameter count, quantization, context length, file size, tensor count. Reads only headers — inspecting a 70 GB model is instant. Works on extension-less GGUF blobs (e.g. Ollama's).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to a .gguf or .safetensors file, a *.safetensors.index.json, or a model directory

TDQS

A4.4/5.0
Behavior4/5

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

The description explicitly discloses a key behavioral trait: it only reads headers, making it fast and implying a read-only, non-destructive action. This is especially important because no annotations are provided. It also signals that it handles extension-less files, adding transparency about compatibility. It does not detail all possible edge cases, but the critical behavior is well covered.

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 three sentences with no fluff. It front-loads the primary purpose, then provides the speed benefit, and ends with a compatibility note. Every sentence contributes meaningful information, and the structure is easy to parse.

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 tool is simple (one parameter, no output schema), and the description lists the output fields (architecture, parameter count, quantization, context length, file size, tensor count), giving the agent a clear idea of what to expect. It lacks an explicit return format or error handling notes, but those are less critical for a straightforward inspection tool. The description provides sufficient context for effective selection and 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?

The schema already fully documents the single 'path' parameter, so the baseline is 3. The description adds value by mentioning that extension-less GGUF blobs are supported, which goes beyond the schema's list of accepted file types. This extra nuance directly informs the user about valid path values, warranting a score above the baseline.

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 summarizes local GGUF or safetensors models and lists the specific attributes returned (architecture, parameter count, quantization, context length, file size, tensor count). This distinguishes it from sibling tools like 'list_tensors' and 'estimate_vram' by focusing on a holistic summary rather than low-level 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?

Provides clear usage context: 'Reads only headers — inspecting a 70 GB model is instant' indicates it is ideal for quick inspections without loading the full model. It also notes compatibility with extension-less GGUF blobs (e.g., Ollama's), giving a concrete scenario. However, it does not explicitly contrast with sibling tools like 'get_metadata' or state 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.

list_tensorsList tensorsB

Tensor names, shapes, and storage types inside a model file. Filter by substring (e.g. 'attn' or 'blk.0').

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to a .gguf or .safetensors file, a *.safetensors.index.json, or a model directory
limitNoMax tensors to return
filterNoCase-insensitive substring to filter tensor names

TDQS

B3.1/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full transparency burden. It describes the output fields and filtering but does not state whether the operation is read-only, requires special permissions, or how it behaves across different file types.

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 only two short sentences, front-loaded with the tool's purpose and followed by a concise filtering example. No 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?

The tool is a simple listing operation with no output schema. The description adequately covers output and filtering, but lacks guidance on when to choose this tool over siblings, leaving a completeness gap.

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 100%, so the baseline is 3. The description adds a useful filter example ('attn' or 'blk.0') and clarifies the output structure, but does not substantially expand parameter meanings beyond what the schema already provides.

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 that the tool lists tensor names, shapes, and storage types from model files, and it mentions substring filtering. However, it does not explicitly distinguish itself from sibling tools like inspect_model or get_metadata.

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 list_tensors versus sibling tools. The only usage hint is a filtering example, which relates to the filter parameter, not tool selection.

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. 4 tool updatesv0.1.1
    • First observedestimate_vram
    • First observedget_metadata
    • First observedinspect_model
    • First observedlist_tensors

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct aspect of model file inspection: summarize, list tensors, estimate VRAM, and get metadata. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (inspect, list, estimate, get), making the set predictable and easy to navigate.

Tool Count5/5

Four tools is well-scoped for a specialized inspection server, covering core operations without bloat or gaps.

Completeness5/5

The tool set fully covers the domain of local model file inspection: overview, detailed tensors, VRAM fitting, and metadata. No obvious missing operations.

Maintenance

ActivityMaintained
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

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/arose26/gguf-mcp'

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