Skip to main content
Glama

Local Worker MCP

클라이언트에 구애받지 않는 로컬 MCP. 프론티어는 계획하고, 위임하고, 검토합니다. 로컬은 무겁고, 기계적이며, 검증 가능한 작업을 수행합니다.

목표는 유료 AI의 토큰 소비를 줄이면서, 원시 콘텐츠를 그들의 컨텍스트에 집어넣지 않는 것입니다.

Codex / Claude / Gemini / Grok
              │
              ▼
       Local Worker MCP
              │
       ┌──────┴───────────────┐
       ▼                      ▼
 Gemma 4 12B QAT          arquivos / PDF
 via Ollama               extração + evidências
       │
       ▼
 resultado compacto e verificável
       │
       ▼
 Frontier revisa

이는 주 AI를 대체하지 않으며 모델 라우터가 아닙니다. 실제 작업 위임입니다.

LOCAL DISPONÍVEL?          NÃO
      │                     │
      ▼                     ▼
   DELEGA                NÃO INSISTE
      │                     │
      ▼                     ▼
   COMPRIME            FRONTIER ASSUME
      │
      ▼
 FRONTIER REVISA

Gemma는 최적화입니다. 절대 단일 실패 지점이 될 수 없습니다.

원칙

작업이 기계적, 반복적, 검증 가능하거나 컨텍스트 집약적인 경우( PDF, 로그, CSV, 코드, 추출, 분류, 요약) 위임합니다.

프론티어에 유지: 아키텍처 결정, 보안, 중요 변경, 주관적 판단, 모호한 요구사항.

로컬 워커가 오프라인이면 프론티어는 계속됩니다. MCP는 빠르게 unavailable을 반환하고 폴백을 권장합니다. 클라이언트는 기록할 수 있습니다:

Worker local indisponível; executei diretamente.

사용자 개입이 필요하지 않습니다.

Related MCP server: ollama-handoff

요구사항

  • Python 3.10+

  • 동일한 PC 또는 LAN의 다른 PC에 있는 Ollama

  • 로컬 모델 (권장: Gemma 4 12B QAT)

설치

git clone https://github.com/CaioAllgayer/Local-Worker-MCP.git
cd Local-Worker-MCP
python -m pip install -e ".[dev]"
copy .env.example .env

Ollama + Gemma

  1. Ollama를 설치하고 시작합니다.

  2. 모델을 다운로드합니다. 이름은 하드코딩되지 않았습니다 — 실제 이름을 ollama list에서 사용하세요:

ollama list
ollama pull <nome-real-do-gemma>
  1. LOCAL_LLM_MODEL이 비어 있으면 워커는 이름에 gemma가 포함된 모델을 감지하려고 시도합니다. 그렇지 않으면 첫 번째 목록의 모델을 사용합니다.

  2. 엔드포인트를 테스트합니다:

curl http://127.0.0.1:11434/api/tags
local-worker status
  1. MCP를 시작합니다:

local-worker-mcp

동일 PC

LOCAL_LLM_PROVIDER=ollama
LOCAL_LLM_BASE_URL=http://127.0.0.1:11434
LOCAL_LLM_MODEL=

local vs lan은 호스트 이름으로 감지됩니다. 127.0.0.1, localhost 및 ::1은 로컬입니다.

노트북이 데스크톱을 사용하는 경우

워커는 localhost를 가정하지 않습니다. 백엔드는 LAN의 다른 PC에 있을 수 있습니다.

노트북에서:

LOCAL_LLM_PROVIDER=ollama
LOCAL_LLM_BASE_URL=http://192.168.x.x:11434

192.168.x.x를 데스크톱의 실제 IP로 바꾸세요 (Windows에서는 ipconfig, Linux에서는 ip a). 프로젝트에 고정 IP는 없습니다.

동작은 동일합니다: 빠른 실패, 차단기, 캐시, 압축.

데스크톱에서 Ollama는 LAN 연결을 허용해야 합니다 (OLLAMA_HOST=0.0.0.0 변수 및 방화벽에서 포트 11434 열기).

OpenAI 호환

LM Studio, llama.cpp server, vLLM 및 유사:

LOCAL_LLM_PROVIDER=openai_compatible
LOCAL_LLM_BASE_URL=http://127.0.0.1:1234/v1
LOCAL_LLM_MODEL=...
LOCAL_LLM_API_KEY=

빠른 실패 및 차단기

