Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOCAL_LLM_MODELNoDefault model name to use, used in quick single-provider env mode.
LOCAL_LLM_CONFIGNoPath to the configuration file for the MCP server. Example: ~/.config/openai-mcp/config.json. Written by `npm run configure`.
LOCAL_LLM_BASE_URLNoBase URL of the OpenAI-compatible or Ollama provider, used in quick single-provider env mode (no config file).
LOCAL_LLM_API_KEY_ENVNoName of the environment variable holding the API key for the provider, used in quick single-provider env mode.
LOCAL_LLM_RUN_COMMANDNoSet to enable shell command execution via `run_command`. Omit to disable shell access entirely.
LOCAL_LLM_DYNAMIC_TOOLSNoSet to enable dynamic tools (register_tool/unregister_tool). Omit to disable dynamic tools entirely.
LOCAL_LLM_PROVIDER_TYPENoProvider type (e.g., `ollama` or `openai`), used in quick single-provider env mode.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
chatA

Chat-completion passthrough to the cheap/local model — cheapest way to offload a small mechanical task. Pass prompt (+ optional system) for one-shot completions, or messages for a full OpenAI-style conversation (few-shot examples, multi-turn).

summarizeA

Summarize files or text with the local model. File contents are read server-side and NEVER enter your context — only the summaries come back. Prefer this over reading large files yourself.

extractB

Extract structured data from text/files with the local model. Optionally validate output against a JSON schema (one automatic retry on invalid output).

classifyC

Classify text/file content into one or more labels with the local model.

decideA

Decision-model scoring (ollama /v1/systemone — clef / clef-flash / nimble / tev). Scores 1–64 TYPED questions about a state in ONE forward pass and returns calibrated probabilities per option — no text generation, no output parsing, no retries. Prefer over classify when a decision model is available: you get real probabilities instead of parsed JSON. Question types: 'choice' (criteria maps option keys→descriptions, null uses the key), 'score' (numeric scale), 'noul' (true/false). Requires an ollama provider running a decision model; a normal chat model returns an error. State is read server-side — files never enter your context.

map_filesA

Run one instruction over many files with the local model (batch job). output='report': get per-file results. output='stage_writes': the model rewrites each file and every change is staged as a diff for your review — NOTHING hits disk until you commit_write.

embedA

Embed text/files with an embedding model on the local provider — for semantic dedup, clustering, or find-similar work that generation can't do. Needs an embedding model (e.g. nomic-embed-text, embeddinggemma) — check list_models capabilities. Returns raw vectors; cosine-similarity them yourself.

count_tokensA

Estimate token counts for text/files (chars/4 heuristic — ±20% vs a real tokenizer; for input sizing, not billing). Use before run_local_agent/summarize to check fit vs num_ctx.

run_local_agentA

Delegate a low-complexity task to the LOCAL SUBAGENT: the cheap model runs its own tool loop (read_file, list_dir, search_files, stage_write, whitelisted run_command, plus any registered dynamic tools) entirely server-side. File contents and intermediate steps never enter your context — you get back a compact final answer + staged-write op ids to review. Use for mechanical, monotonous, or bulk work: finding things, transforming files, answering questions over many files. Do NOT delegate work needing real reasoning, security judgment, or architecture decisions.

propose_writeA

Have the local model rewrite/create ONE file per your instruction, staged for review. Returns an op id + diff. Nothing is written until commit_write. Use for mechanical rewrites where the file content shouldn't flow through your own context.

propose_editA

Like propose_write, but the local model emits SEARCH/REPLACE hunks instead of the whole file — much more reliable on large files and small models. Server applies the hunks and stages the result as a normal op (same diff/commit flow).

stage_deleteA

Stage a file DELETION for review — nothing touches disk until commit_write. The diff shows all lines removed; uncommit_write restores the file afterwards. Use for dead-code cleanup instead of emptying a file with propose_write.

list_stagedA

List pending staged writes (proposed changes not yet on disk).

get_diffC

Show the unified diff for a staged write op.

set_write_modeA

Switch the server's write posture. 'propose' (default): staged writes only — commit_write is refused; you apply diffs with your own tools. 'write': commit_write applies staged ops to disk. persist=true also writes the choice to the server config file.

commit_writeA

Apply a staged write to disk (atomic: tmp+rename). Call only AFTER reviewing the diff with get_diff. Refuses if the file changed since it was staged — pass force=true to overwrite anyway. Only works when write_mode is 'write' — do NOT call it in 'propose' mode (it refuses and the permission prompt would just show an opaque op_id). path and summary are REQUIRED because the user's approval prompt only shows tool args — make them say exactly what is being written. Pass ops: [{op_id, path, summary}] instead to commit a batch in ONE approval — use it for map_files stage_writes output so the user sees the whole set at once.

verify_stagedA

Run a whitelisted command against a staged write WITHOUT touching the target file: the op's content is materialized to a temp file in the same directory (import/path resolution matches the real file), '{file}' in argv is replaced by the temp path (appended if absent), and the command runs under the command_whitelist. Use it to typecheck/lint a staged op before commit_write — running a checker on the original path sees the OLD on-disk content, not the stage. restore_paths lists files the command may rewrite (e.g. an auto-updated lint baseline) — snapshotted before, restored after. The temp file is always removed.

discard_writeC

Drop a staged write op without applying it.

list_commitsA

List recently committed writes (last 20) — for revert_write.

revert_writeA

