local-worker-mcp
Allows delegating tasks to a local Ollama model, which runs its own tool-calling loop with file read/write, web search, and current date/time tools, and returns auditable steps.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
local-worker-mcp
Status (2026-09-10): kept as our own custom delegation tool, but not the default anymore -- DeepSeek Harness (
dsh --profile worker "<task>") is, after a head-to-head benchmark on the same task/model showed its realbash/fstools verify their own work more reliably out of the box. See~/local-llm-benchfor the comparison andtools/claude-hooks/README.mdfor the delegation guardrail that now points atdshfirst. This server is still useful for cases dsh doesn't fit, and got arun_scripttool added as a direct result of that benchmark (closing the verification gap it found).
An MCP server that exposes a local Ollama model (e.g. Qwen3.6) as an agentic worker -- with its own tool-calling loop (read/list/write files inside an allow-listed folder, search the web, get the real current date/time) -- for use from any MCP client: Claude Code, Claude Desktop, Continue, Cursor, whatever.
"Foreman/worker" pattern: the MCP client (you, or a larger LLM like Claude) keeps the full context and decides what's worth delegating; this server only ever executes the one scoped, well-specified task it's handed, with no memory of anything else.
Why this exists
Grew out of using Continue.dev with local models and hitting real instability in that extension (it hangs). Instead of continuing to patch a VS Code extension, this project separates the concern: a plain MCP server, no GUI in the loop, talking straight to Ollama.
Related MCP server: ollama-mcp
Architecture
MCP client (Claude Code, Claude Desktop, ...)
│ tools/call "delegate_task"
▼
local-worker-mcp (this server, streamable HTTP)
│ /api/chat with tools attached
▼
Ollama (localhost:11434, or remote over Tailscale)
│ tool_calls: read_file / write_file / search_web / ...
▼
local-worker-mcp executes each tool call, scoped to workspace_rootSecurity (read this before using it)
allowedRootsin the config is a real allow-list: the server refuses anyworkspace_rootor path that isn't literally inside one of those folders -- empty by default, by design. You have to explicitly add folders via the dashboard or the config file before the worker can touch anything.trustedParentsis the ergonomic escape hatch for the above: any subdirectory under one of these is auto-allowed without registering it individually -- defaults to~/code, so any project you keep there (and whateverworkspace_rootyour MCP client passes for it, e.g. the current Claude Code project directory) just works with zero manual setup. UseallowedRootsinstead when you want something scoped tighter than "everything under this folder".Every write (
write_file) is logged to~/.local-worker-mcp/activity.logwith the full path and size -- so you can audit what the model touched afterward.Explicitly tested that a directory-escape attempt (
../../etc/...) is rejected by the server itself, not just "trusted" to the model behaving.The local model can get things wrong (see
~/local-llm-bench/RESULTS.mdfor real data on when and how much) -- always reviewstepsin the response before trusting a file change.
Install / run
git clone https://github.com/deatherick/local-worker-mcp.git
cd local-worker-mcp
npm install
npm run build
node dist/server.jsOpen http://localhost:8787 for the config dashboard (model, context
length, allowed folders, etc. -- saved to ~/.local-worker-mcp/config.json).
To run it centralized (one Mac with Ollama, reachable from other machines
over Tailscale/LAN) and connect from an MCP client on another machine,
point that client's MCP config at http://<host>:8787/mcp
(streamable-http transport), e.g. in Continue:
mcpServers:
- name: Local Worker
type: streamable-http
url: http://your-host.your-tailnet.ts.net:8787/mcpExposed tools
delegate_task(task, workspace_root, model?, think?, max_steps?)-- runs the full loop. ReturnsfinalTextplus everystepsentry (which tool it called, with what arguments, and the result) so you can audit before trusting the outcome.list_worker_config()-- current config, so a client can confirm which model/folders it's talking to before delegating.
Development
npm run dev # build + startRoadmap / not included yet
Proxying to other existing MCP servers (Git, Context7) from inside the worker's own loop -- today it only has its own
search_webplus the native file tools.A shell-command tool -- deliberately NOT included in v0.1 given the risk; if added, it needs its own allow-list of permitted commands, not free execution.
Auth on the HTTP endpoint -- currently assumes it runs behind a trusted network (Tailscale/LAN), not exposed to the open internet.
License
Apache 2.0.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Hosted MCP runtime where your agent publishes its own tools by tool call and keeps working.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language filesystem operations (create, list, delete directories/files) via Ollama local LLM and MCP protocol within allowed directories.11 npm1MIT
- AlicenseAqualityBmaintenanceEnables AI agents to offload mechanical, high-token work to local Ollama models through MCP, with role-based model discovery, batch processing, and file-aware inputs.4MIT
- AlicenseAqualityFmaintenanceLets MCP clients delegate private or bulk text tasks to a local OpenAI-compatible LLM while keeping data on the machine.11MIT
- AlicenseNot gradedqualityBmaintenanceEnables a cloud coding agent to delegate a focused coding task to a local Ollama or OpenAI-compatible model through a bounded workspace, file allowlist, and required external checks. Changes are applied only after verification against the declared scope, with failed post-apply checks rolled back and the rollback itself confirmed.71 PyPI11MIT