기본값:

LOCAL_LLM_CONNECT_TIMEOUT_SECONDS=2
LOCAL_LLM_REQUEST_TIMEOUT_SECONDS=45
LOCAL_LLM_MAX_RETRIES=0
LOCAL_LLM_CIRCUIT_BREAKER_FAILURES=2
LOCAL_LLM_CIRCUIT_BREAKER_COOLDOWN_SECONDS=60

연결 거부는 재시도하지 않습니다. N번 실패 후 회로가 열리고 다음 호출은 즉시 unavailable을 반환합니다. 쿨다운 후 한 번의 시도가 허용됩니다.

{
  "status": "unavailable",
  "fallback_recommended": true,
  "reason": "Local LLM endpoint unreachable"
}

MCP 도구

도구

기능

local_status

제공자, 엔드포인트, 로컬/LAN, 지연 시간, 모델, 차단기, 캐시

delegate_task

일반 작업 → 간결한 JSON

delegate_batch

독립적인 작업을 병렬로 처리 (MAX_PARALLEL_WORKERS=4)

delegate_file

TXT, Markdown, CSV, JSON, 코드, 로그

delegate_pdf

페이지별 추출, 청킹, 계층적 합성, 증거

cache_stats

크기, 항목, 히트, 미스, 히트율, 만료됨

cache_cleanup

지금 GC (TTL → 재사용 안 함 → LRU)

cache_clear

폐기 가능한 항목 삭제

파일의 원시 내용은 유료 AI의 컨텍스트에 들어갈 필요가 없습니다. 워커가 읽고, 압축하고, 검증 가능한 증거(페이지, 줄, 발췌)를 반환합니다.

보안

기본값: SECURITY_MODE=READ_ONLY, ENABLE_SHELL=false.

SECURITY_MODE=READ_ONLY
ALLOWED_PATHS=C:\Projects,D:\Research
ENABLE_SHELL=false
  • READ_ONLY — 허용된 경로에서만 읽기; 쓰기 및 셸 차단

  • WORKSPACE_WRITE — 허용된 경로에서 읽기/쓰기; ENABLE_SHELL=true인 경우에만 셸 허용

  • FULL_LOCAL — 가장 허용적; 여전히 파괴적인 명령 차단

경로 탐색이 차단됩니다. rm, del, format 등은 거부됩니다.

캐시 및 로그

~/.local-worker-mcp/cache에 있는 지속적 캐시, 자동 정리:

CACHE_TTL_DAYS=30
CACHE_MAX_SIZE_GB=10
CACHE_CLEANUP_THRESHOLD_PERCENT=90
CACHE_TARGET_USAGE_PERCENT=80
CACHE_CLEANUP_INTERVAL_HOURS=6

항목은 기본적으로 폐기 가능합니다. persistent=true는 중요한 아티팩트를 보존합니다.

로그는 순환하고 만료됩니다:

LOG_RETENTION_DAYS=14
LOG_MAX_SIZE_MB=250

로그는 파일의 전체 내용을 저장하지 않습니다.

벤치마크

local-worker benchmark arquivo.pdf

출력:

Arquivo: arquivo.pdf
Worker: gemma4:12b-qat
Backend: ollama
Endpoint: LAN/local
Tamanho: ...
Tokens originais estimados: ...
Tokens processados localmente: ...
Resultado para frontier: ...
Compressão: ...
Tempo: ...
Cache: HIT/MISS

Codex

~/.codex/config.toml 또는 클라이언트의 JSON:

{
  "mcpServers": {
    "local-worker": {
      "command": "local-worker-mcp",
      "env": {
        "LOCAL_LLM_PROVIDER": "ollama",
        "LOCAL_LLM_BASE_URL": "http://127.0.0.1:11434",
        "ALLOWED_PATHS": "C:\\Projects"
      }
    }
  }
}

examples/codex.json을 참조하세요.

Claude Code

claude mcp add local-worker --scope user -- local-worker-mcp

또는 examples/claude_code.json을 ~/.claude.json에 붙여넣으세요.

프로젝트의 CLAUDE.md / AGENTS.md에서 정책을 가르치세요:

기계적 작업 및 대용량 파일 읽기는 delegate_pdf / delegate_file / delegate_task로 보냅니다. local_status 또는 도구가 unavailable을 반환하면 직접 실행하고 계속 진행합니다.

기타 MCP 클라이언트