Undo a committed write: stages a NEW op restoring the pre-commit content (goes through normal review — commit_write applies it).

uncommit_writeA

One-call undo of a committed write — restores the pre-commit content atomically (deletes files the commit created), no re-staging/re-commit needed. Refuses if the file changed since the commit unless force:true. Requires write_mode 'write' — in 'propose' mode use revert_write + commit_write for the reviewed path.

list_modelsA

List models available on a provider. For ollama providers includes size, parameter count, quantization and capabilities — use this plus get_system_resources to pick the biggest model that fits VRAM.

get_system_resourcesA

Report host RAM + GPU VRAM and currently-loaded models. Only works for LOCAL ollama providers — returns {unavailable: true} for remote/openai-type providers. Use before picking a model or num_ctx for heavy jobs. Includes ollama_gpu: which GPU(s) the ollama server is pinned to (env) or observed using (runner process device fds).

pull_modelA

Download a model on an ollama provider (e.g. 'qwen2.5-coder:7b'). Runs as a background job — returns a job_id; poll progress with get_job. Only for ollama providers.

search_modelsA

Search the public ollama registry (ollama.com) for models to pull_model. Returns name, description, capability chips (tools/thinking/vision), available parameter sizes, and whether the family is already installed. Requires internet access.

list_model_tagsA

List pullable tags for a model in the ollama registry (e.g. model 'gemma4' -> e4b, 12b, 26b, ...). With include_sizes=true, fetches each tag's download size from the registry manifest API (one request per tag). Requires internet access.

download_modelA

Download a model from Hugging Face via the hf CLI (for llama.cpp/TabbyAPI/vLLM-style servers where pull_model doesn't apply). Runs as a background job — poll with get_job. e.g. repo 'bartowski/Qwen2.5-Coder-7B-Instruct-GGUF' with include 'Q4_K_M'.

get_jobB

Get status/progress of a background job (e.g. a model pull).

list_jobsB

List background jobs (most recent first).

wait_jobA

Sleep for a number of seconds (max 600), then return. With job_id, returns early as soon as that job reaches done/error — use to poll pull_model/run_local_agent without busy-looping get_job.

control_jobA

Steer a running background job: pause (halt between agent steps), resume, cancel (aborts in-flight work too), or inject (append an operator instruction the local agent sees on its next step — for course-correcting a run_local_agent mid-flight).

recommend_modelA

Analyze installed models against detected hardware and recommend a default_model for a provider. Prefers tool-calling models that fit the target GPU's free VRAM (or free RAM for CPU-only). With apply=true, writes the pick to the provider's default_model in the config file AND applies it live to this server.

delete_modelA

Permanently delete a model from an ollama provider (DELETE /api/delete). Irreversible — the model must be re-pulled to restore. Refuses to delete the provider's default_model or a currently-loaded model unless force=true.

prune_modelsA

Bulk-delete old models from an ollama provider. dry_run=true (default) only reports candidates. Always keeps: keep[] ids, the provider default_model, currently-loaded models, and the keep_recent most recently modified others. With dry_run=false, deletes the rest.

unload_modelC

Unload a model from VRAM on an ollama provider (frees memory immediately).

get_usage_statsA

Session totals: local LLM calls, tokens consumed on the cheap model, and delegated_bytes (bytes of file content processed server-side that never entered your context — i.e. the savings).

get_server_infoA

Show this server's config: providers (sanitized), allowed_roots, feature flags, limits. Call this first if unsure what's configured.

register_agent_toolA

Register a NEW tool that the local model can call during run_local_agent (persists for this server session; persist=true saves it across restarts). kind='shell': an executable + argv template with ${param} placeholders (execFile, no shell). kind='js': a JS function body run in node:vm as (body)(args). Requires LOCAL_LLM_DYNAMIC_TOOLS=1 on the server.

unregister_agent_toolC

Remove a runtime-registered dynamic tool.

list_agent_toolsB

List runtime-registered tools available to the local agent.

get_command_whitelistA

Show which commands the local agent's run_command tool may execute (argv-level whitelist, no shell).

update_command_whitelistB

Add/remove commands the local agent may run. Writes the server config file — prefer tight allow_args over broad access. This tool should stay in Devin's 'ask' permissions.

Prompts

Interactive templates invoked by user choice

NameDescription
delegateHand a low-complexity task to the local model via run_local_agent, then review any staged writes.
cheap_summarySummarize a file or directory glob without pulling its contents into context.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 42 tools

Disambiguation4/5

The 42 tools cover distinct sub-domains, and detailed descriptions differentiate overlapping pairs like propose_write/propose_edit and revert_write/uncommit_write. However, a few pairs (e.g., decide vs classify, revert_write vs uncommit_write) could still cause misselection without careful reading.

Naming Consistency4/5

Nearly all tools use snake_case verb_noun (list_staged, commit_write, pull_model), with a few single-verb actions (chat, summarize, extract) that remain stylistically consistent. No mixed camelCase or chaotic patterns.

Tool Count3/5

42 tools is heavy for a single MCP server, exceeding the typical 3-15 range, though the server's broad scope (staged writes, model management, jobs, local LLM tasks, config) justifies many of them. It risks overwhelming an agent's tool selection.

Completeness5/5

The surface covers full lifecycle for staged writes (stage, review, commit, revert, uncommit, verify, discard), model management (search, pull, download, delete, prune, unload, recommend), jobs, local inference tasks, and config. No obvious gaps in the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues