local-llm-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@local-llm-mcplist my local GGUF models and estimate VRAM for the smallest one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
local-llm-mcp
本地模型管家 MCP:让任意 MCP 客户端(ZCode / Claude Code / Cursor…)一句话用上 本地 GGUF 模型——列模型、估显存、启停 llama-server、代理对话。
针对 8GB 显存(RTX 4060 Laptop)设计:显存裁判(建议 offload 层数)+ 用完即关(闲置自动卸载)是核心能力,不是附属功能。
MCP 工具(9个)
Tool | 作用 |
| 连通性测试 |
| 配置自检(模型目录 / llama-server 路径) |
| 扫描模型目录,返回架构/量化/层数/大小/多模态标志 |
| 估算显存占用(权重+KV+开销),附建议 offload 层数 |
| 在显存预算内建议最大 offload 层数 |
| 启动 llama-server 并阻塞到健康检查通过 |
| 停止服务释放显存(幂等;PID 身份校验防误杀) |
| 查询运行状态(进程/健康/闲置计时) |
| 对话转发到已加载模型(OpenAI 消息格式),自动剥离思考块 |
典型用法:estimate_vram 看放不放得下 → start_server 启动(MoE 大模型加
extra_args=["--cpu-moe"] 做 CPU+GPU 混合推理,8GB 卡跑 35B-A3B 约 10~15 tok/s)
→ chat 对话 → 用完 stop_server。忘记停也没关系:默认闲置 10 分钟自动卸载。
状态持久化在磁盘上,MCP 进程重启后 stop_server / server_status 依然有效。
Related MCP server: Local AI MCP
快速开始
# 1. 安装 uv(Windows)
winget install astral-sh.uv
# 2. 克隆并同步依赖(自动使用 Python 3.12)
git clone https://github.com/Qinlupfu/local-llm-mcp.git
cd local-llm-mcp
uv sync
# 3. 按需设置环境变量(见下表),验证工具链
uv run python scripts/verify_phase0.pyllama.cpp 运行时需自备:从 llama.cpp releases
下载对应平台的预编译包(如 llama-bXXXX-bin-win-cuda-13.3-x64.zip),把目录设为
LLM_MCP_LLAMA_DIR。系统已装 CUDA toolkit(PATH 里有 cudart)时无需额外 cudart 包。
测试
uv run pytest tests/ -v # 单元测试(全部 mock,不碰真实进程/GPU)
uv run python scripts/integration_test.py # 真实集成:Gemma-1B 全生命周期 + 闲置卸载集成测试会真实启动/停止 llama-server 并做一次事实问答,需要本机已配置好模型与运行时。
ZCode 注册
写入用户级配置 ~/.zcode/cli/config.json → mcp.servers(其他客户端同理):
"local-llm": {
"command": "uv",
"args": ["--directory", "E:\\AI-models\\local-llm-mcp", "run", "local-llm-mcp"]
}配置项(环境变量覆盖)
变量 | 默认值 | 说明 |
|
| GGUF 模型根目录 |
|
| llama.cpp 目录 |
|
| llama-server 端口 |
|
| chat 超时(秒);35B 混合推理较慢,给足余量 |
|
| 启动健康等待上限(秒) |
|
| 闲置自动卸载(秒),0=不自动卸载;应大于 chat 超时 |
|
| 运行时状态文件 |
|
| llama-server 日志目录 |
开发约定
Python 3.12(
.python-version已锁定;系统 3.14 太新,部分轮子未编译)。本项目用"任务书工作流"开发:
docs/tasks/下每个 Phase 一份任务书 (角色/接口/上下文/验收四段),交给本地 coding 模型写模块代码, 人负责集成层、接口钉死和"咒语级"细节(进程 API、库版本差异)。集成层(
server.py的 tool 注册)只做参数透传和LocalLlmError→{"ok": false, "error": 中文消息}的包装,不写业务逻辑。
Available Tools
9 toolschatChatA
把对话发给已加载的本地模型(OpenAI 消息格式 [{"role","content"}])。
先用 start_server 启动模型;返回 {"content", "reasoning", "model", "usage"}。
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | ||
| max_tokens | No | ||
| temperature | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the required message format, the start_server prerequisite, and the return shape, but says nothing about streaming vs blocking behavior, error/permission conditions, or how max_tokens/temperature affect generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, purpose front-loaded, no filler. The trailing list of return fields is slightly redundant given an output schema exists, but it is brief enough not to bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description usefully names the prerequisite. However, for a generative inference call with no annotations, the omission of operational traits (blocking behavior, failure modes, meaning of the sampling params) leaves it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the required messages parameter's structure ([{"role","content"}]), but max_tokens and temperature are undocumented in both schema and description, leaving two of three parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: send a conversation to the already-loaded local model, with the OpenAI message shape given inline. It is clearly the inference/chat entry point versus siblings like list_models or server_status, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"先用 start_server 启动模型" states an explicit precondition and names the sibling tool that satisfies it, which is real routing guidance. It does not describe when to avoid this tool or how it relates to stop_server / server_status, so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_vramEstimate VramC
估算模型显存占用(权重+KV+开销),附带建议的 GPU offload 层数 (返回中的 suggested_gpu_layers 字段)。
| Name | Required | Description | Default |
|---|---|---|---|
| ctx_len | No | ||
| model_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states what is estimated (weights, KV, overhead) but omits whether the tool is read-only, whether a model must be loaded first, and what side effects, if any, exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the core purpose immediately and includes only the most relevant extra detail about the returned suggestion field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described in depth. However, with no annotations, 0% parameter description coverage, and no usage guidance, the definition is incomplete for a two-parameter estimation tool, especially regarding ctx_len and model_id semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are two parameters and schema description coverage is 0%. The description does not explain model_id or ctx_len, nor does it clarify how context length affects the estimate, so it fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (估算/estimate) and resource (模型显存占用/model VRAM usage), and it lists the included components (权重+KV+开销). It does not differentiate this tool from the sibling suggest_gpu_layers, which likely covers a similar GPU-layer-suggestion purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are provided. The description mentions the returned suggested_gpu_layers field but does not explain when an agent should call estimate_vram instead of suggest_gpu_layers or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList ModelsB
扫描本地模型目录,返回所有 GGUF 主模型的元数据(含多模态投影探测)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It discloses the non-obvious behavior that multimodal projection detection is included in the scan, and the read-only nature is implied by '扫描/返回', but it says nothing about cost, latency, failure when the directory is absent, or whether results are cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and the returned data. Nothing is wasted, though the extreme terseness leaves coverage gaps that a second clause could have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and 0 params means no parameter docs are required. However, the term '主模型' (main models) implies a distinction from other models and the purpose of the multimodal projection probe is unexplained, so an agent cannot fully predict the scope of the listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline rule this is a 4. The description correctly implies no input filtering is possible, which is consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (扫描/返回) and resource (本地模型目录, GGUF 主模型元数据), so the agent knows this enumerates locally available models rather than server or runtime state. It is clearly distinguishable from siblings like start_server or runtime_info, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. does the server need to be running?), and no mention of alternatives. The purpose implicitly suggests 'use this to discover models', but nothing is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingPingA
连通性测试,返回 pong。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the observable behavior ('returns pong'), which is the key trait for a probe, but it does not state that the call is side-effect free, idempotent, or whether it requires a running server.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence states purpose and expected result with zero filler, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial probe with an output schema already describing the return payload, the description is nearly sufficient. The only gap is the lack of any hint about when this is preferable to server_status or runtime_info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document; the baseline for a no-parameter tool is 4. No parameter meaning is missing or ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and outcome: a connectivity test that returns 'pong'. It is unambiguous what the tool does, though it never distinguishes itself from siblings like runtime_info or server_status that could also confirm the server is alive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the well-known 'ping' idiom and the phrase '连通性测试', so an agent can infer it is for reachability checks. However, there is no explicit when-to-use guidance and no comparison against alternatives such as server_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_infoRuntime InfoA
返回模型目录与 llama-server 路径,用于确认配置就绪。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无 annotations,描述需承担行为披露。“返回”暗示只读操作,但未明确无副作用、无需额外权限或是否依赖服务已启动等行为特征。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
单句中文,直接说明返回内容与用途,信息前置,无冗余。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
存在输出 schema,返回值结构无需描述;无参数,描述已覆盖核心返回和目的。但未提兄弟工具选择场景,略有欠缺。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
工具无参数,按规则以 4 为基线;描述未增加参数语义必要信息,因无参数可谈。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
明确返回模型目录与 llama-server 路径,并说明用于确认配置就绪。动词+资源具体,但未点明与 list_models、server_status 等兄弟工具的区分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
给出用途“确认配置就绪”,但未说明何时应使用本工具而非 server_status 或 list_models 等替代项,也没有前置条件或排除场景。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_statusServer StatusA
查询本地模型服务状态(进程/健康/加载的模型/闲置计时)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose what status facets are reported (process/health/models/idle timer), which implies a safe read. However, it says nothing about cost, whether it starts or touches the server, or latency/blocking behavior, so the disclosure is only partial for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the returned facets compactly parenthesized. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status query with an output schema that documents the return shape, the description is nearly sufficient: it tells the agent what the call reports. Only the boundary with ping/runtime_info/list_models is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is no parameter semantics to convey. The description correctly adds no parameter claims and simply describes the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (query/查询) and resource (local model service status) and enumerates the facets returned: process, health, loaded models, idle timer. This distinguishes it from siblings like ping and runtime_info, though the mention of 'loaded models' overlaps slightly with list_models without clarifying the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — an agent would call this to check whether the local model server is up and what it holds — but the description names no conditions, prerequisites, or alternatives among ping/runtime_info/list_models. Adequate but with a clear gap in routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_serverStart ServerA
启动 llama-server 加载指定模型,阻塞到健康检查通过。
gpu_layers=None 表示全量进显存;显存不够的模型可用 suggest_gpu_layers 的结果, MoE 大模型混合推理推荐 extra_args=["--cpu-moe"]。
| Name | Required | Description | Default |
|---|---|---|---|
| ctx_len | No | ||
| model_id | Yes | ||
| extra_args | No | ||
| gpu_layers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the call blocks until the health check passes, which is non-obvious and operationally important. However, it omits what happens if a server is already running, whether an existing process is replaced, timeout/failure behavior, and resource cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence front-loads the action and its blocking semantics, and the second sentence is dense parameter guidance with no filler. It is compact and well ordered, though the parameter notes are packed without visual separation from the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Yet for a process-launching tool the description lacks state-conflict handling, failure modes, and coverage of ctx_len, so it is only partly sufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the sentinel value for gpu_layers (None = full VRAM offload) and gives a concrete extra_args example, but says nothing about ctx_len's meaning or sensible ranges, leaving two of four parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific action (启动 llama-server) plus the resource it operates on (loading a specified model) and even discloses the completion condition (blocking until health check passes). This cleanly distinguishes it from siblings like stop_server, server_status, and runtime_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete pre-call guidance: use the result of suggest_gpu_layers when VRAM is insufficient, and pass extra_args=["--cpu-moe"] for MoE hybrid inference. It does not state what to do if a server is already running or how this relates to server_status, so no explicit exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_serverStop ServerA
停止本地模型服务并释放显存。幂等:未运行时也正常返回。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers the single most important trait: idempotency ('幂等:未运行时也正常返回' — returns normally even when not running). It does not say what happens to in-flight chats/requests or whether authentication is required, but the idempotency disclosure is genuine non-obvious behavior beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler: the action and its effect come first, then the idempotency guarantee. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema already defining the return shape, the description covers the essentials: what is stopped, what resource is freed, and the idempotent no-op case. Only a note on interruption of active sessions/requests is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. Nothing in the description misrepresents or invents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('停止本地模型服务' / stop local model service) and adds the side effect of releasing VRAM, which makes the effect unambiguous. It does not explicitly name start_server or server_status as the contrasting siblings, but the name-plus-effect pairing makes the opposite of start_server obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: stopping the service and freeing VRAM signals the context in which to call it (teardown / reclaim GPU memory). There is no explicit when-to-use vs. when-not guidance and no alternative sibling is referenced, so an agent must infer the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_gpu_layersSuggest Gpu LayersC
在显存预算内建议最大的 GPU offload 层数;放不下时提示需要 CPU 混合。
| Name | Required | Description | Default |
|---|---|---|---|
| ctx_len | No | ||
| model_id | Yes | ||
| budget_gb | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose one useful behavior beyond structured data: the graceful degradation to CPU offload when the budget is exceeded. However, it says nothing about defaults (budget_gb=7, ctx_len=8192), whether the recommendation is advisory only, or any auth/permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the core action and followed by the edge-case behavior. No filler, though the compression leaves semantic gaps that hurt other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a computation tool with three undocumented parameters and no stated relationship to estimate_vram/start_server, the description leaves an agent guessing about inputs and workflow placement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters. The description implies the budget_gb parameter via '显存预算' but never explains its units/default, and ctx_len — which materially changes layer sizing — is entirely unmentioned in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: suggesting the maximum number of GPU offload layers, constrained by a VRAM budget, plus the CPU-mixing fallback when it doesn't fit. That is far more precise than a tautology, but it never distinguishes itself from sibling tool estimate_vram, which an agent could easily confuse for this calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus estimate_vram or start_server, and no prerequisite info (e.g., must the model be listed/loaded first). The only conditional content is an output behavior ('says CPU mixing is needed'), not usage guidance.
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.
9 tool updates
v0.2.0- First observed
chat - First observed
estimate_vram - First observed
list_models - First observed
ping - First observed
runtime_info - First observed
server_status - First observed
start_server - First observed
stop_server - First observed
suggest_gpu_layers
TDQS
Scored across 9 tools
Most tools target distinct actions: ping, runtime_info, list_models, start/stop/status, chat. The only notable overlap is between estimate_vram and suggest_gpu_layers, since estimate_vram already returns a suggested_gpu_layers field; an agent could be unsure which to call for layer suggestions. Descriptions help but this pair remains somewhat confused.
All names use snake_case, which is consistent. However, the pattern is mixed: some are verb_noun (list_models, start_server, estimate_vram), while others are noun phrases (runtime_info, server_status) or simple verbs (ping, chat). Minor deviations keep it from a perfect verb_noun pattern.
Nine tools is well-scoped for local LLM server management. The set covers lifecycle, inspection, resource estimation, and inference without obvious bloat. Each tool has a clear role, making the count appropriate.
The surface covers core workflows: start/stop server, status, model listing, VRAM estimation, GPU layer suggestion, and chat. Minor gaps exist, such as no tool to stream or cancel an in-progress chat, no model download, and no configuration update. These are workable around but leave the surface slightly incomplete.
Maintenance
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables seamless integration between Ollama's local LLM models and MCP-compatible applications, supporting model management and chat interactions.13889170AGPL 3.0

Local AI MCPofficial
AlicenseAqualityAmaintenanceUnified MCP server for managing local model runtimes (Ollama, LM Studio, etc.), enabling provider-agnostic discovery, lifecycle management, hardware-fit checks, and delegated inference.1618Creative Commons Attribution Non Commercial No Derivatives 4.0 International- AlicenseNot gradedqualityDmaintenanceEnables listing, loading, unloading, and configuring models in LM Studio via MCP tools, with support for TTL and draft model settings.6MIT
- FlicenseCqualityDmaintenanceEnables MCP clients to interact with local LLMs via LM Studio, supporting dynamic chat, vision, RAG, file interaction, and model orchestration.28-