모든 stdio 클라이언트가 작동합니다. examples/generic.json에 일반 예시:

{
  "mcpServers": {
    "local-worker": {
      "command": "local-worker-mcp",
      "env": {
        "LOCAL_LLM_PROVIDER": "ollama",
        "LOCAL_LLM_BASE_URL": "http://127.0.0.1:11434"
      }
    }
  }
}

예시

  • examples/pdf.md — 논문 / 긴 PDF

  • examples/code.md — 저장소 초기 읽기

  • examples/logs.md — 오류 추출

테스트

python -m pip install -e ".[dev]"
pytest
ruff check src tests

테스트 스위트는 실제 Ollama/Gemma에 의존하지 않습니다. 모두 모킹됩니다.

이 MVP에 포함되지 않는 것

Windows GUI 자동화, Playwright, 복잡한 멀티에이전트, 벡터 RAG, 대시보드, Kubernetes, ML 라우터.

아키텍처는 delegate_repo, delegate_git, delegate_browser 등을 다음 단계를 위해 공간을 둡니다.

라이선스

MIT.

Available Tools

8 tools
cache_cleanupA

Run cache garbage collection now (TTL, unused, then LRU).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full behavioral disclosure. It reveals the eviction strategy (TTL, unused, then LRU) but lacks details on side effects (e.g., blocking duration, performance impact, idempotency), leaving moderate gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no superfluous words. Parenthetical details are efficiently placed, making it highly concise and structured.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description covers the main action and eviction order adequately. However, missing annotations or cautions about safety or frequency of use slightly reduce completeness, though the core functionality is well captured.

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 tool has zero parameters and the input schema is empty (vacuously 100% coverage). No parameter explanation is needed, and the description adds no confusion, so this dimension is optimal.

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 ('Run cache garbage collection now') and elaborates on the eviction order ('TTL, unused, then LRU'), which makes the tool's purpose highly specific and distinguishable from siblings like 'cache_clear' or 'cache_stats'.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when or when not to use this tool compared to alternatives. It only implies immediate execution but does not mention prerequisites, suitable scenarios, or exclusions.

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

cache_clearA

Delete disposable cache entries. Persistent artifacts stay unless include_persistent=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_persistentNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description adequately discloses the destructive behavior (deleting disposable entries) and the conditional inclusion of persistent artifacts. It does not mention potential side effects or authorization requirements, but for a simple cache-clear operation, the level of transparency is sufficient.

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 extremely concise with only two sentences, front-loading the action and key constraint. Every word serves a purpose, 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?

Given the tool's simplicity (single boolean parameter, no output schema), the description covers the core behavior and parameter effect. It does not describe return values or confirmatilon, but these are standard and not critical for selection in this context.

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 input schema has 0% description coverage, leaving the 'include_persistent' parameter undocumented. The description compensates by explaining that setting it to true includes persistent artifacts, adding meaningful context beyond the schema defaults.

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

Purpose4/5

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

The description clearly states the tool deletes 'disposable cache entries' using the verb 'Delete' and specifies the resource. However, it does not explicitly differentiate from sibling 'cache_cleanup', which may have overlapping functionality, leaving some ambiguity.

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 context on when to use the 'include_persistent' parameter ('Persistent artifacts stay unless include_persistent=true'), but offers no guidance on when to use this tool versus related tools like cache_cleanup or cache_stats. No exclusions or alternatives are mentioned.

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

cache_statsB

Cache size, entry count, hits, misses, hit rate, and expired entries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It merely lists metrics without confirming that the tool is read-only, what side effects (if any) exist, or whether it performs any cache maintenance. The absence of any behavioral detail beyond a stat list provides minimal transparency.

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

Conciseness4/5

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

The description is a single, compact list of terms that directly conveys the tool's return fields. It is front-loaded with the core information and has no filler. However, it is a fragment rather than a full sentence, which slightly reduces structure clarity but does not harm comprehension.

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?

For a simple stats tool with no parameters and no output schema, the description conveys the available metrics but omits any statement of the tool's overall effect (e.g., 'returns' or 'displays') and any caveats. It adequately lists items for a minimal tool but lacks a complete sentence and usage context, leaving it just at the adequate threshold.

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

Parameters4/5

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

