
Sezzlee Local LLM
io.github.sezzlee由 GitHub 帳號 sezzlee 發布v0.1.3更新於 Oct 24, 2026
Let a planning agent hand bounded language work to a local Ollama model.
概覽
讓程式開發智能體把有界的語言任務(分類、擷取、摘要、轉換、CSV 標記)交給本機 Ollama 模型處理,而不佔用自身上下文。
- 可以做什麼
- 在本機模型上執行單一有界語言任務:classify、extract、summarize、transform 或 free,可依指定 schema 回傳 JSON
- 為該任務讀取文字或最多 8 個工作區檔案,過長輸入會分塊合併而非截斷
- 以 2–50 個標籤為 CSV 的每一列標記,把新的含標籤 CSV 寫入輸出目錄,並回傳各標籤計數與範例列
- 檢查本機模型是否可連線且已載入、上下文視窗、單次呼叫輸入預算與排隊數量
- 適用情境
- 適合讓規劃型智能體把長文字或非結構化文字工作(文件摘要、紀錄擷取、列分類)外包給本機模型,使大量內容不進入智能體自身上下文。對於模式清楚的小型表格任務效益不大,README 的實測顯示智能體獨自處理更快。
- 執行需求
- 透過 npx 以 stdio 在本機執行,需要 Node.js,以及可連線的 Ollama 主機(預設 為必填且無預設值;SEZZLEE_LLM_ROOT、SEZZLEE_LLM_OUTPUT_DIR、SEZZLEE_LLM_NUM_CTX、SEZZLEE_LLM_KEEP_ALIVE、SEZZLEE_LLM_TIMEOUT_MS 為選用。僅限桌面端。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Sezzlee Local LLM,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
@sezzlee/llm-mcp
MCP server that lets a planning agent (Codex, Claude Code, Cursor) hand off bounded language work to a local model. It builds on @sezzlee/mcp-core and names no other @sezzlee/* package.
Quick start
In Codex, the same block goes under mcp_servers.local. If it runs with approval_policy = "never", default_tools_approval_mode = "auto" is also required, or Codex refuses the call.
Tools
Three tools. Two are read-only; local_map only adds new files to the server's own output directory.
Configuration
Only the model name is required. Parsing is fatal, reaching the host is not: the server still starts and answers tools/list with the host down, and local_status reports reachable: false. The model is warmed up right after the server starts serving.
Set SEZZLEE_LLM_NUM_CTX to what the GPU actually delivers. Ollama does not refuse an oversized input — it silently drops the head — and the input budget is derived from this value.
Limits
Rules
- Three lint-enforced layers, three root entrypoints.
srcsplits intoplatform/(the mcp-core and Node boundary),backend/(the model host), andtools/(the MCP surface).tools/sees the host only throughbackend/port.ts; the concrete backend is wired incli.ts. - Only
src/backend/ollama.tsreaches the network, and only through the globalfetch. That global and thenode:http/net/tlsfamily are lint-banned everywhere else. process.envis read only incli.ts, each variable accessed by name.- File paths are resolved against the workspace. The requested path and its
realpathare checked separately, so a symlink pointing outside the workspace is refused too.readTextaccepts only aWorkspacePath-branded path that has passed both checks. In error envelopes, the workspace's absolute path appears as.. - The server counts tokens, not the model. An input over
num_ctx × 0.45never reaches the host; an input that could not fit under any circumstances is refused before it is even read. The answer is capped atnum_ctx × 0.4. - Only
src/platform/workspace.tstouches the filesystem, lint-enforced. The single writer iscreateOutput: it re-checks the output directory'srealpath, the server itself picks the file name, lowers it to a safe alphabet and fixes the extension to.csv, and opens itwx— so it never overwrites an existing file or a symlink, and nothing is ever deleted (mcp-core). local_mapcarries the row number to the model and back. An id-less format lost the row order. A skipped row is asked again once; if it is still missing, it is left unlabeled and counted — never guessed.- A chunked input is not truncated either. Chunks split on paragraph, then line, boundaries; each chunk yields notes, the notes are merged and the instruction applied one last time. If the merged notes still do not fit the budget, the merge round repeats (up to 3); if that still fails, the call is refused as
input_too_large. - One request per host at a time.
createSerialBackendqueues requests: the GPU does not run them in parallel, while Codex fires calls concurrently.probebypasses the queue. - A new backend kind is just another implementation of the
Backendinterface. The rest of the server does not change.
Design notes
The measurements below are what the rules above are built on.
Why an MCP server instead of pointing Codex at Ollama directly
Four ways of getting Codex to a local model were tried; only the MCP server worked.
The server's working directory is Codex's workspace: every file argument the tools accept is resolved against it, and a path that resolves outside it is refused.
Model choice
gpt-oss:20b was measured scoring 0/100 on the id-bearing JSON schema local_map and structured local_task calls depend on — the model could not hold the schema. A qwen3 model (qwen3:8b in the examples above) is what the measurements in this repository were run with; SEZZLEE_LLM_MODEL has no built-in default, so it must be set explicitly.
Codex alone on tabular data
On a 400-row labelling task with clear cues, Codex working alone was as accurate as delegating (14/14 correct) and about 3.5x faster: 48 s versus 166 s through local_map. This is why DELEGATION_INSTRUCTIONS (products/chat/api/src/codex/delegation-instructions.ts) allows Codex to write a script instead of delegating when the data is tabular with clear patterns — delegating only pays off on long or unstructured text, not on rows a script can already parse.
Rejected alternatives
- The name
ollama-mcp. Too narrow once the backend became pluggable;llm-mcpfollows the repo's convention of naming a server after the resource behind it, not the current backend. - A private worker inside a consumer product. The server has nothing chat-specific in it — tools take a file path and an instruction, schemas are plain JSON Schema on the MCP surface. Keeping it inside one product would close it to outside contribution and force reinventing the payload budget that
@sezzlee/mcp-corealready provides. - Using an existing open-source repo. Most of the ones reviewed are Python, and one carries a license that forbids modification; none of them know Codex's approval mode, its workspace boundary, or the payload budget. Ideas were borrowed where they held up: per-kind ready-made prompts (from
ollama-handoff), file-path-taking tools and failover (fromLocalTokens), and "the worker produces bounded output, the strong side accepts it" (from Shahriar/ollama-mcp-server). - One tool per job kind. Every extra tool schema is token cost on every Codex turn; one
local_tasktool with akindenum covers the same ground for less. - Raising concurrency instead of queueing. Four parallel requests to one GPU were only 1.1x faster than four sequential ones — the GPU does not run requests in parallel, so a queue is the only thing that keeps a call inside its own timeout.
Out of scope (deliberately)
- An agent loop on the local model. A reviewed repo's small model, run through a full agent harness, took 5–7 minutes on a simple task and once reported having done work it had not done. Agent work already has Codex's own
spawn_agent. - Embedding.
bge-m3is available on the host but unused; add it if a search need appears. - Reading
.xlsxdirectly. v1 reads CSV and plain text only. An.xlsxinput goes through@sezzlee/excel-mcpfrom the calling side; teaching this server the format directly is out of scope for now.
Measured runs
All Codex runs below used gpt-5.6-luna at low reasoning effort, against Ollama 0.34.2 with num_ctx 16,384. "Cache-free" is input_tokens − cached_input_tokens.
Development
No local model is needed for this — fetch is faked.
test/live.spec.ts runs against a real Ollama instance:
來源:packages/servers/llm-mcp/README.md,提交 2614421
工具
0版本歷史
1- v0.1.3最新Oct 11, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分