The tool accepts zero parameters, so the input schema is empty. The description needs no parameter clarification, and the baseline for no parameters is 4. The description correctly focuses on the output content, which is the relevant information for invocation.

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 enumerates the specific statistical fields (cache size, entry count, hits, misses, hit rate, expired entries), making it clear the tool provides cache statistics. However, it lacks an explicit verb like 'retrieves' or 'returns', and it doesn't differentiate from sibling tools such as cache_cleanup or cache_clear, though its purpose is evident from the name and content.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not state that this is for inspection as opposed to cache_cleanup or cache_clear, nor does it mention any preconditions or complementary tools. This leaves the agent without explicit selection criteria.

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

delegate_batchB

Run independent local tasks in parallel. One failure does not cancel the batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It usefully notes that one failure does not cancel the batch. However, it omits other critical behaviors such as how results are returned, whether tasks share state, or any execution limits, leaving significant gaps for a tool that manages parallelism.

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 extremely concise, using only two sentences. Every sentence provides distinct value: the first states the core purpose, the second adds a critical behavioral trait. No unnecessary words or redundancy.

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?

Despite the tool's simple parameter set, the description is incomplete. It does not explain the return format, error propagation beyond non-cancellation, or any constraints on parallelism. With no output schema and no parameter descriptions, the agent lacks sufficient information to invoke the tool correctly in a complex workflow.

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

Parameters2/5

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

The input schema has 0% description coverage and the description does not explain the 'tasks' parameter beyond stating it runs tasks in parallel. It fails to clarify what each object in the array should contain (e.g., same fields as delegate_task input). This is a major omission that forces the agent to guess the parameter's structure.

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

Purpose4/5

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

The description clearly states the tool runs tasks in parallel, using the verb 'Run' and resource 'independent local tasks.' It distinguishes from the sibling 'delegate_task' by emphasizing parallelism and independence. However, it does not explicitly define what constitutes a 'local task,' relying on the schema's generic array of objects, which slightly reduces specificity.

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 parallel independent tasks, but it provides no explicit guidance on when to choose this tool over siblings like 'delegate_task' (single task) or 'delegate_file'/'delegate_pdf' (specialized tasks). The absence of when-not-to-use or alternative recommendations leaves the agent to infer context from tool names alone.

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

delegate_fileC

Have the local worker read a file (txt/md/csv/json/code/log) without loading it into frontier context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
objectiveYes
persistentNo
output_modeNostructured
force_refreshNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions reading a file without loading into frontier context, but omits critical behavioral details: the worker processes the file based on an 'objective' (not just reading), the output_mode parameter controls return format, and the 'persistent' and 'force_refresh' options affect caching. The agent learns little about what happens or what to expect.

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

Conciseness3/5

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

The description is a single sentence of 18 words, which is very concise. However, conciseness is achieved at the expense of essential information. While there is no wasted text, the description is under-specified and does not earn its place by being informative enough.

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

Completeness1/5

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

Given the tool has 5 parameters (including required ones), no output schema, and no annotations, the description is grossly incomplete. It fails to explain the tool's full behavior, parameter roles, return value, or caching semantics. The agent cannot safely invoke this tool without additional guessing.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description explains none of the five parameters. It does not mention that 'path' is the file location, 'objective' is the task, 'output_mode' controls output format, 'persistent' caches results, or 'force_refresh' bypasses cache. The agent must guess or rely on parameter names, which is insufficient for correct invocation.

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 verb 'read' and the resource 'a file (txt/md/csv/json/code/log)'. It also distinguishes from reading that loads into frontier context, and from sibling tools like delegate_pdf (different file type) and delegate_task/batch (task delegation). The purpose is specific and unambiguous.

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 hints at when to use (when you want to avoid loading into frontier context) but does not explicitly state when not to use or provide alternatives. It lacks guidance on comparing with sibling tools like delegate_task or cache tools. The advice is implicit, not actionable.

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

delegate_pdfC

Extract, chunk, and analyze a PDF locally. Returns compact findings with page evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
objectiveYes
persistentNo
output_modeNoanalysis
force_refreshNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'locally' (suggesting no network call) and 'returns compact findings with page evidence', but does not disclose whether the operation is read-only, destructive, requires permissions, or has side effects (e.g., caching). The term 'delegate' is ambiguous.

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

Conciseness5/5

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

The description is a single, short sentence with essential front-loaded information. Every word contributes to purpose and outcome. No filler or repetition.

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?

Given the complexity (5 parameters, 0% schema coverage, no output schema, no annotations), the description is insufficient. It omits return format, side effects, error conditions, and parameter meanings. The tool appears non-trivial (analysis with caching) but the description does not enable proper invocation.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate but does not. It mentions 'extract, chunk, and analyze' but fails to map parameters (path, objective, persistent, output_mode, force_refresh) to these actions. The agent cannot infer how to set 'output_mode' to get different results or what 'persistent' means.

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 uses a specific verb ('Extract, chunk, and analyze') and resource ('PDF locally'), clearly stating what the tool does. It distinguishes itself from sibling tools like delegate_task or delegate_batch by focusing on PDF analysis, though it could be more explicit about how it differs from delegate_file.

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 when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives or context for choosing this tool over siblings like delegate_file or delegate_task. The agent receives no help in deciding when to invoke this tool vs others.

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

delegate_taskC

Delegate a mechanical task to the local worker. Returns compact structured output.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
objectiveYes
persistentNo
force_refreshNo
expected_outputNo
max_output_tokensNo

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only says "Returns compact structured output" without explaining what happens (e.g., is this async? Does it block? Does it modify state? What about error cases?). The behavioral traits are severely under-specified.

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

Conciseness4/5

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

The description is very short (two senteces) and front-loaded with the action. It is concise, but this brevity comes at the cost of missing critical information.

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

Completeness1/5

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

Given the tool has 6 parameters (1 required), no output schema, no annotations, and sibling delegation tools, the description is incomplete. It provides almost no information about how to use the tool correctly or what the output format is.

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

Parameters2/5

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

Schema description coverage is 0%, meaning no parameters have descriptions. The description only mentions "compact structured output" but gives no insight into what the parameters mean, how they affect behavior, or any semantics beyond the schema names. For 6 parameters, this is insufficient.

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

Purpose3/5

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

The description states "Delegate a mechanical task to the local worker" which gives a verb and resource, but 'mechanical task' and 'local worker' are vague. It does not clearly distinguish itself from siblings like delegate_batch or delegate_file, which sound like similar delegation tools.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. With siblings like delegate_batch and delegate_file, the agent has no basis to choose between them. No when-to-use, when-not-to-use, or prerequisites are mentioned.

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

local_statusA

Check local worker health: provider, endpoint, model, circuit breaker, cache.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses what components are checked, which is transparent. However, it does not explicitly state whether the operation is read-only, has no side effects, or requires any authentication. A health check is likely safe, but the description does not confirm this.

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

Conciseness5/5

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

The description is a single sentence that front-loads the purpose ('Check local worker health') and then lists the components. Every word is functional; no redundant or extraneous 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 that there are no parameters and no output schema, the description is mostly complete. It informs the agent what the tool checks. However, it does not hint at the return format (e.g., a status object per component). For a health check tool, specifying the output structure would be beneficial, but the current description is acceptable.

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?

There are zero parameters, and schema coverage is 100%. The description adds value beyond the empty schema by listing the specific health aspects checked, which helps the agent understand what the tool inspects. No further parameter documentation is needed.

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

Purpose5/5

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

The description explicitly states the tool checks local worker health and lists specific components (provider, endpoint, model, circuit breaker, cache). This provides a clear verb-resource pair and distinguishes it from sibling tools like delegate_task or cache_stats, which have different purposes.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. While the purpose is clear enough that an agent can infer it's for health checks, the description does not mention when to use it or when to prefer siblings (e.g., delegate_task for delegation, cache_stats for cache status). Usage is implied but not stated.

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.

  1. 8 tool updatesv0.1.0
    • First observedcache_cleanup
    • First observedcache_clear
    • First observedcache_stats
    • First observeddelegate_batch
    • First observeddelegate_file
    • First observeddelegate_pdf
    • First observeddelegate_task
    • First observedlocal_status

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: health check, task delegation, batch processing, file reading, PDF analysis, cache statistics, cleanup, and clearing. There is no overlap in functionality, making it easy for an agent to select the appropriate tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., local_status, delegate_task, cache_stats). The naming is predictable and clear, with verbs like 'delegate' and 'cache' used consistently to indicate the action and domain.

Tool Count4/5

With 8 tools, the count is appropriate for the server's purpose of managing a local worker and its cache. The scope is well-defined without being too thin or overly broad.

Completeness4/5

The tool surface covers the key operations: health checks, task delegation (including batch and file processing), and cache management (stats, cleanup, clear). A minor gap is the lack of a tool to update or cancel a delegated task, but the core workflows are well supported.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers