Skip to main content
Glama

ollama-mcp

Delegieren Sie Aufgaben von einer Anthropic-unterstützten Claude Code-Sitzung an Ollama-unterstützte Claude Code-Sitzungen – ohne dass die beiden jemals Umgebungsvariablen teilen.

ollama launch claude --model <model> funktioniert, indem es ANTHROPIC_*-Variablen in Ihre Shell exportiert. Deshalb benötigt es normalerweise ein eigenes Terminal: Die Variablen sind prozessweit, daher ist eine Shell entweder „Anthropic“ oder „Ollama“, niemals beide.

Dieser MCP-Server startet jede delegierte Sitzung als Kindprozess mit einer explizit konstruierten Umgebung. Ihre Opus-Sitzung behält ihre eigenen Anmeldeinformationen und Modelleinstellungen; der Delegat erhält die von Ollama. Sie laufen nebeneinander im selben Terminal.

┌────────────────────────────┐
│  Claude Code (Opus)        │   your session, Anthropic credentials
│                            │
│   └─ mcp: ollama-mcp ──────┼──▶ spawn: claude -p   (fresh env)
└────────────────────────────┘         ANTHROPIC_BASE_URL=127.0.0.1:11434
                                       ANTHROPIC_AUTH_TOKEN=ollama
                                       → qwen3.5:397b-cloud

Inhaltsverzeichnis


Related MCP server: opencode-bridge

Wie es funktioniert

Der Server von Ollama stellt einen Anthropic-kompatiblen POST /v1/messages-Endpunkt bereit, sodass Claude Code unverändert damit kommunizieren kann, wenn es auf die richtige Basis-URL ausgerichtet ist. Jede delegierte Aufgabe wird als claude -p in einem eigenen Prozess ausgeführt mit:

ANTHROPIC_BASE_URL=http://127.0.0.1:11434
ANTHROPIC_AUTH_TOKEN=ollama
ANTHROPIC_DEFAULT_OPUS_MODEL=<model>
ANTHROPIC_DEFAULT_SONNET_MODEL=<model>
ANTHROPIC_DEFAULT_HAIKU_MODEL=<model>
CLAUDE_CODE_SUBAGENT_MODEL=<model>

Alle drei Modellplätze zeigen auf dasselbe Ollama-Modell, sodass Aliase (opus, sonnet, haiku) und alle innerhalb des Delegaten erzeugten Subagenten darauf aufgelöst werden, anstatt stillschweigend auf einen Anthropic-Standard zurückzufallen.

Die Kind-Umgebung wird aus einer kleinen, plattformspezifischen Whitelist aufgebaut. Alles, was auf ANTHROPIC_*, CLAUDE_*, AWS_*, GOOGLE_*, AZURE_*, OPENAI_*, BEDROCK_*, VERTEX_* passt, wird vor dem Anwenden der Ollama-Werte entfernt, sodass ein versehentlicher ANTHROPIC_API_KEY in Ihrer Shell nicht in einen delegierten Lauf durchsickern oder ihn belasten kann.

Delegaten starten auch mit --strict-mcp-config und ohne MCP-Konfiguration, was ihren Start beschleunigt und verhindert, dass sie rekursiv diesen Server aufrufen.


Voraussetzungen

Anforderung

Anmerkungen

Node.js 20+

node --version. Erstellt und getestet auf 24.

Ollama

ollama.com/download. Muss laufen: ollama serve (die Desktop-App erledigt das für Sie).

Claude Code CLI

claude.com/code. claude --version.

Mindestens ein Modell

ollama pull qwen3.5:397b-cloud

Ein Ollama-Konto

Nur für :cloud-Modelle – ollama signin. Lokale Modelle benötigen kein Konto.

Überprüfen Sie die Komponenten vor der Installation:

node --version                              # v20 or newer
claude --version
curl -s http://127.0.0.1:11434/api/version  # {"version":"..."}
ollama list                                 # at least one model

Cloud- vs. lokale Modelle. Modelle mit dem Tag :cloud laufen auf der Infrastruktur von Ollama und erfordern ollama signin; sie sind weitaus leistungsfähiger als das, was die meisten Laptops in den Arbeitsspeicher fassen, was sie zur praktischen Wahl für die Delegation macht. Lokale Modelle funktionieren ebenfalls und verlassen niemals Ihren Rechner.


Installation

Von npm (empfohlen)

Kein Klonen oder Bauen erforderlich – npx holt es bei Bedarf:

claude mcp add ollama --scope user -- npx -y claude-ollama-delegate-mcp

Oder installieren Sie es global, was auch das Einstellungs-CLI in Ihren PATH bringt:

npm install -g claude-ollama-delegate-mcp
claude mcp add ollama --scope user -- claude-ollama-delegate-mcp

Aus dem Quellcode

git clone https://github.com/histonedev/claude-ollama-delegate-mcp.git
cd claude-ollama-delegate-mcp
npm install          # builds automatically via the prepare script
claude mcp add ollama --scope user -- node "$(pwd)/dist/index.js"

Führen Sie das Einstellungs-CLI als node dist/cli.js … aus, oder npm link, um ollama-mcp-config in Ihren PATH zu bekommen.

Bereiche

--scope user macht es in jedem Projekt verfügbar; --scope project schreibt in .mcp.json im aktuellen Repository und teilt es mit Mitarbeitern; --scope local behält es auf diesem Rechner und Projekt.

Bestätigung

claude mcp list        # ollama: ... - ✔ Connected

Dann starten Sie Ihre Claude Code-Sitzung neu – die Werkzeugliste wird beim Start gelesen.

Konfiguration

Einstellungen werden aus vier Ebenen aufgelöst, wobei die spätere die frühere überschreibt:

  1. integrierte Standardwerte

  2. Benutzerkonfiguration – ~/.ollama-mcp/config.json (Pfad überschreiben mit $OLLAMA_MCP_CONFIG)

  3. Projektkonfiguration – ./ollama-mcp.config.json im Arbeitsverzeichnis des Servers

  4. Umgebungsvariablen

{
  "delegationMode": "ondemand",
  "allowedModels": ["qwen3.5:397b-cloud", "gemma4:31b-cloud"],
  "defaultModel": "qwen3.5:397b-cloud",
  "defaultPermissionMode": "auto",
  "baseUrl": "http://127.0.0.1:11434",
  "claudeBin": "claude",
  "stateDir": "~/.ollama-mcp/jobs",
  "jobTimeoutMs": 1800000,
  "maxInlineChars": 60000
}

Einstellung

Umgebungsvariable

Standard

Bedeutung

delegationMode

OLLAMA_MCP_DELEGATION_MODE

ondemand

Wie eifrig die Delegation genutzt wird – siehe unten

allowedModels

OLLAMA_MCP_ALLOWED_MODELS (kommasepariert)

[] (alle)

Modelle, die die Delegation verwenden darf

defaultModel

OLLAMA_MCP_DEFAULT_MODEL

erstes erlaubtes Cloud-Modell

Modell, wenn ein Aufruf keins angibt

defaultPermissionMode

OLLAMA_MCP_PERMISSION_MODE

auto

Berechtigungsmodus für Delegaten

baseUrl

OLLAMA_MCP_BASE_URL oder OLLAMA_HOST

http://127.0.0.1:11434

Ollama-Endpunkt

claudeBin

OLLAMA_MCP_CLAUDE_BIN

claude

Pfad zum Claude Code CLI

stateDir

OLLAMA_MCP_STATE_DIR

~/.ollama-mcp/jobs

Eingabeaufforderungen, Transkripte, Ergebnisse

jobTimeoutMs

OLLAMA_MCP_JOB_TIMEOUT_MS

1800000

Harte Beendigung für einen Durchlauf

maxInlineChars

OLLAMA_MCP_MAX_INLINE_CHARS

60000

Ausgabe darüber wird abgeschnitten; vollständiger Text auf der Festplatte

Einstellungen ändern

Einstellungen werden von einem Terminal aus geändert, niemals durch das Modell:

ollama-mcp-config                              # show current settings + active layers
ollama-mcp-config --mode auto                  # off | ondemand | auto
ollama-mcp-config --allow qwen3.5:397b-cloud   # or: --allow all
ollama-mcp-config --default-model qwen3.5:397b-cloud
ollama-mcp-config --permission-mode acceptEdits
ollama-mcp-config --scope project              # write ./ollama-mcp.config.json

Dann starten Sie Ihre Claude Code-Sitzung neu, damit der Server seine Konfiguration neu einliest.

Es gibt bewusst kein MCP-Werkzeug dafür. Siehe Sicherheitsmodell.

Erlaubte Modelle

allowedModels: [] (der Standard) erlaubt jedes Modell, das der Server anbietet. Mit einer nicht leeren Liste:

  • delegate_start lehnt ein Modell außerhalb der Liste ab, wobei die erlaubte Menge genannt wird, anstatt stillschweigend ein anderes zu ersetzen

  • ollama_models markiert ausgeschlossene Modelle als BLOCKED by allowedModels

  • die erlaubte Liste ist in die Beschreibung des Werkzeugs delegate_start eingebettet, sodass der Orchestrator das Menü ohne zusätzlichen Aufruf kennt

  • das CLI lehnt eine Änderung ab, die defaultModel außerhalb der neuen Liste belassen würde


Delegationsmodi

Dies steuert, wie eifrig der Orchestrator zur Delegation greift, indem die Werkzeugbeschreibungen umgeschrieben werden, die das Modell tatsächlich liest. Eine Änderung erfordert einen Sitzungsneustart, wie beabsichtigt.

Modus

Effekt

off

Die delegate_*-Werkzeuge sind vollständig ausgeblendet. ollama_models bleibt erhalten, sodass das Modell weiterhin die Einrichtung melden kann.

ondemand (Standard)

Delegieren Sie nur, wenn Sie explizit darum bitten – „delegiere dies“, „verwende ollama“, „frage qwen“. Andernfalls erledigt der Orchestrator die Arbeit selbst und erwähnt die Werkzeuge nicht.

auto

Der Orchestrator entscheidet selbst, anhand von Kriterien, die in die Beschreibung eingebaut sind.

Im Modus auto wird dem Orchestrator in der Beschreibung mitgeteilt, dass er Arbeiten delegieren soll, die in sich abgeschlossen, kostengünstig verifizierbar und kontexthungrig sind – Bulk-Dateizusammenfassungen, erste Durchsuchen, mechanische Refactorings, Boilerplate- und Testgerüste, Log- oder Diff-Triage – während Architekturentscheidungen, sicherheitskritische Änderungen, mehrdeutige Anforderungen und die endgültige Überprüfung für sich selbst behalten werden. Er wird auch angewiesen, delegierte Behauptungen zu überprüfen, aus dem Grund in Bedienung.


Werkzeugreferenz

Werkzeug

Zweck

ollama_models

Listet bedienbare Modelle und meldet aktuelle Einstellungen (schreibgeschützt)

delegate_start

Startet eine Aufgabe; gibt sofort eine job_id zurück

delegate_followup

Sendet eine weitere Nachricht an dieselbe Sitzung

delegate_status

Fragt den Status plus einen Auszug der Werkzeugaufrufe des Delegaten ab

delegate_result

Sammelt die endgültige Ausgabe

delegate_cancel

Beendet einen laufenden Delegaten und alles, was er gestartet hat

delegate_list

Listet Jobs, gruppiert nach Gespräch

delegate_start

Parameter

Typ

Anmerkungen

prompt

string

Die Aufgabe. Schließt sich gegenseitig mit prompt_file aus.

prompt_file

string

Pfad zu einer Datei, die die Eingabeaufforderung enthält. Bevorzugt bei langen.

model

string

Muss in der erlaubten Liste sein. Standardmäßig defaultModel.

cwd

string

Arbeitsverzeichnis für den Delegaten. Standardmäßig das cwd des Servers.

permission_mode

enum

auto, acceptEdits, bypassPermissions, manual, dontAsk, plan

allowed_tools

string[]

z.B. ["Read","Grep","Bash(git *)"]

disallowed_tools

string[]

z.B. ["Write","Edit"]

append_system_prompt

string

Zusätzliche Anweisungen für den Delegaten

max_turns

number

Begrenzt die agentischen Züge des Delegaten

add_dirs

string[]

Zusätzliche zugängliche Verzeichnisse

wait_seconds

number

Blockiert bis zu N Sekunden (0–600). Standard 0 = sofort zurückgeben.

delegate_followup akzeptiert job_id oder session_id, plus dasselbe Paar aus prompt/prompt_file und optionalem permission_mode, max_turns, wait_seconds.


Bedienung

Standardmäßig asynchron

delegate_start gibt eine job_id in Millisekunden zurück; der Delegat läuft im Hintergrund weiter. Dadurch wird verhindert, dass eine lange Aufgabe Ihre Sitzung blockiert oder einen MCP-Client-Timeout auslöst.

delegate_start({ prompt: "Audit src/ for unused exports" })
  → job_id A, session_id S, turn 1, state: running

delegate_status({ job_id: "A" })
  → recent activity:
      [tool] Grep: export
      [tool] Read: /repo/src/index.ts

delegate_result({ job_id: "A" })
  → the final text

Übergeben Sie wait_seconds bei einem dieser Aufrufe, um stattdessen zu blockieren – nützlich für kurze Aufgaben, bei denen ein Roundtrip des Abfragens nicht lohnt.

Zwei-Wege-Gespräche

Jeder Job trägt eine session_id. Die Übergabe seiner job_id an delegate_followup setzt die Sitzung mit vollständigem Verlauf fort; die session_id bleibt über Züge hinweg stabil, während jeder Zug eine neue job_id erhält.

delegate_start({ prompt: "Summarise the auth flow in this repo" })
  → job A, session S, turn 1
delegate_followup({ job_id: "A", prompt: "Now list every place it can fail" })
  → job B, session S, turn 2   (delegate still remembers turn 1)

Das Nachfassen ist viel billiger als ein Neustart, wenn der Delegat den relevanten Kontext bereits geladen hat.

Lange Eingabeaufforderungen

Jeder Prompt-Parameter hat ein prompt_file-Gegenstück. Intern wird der Prompt immer auf die Festplatte geschrieben und dem CLI über stdin zugeführt — niemals als argv-Eintrag und niemals durch eine Shell. Backticks, $(...), Anführungszeichen, Zeilenumbrüche und Glob-Zeichen werden unverändert durchgereicht, und es gibt keine argv-Längenbeschränkung.

delegate_start({ prompt_file: "/tmp/refactor-brief.md" })

Berechtigungen

Delegates verwenden standardmäßig defaultPermissionMode (auto). Schränken Sie einen bestimmten Aufruf ein:

// read-only review
delegate_start({ prompt: "...", disallowed_tools: ["Write", "Edit", "NotebookEdit"] })

// tightly scoped
delegate_start({ prompt: "...", allowed_tools: ["Read", "Grep", "Glob"] })

Vertrauen in delegierte Ausgabe

Jedes abgeschlossene Ergebnis meldet seine Tool-Call-Anzahl. Schwächere Modelle antworten manchmal mit Überzeugung, ohne etwas auszuführen — während der Entwicklung behauptete ein Modell, eine Umgebungsvariable sei nicht gesetzt, ohne jemals Bash aufzurufen; nach einer Aufforderung führte es den Befehl aus und meldete den korrekten Wert.

Ein Ergebnis mit tool calls: 0 wird daher als unverifiziert gekennzeichnet:

tool calls: 0   <- answered without using any tools; treat factual claims as unverified

delegate_status zeigt den tatsächlichen Ablauf. Eine rein konversationelle Nachfrage hat legitim null — das Flag bedeutet „nichts untermauert dies“, nicht „etwas ist kaputt“.

Abbrechen

delegate_cancel({ job_id: "A" })

Beendet den Delegate und alles, was er gestartet hat, sodass ein Delegate, der mitten in einem langen Build steckt, den Build nicht weiterlaufen lässt.


Job-Artefakte

Jeder Job schreibt nach ~/.ollama-mcp/jobs/<job_id>/:

Datei

Inhalt

prompt.txt

Genau das, was gesendet wurde

stream.jsonl

Vollständiges stream-json-Transkript, einschließlich jedes Tool-Calls

result.json

Metadaten: Status, Modell, Token, Zeitmessungen, Exit-Code

result.txt

Endgültiger Ausgabetext

Ergebnisse, die länger als maxInlineChars sind, werden in der Tool-Antwort gekürzt, und der vollständige Text wird aus result.txt gelesen. Es wird nichts automatisch gelöscht — löschen Sie das Verzeichnis, wann immer Sie möchten.


Fehlerbehebung

Cannot reach Ollama at http://127.0.0.1:11434 Ollama läuft nicht. Starten Sie ollama serve oder öffnen Sie die Desktop-App. Wenn es an einem anderen Ort horcht, setzen Sie OLLAMA_MCP_BASE_URL.

No models available from Ollama ollama pull qwen3.5:397b-cloud und ollama signin für :cloud-Modelle.

<model> was retired at … (HTTP 410) Ollama hat dieses Cloud-Modell entfernt. ollama list zeigt weiterhin lokal zwischengespeicherte Manifeste für entfernte Modelle an — prüfen Sie, was tatsächlich funktioniert, und aktualisieren Sie defaultModel.

Model "x" is not in the allowed list Funktioniert wie vorgesehen. ollama-mcp-config --allow <models>, dann neu starten.

Tools erscheinen nicht in Claude Code Die Tool-Liste wird beim Start der Sitzung gelesen. Starten Sie neu oder prüfen Sie mit claude mcp list.

Delegate schlägt sofort mit einem Startfehler fehl Das CLI wurde nicht gefunden. Setzen Sie OLLAMA_MCP_CLAUDE_BIN auf den absoluten Pfad von claude.

Alles ist langsam Cloud-Modelle zahlen einen Roundtrip pro Zug, und Claude Code sendet bei jeder Anfrage einen großen System-Prompt (~25k Token). Verwenden Sie max_turns, um agentische Schleifen zu begrenzen, und allowed_tools, um den Delegate daran zu hindern, mehr zu erkunden, als nötig.


Plattformunterstützung

Plattform

Status

macOS

End-to-End getestet

Linux

Unterstützt; gleicher POSIX-Codepfad wie macOS

Windows

Vom Design her unterstützt, aber noch nicht auf echter Hardware getestet

Plattformunterschiede sind in src/platform.ts isoliert:

Binärauflösung. Unter POSIX durchsucht spawn den PATH. Unter Windows liefert eine native Installation claude.exe, während eine npm-Installation claude.cmd liefert, das CreateProcess nicht direkt ausführen kann — daher durchläuft der Server PATH × PATHEXT, bevorzugt .exe, und fällt darauf zurück, einen .cmd-Shim durch cmd.exe zu leiten.

Argument-Escaping. Dieser Fallback wendet zwei Ebenen an: MSVCRT-argv-Zitierung, dann ein Caret-Escaping von cmd's eigenen Metazeichen (& | < > ^ " ( ) % !). Das Überspringen der zweiten Ebene ist das klassische .cmd-Befehlsinjektionsloch. Prompts berühren diesen Pfad nie — sie reisen über stdin. Eine Einschränkung: Ein mehrzeiliges append_system_prompt kann keine cmd.exe-Befehlszeile überqueren, daher gibt der Server einen klaren Fehler aus, der auf OLLAMA_MCP_CLAUDE_BIN verweist, anstatt es stillschweigend zu verstümmeln.

Umgebungs-Allowlist. Windows bewahrt eine viel größere Menge als POSIX. SystemRoot und windir sind nicht optional — entfernt man sie, schlägt Winsock fehl zu initialisieren, sodass das Kind keinen Socket öffnen kann, nicht einmal zu localhost. Namen werden case-insensitiv abgeglichen, aber mit der ursprünglichen Schreibweise des Elternteils kopiert.

Abbruch. POSIX-Kinder werden detached als Prozessgruppenführer erzeugt und mit process.kill(-pid) abgebrochen; Windows verwendet taskkill /T /F. In beiden Fällen sterben die eigenen Unterprozesse des Delegaten mit ihm. Der Server beendet auch laufende Delegaten, wenn er heruntergefahren wird.


Sicherheitsmodell

Credential-Isolation ist der Punkt. Die Kind-Umgebung wird von Grund auf neu erstellt und nicht vererbt, und Anbieter-Variablen werden entfernt, bevor die Ollama-Werte angewendet werden. Dies wird durch test/env-unit.mjs abgedeckt, und test/e2e.mjs vergiftet das Elternteil mit einem gefälschten ANTHROPIC_API_KEY und stellt sicher, dass es den Delegate nie erreicht.

Delegierungsrichtlinie ist nicht modell-schreibbar. Es gibt kein MCP-Tool, um delegationMode oder allowedModels zu ändern. Eine frühere Version hatte eines, was ein Fehler war: Ein Modell, das ondemand unpraktisch findet, könnte sich selbst in einem einzigen Aufruf auf auto umstellen und dann frei delegieren. Einstellungen werden jetzt einmal beim Start geladen, werden zur Laufzeit nie verändert, und die Tool-Beschreibungen geben an, dass die Richtlinie nicht vom Modell geändert werden darf.

Dies ist eine Leitplanke, keine Sicherheitsgrenze. Ein Agent mit Shell-Zugriff kann die Konfigurationsdatei immer noch bearbeiten. Was Ihnen das Entfernen des Tools bringt, ist, dass eine solche Änderung eine sichtbare Dateibearbeitung ist, die erst beim nächsten Neustart wirksam wird, und nicht ein einzelner stiller Tool-Call mitten in der Aufgabe. Um es wasserdicht zu machen, fixieren Sie die Werte über --env bei der MCP-Registrierung, was die Konfigurationsdateien überschreibt:

claude mcp add ollama --scope user \
  --env OLLAMA_MCP_DELEGATION_MODE=ondemand \
  --env OLLAMA_MCP_ALLOWED_MODELS=qwen3.5:397b-cloud \
  -- node /path/to/claude-ollama-delegate-mcp/dist/index.js

Delegates erben Ihr Dateisystem. Sie laufen als Ihr Benutzer in dem cwd, das Sie ihnen geben, mit defaultPermissionMode. Behandeln Sie eine delegierte Sitzung wie jede andere Claude Code-Sitzung — verwenden Sie disallowed_tools oder einen schreibgeschützten Berechtigungsmodus, wenn Sie einem Modell, dem Sie weniger vertrauen, Arbeit übergeben.


Entwicklung

npm install        # installs and builds
npm run build      # tsc
npm run dev        # tsc --watch

Tests

node test/env-unit.mjs       # env isolation: no secret leaks, platform vars present
node test/quoting.mjs        # Windows argv/cmd escaping, incl. an injection probe
node test/killtree-unit.mjs  # process-tree termination
node test/e2e.mjs            # full MCP round trip           (needs Ollama running)
node test/async.mjs          # async polling, prompt_file, cancel  (needs Ollama)
CFG_PATH=/tmp/c.json CFG_CWD=/tmp node test/readonly.mjs   # config is read-only to the model

npm test führt die drei aus, die kein Netzwerk benötigen.

Eine Version veröffentlichen

npm login                       # interactive, once per machine
npm version patch               # or minor / major -- tags and bumps
npm publish                     # prepare script builds first
git push --follow-tags

Das Paket heißt claude-ollama-delegate-mcp und liefert nur dist/, README.md und LICENSE aus. publishConfig.access ist public, und prepare führt tsc vor dem Packen aus, sodass ein veraltetes dist/ nie veröffentlicht werden kann. Zeigen Sie das Tarball mit npm pack --dry-run vor dem Versand an.

Aufbau

Datei

Verantwortung

src/index.ts

MCP-Server, Tool-Registrierung und Handler

src/settings.ts

Mehrschichtiges Laden und Validieren von Konfigurationen

src/config.ts

Singleton für beim Start aufgelöste Einstellungen

src/descriptions.ts

Modusabhängige Tool-Beschreibungen

src/env.ts

Aufbau der Kind-Umgebung und die Blockliste der Anbieter-Variablen

src/platform.ts

Windows/POSIX-Spawn, Argument-Escaping, Prozessbaum-Beenden

src/jobs.ts

Job-Lebenszyklus, stream-json-Parsing, Abbruch

src/models.ts

Modell-Erkennung und Durchsetzung der Allowlist

src/cli.ts

ollama-mcp-config-Einstellungs-CLI


Lizenz

MIT — siehe LICENSE.

Available Tools

7 tools
delegate_cancelCancel a delegated taskA

Terminate a running delegated Ollama session and everything it started.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id to cancel.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add one key behavioral trait: that cancellation terminates 'everything it started,' indicating cascading termination. However, it omits details like whether the operation is destructive (assumed but not stated), whether it requires any permissions, or what the return behavior is (e.g., blocking, asynchronous).

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 of 9 words, with the core verb 'Terminate' front-loaded. Every word adds value, and there is no fluff or redundancy. It is as concise as possible while still conveying the key behavioral nuance of cascade cancellation.

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?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is minimally adequate. It specifies what it terminates and the scope, but does not cover important usage context such as error cases (e.g., cancelling a non-existent session), whether it is safe for any session, or what the result looks like. Some additional detail would improve completeness.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter 'job_id' with a clear description. The tool description adds no further semantic detail beyond what the schema already provides, so the baseline of 3 is appropriate.

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 'terminate a running delegated Ollama session and everything it started,' which specifies the action (terminate), the resource (delegated Ollama session), and an important scope ('everything it started'). This distinguishes it from sibling tools like delegate_start and delegate_status.

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 implicitly indicates use for canceling a running session but provides no explicit guidance on when to use versus alternatives (e.g., delegate_status to check status first) or when not to use (e.g., if the session is already completed). It lacks any before/after context or exclusion conditions.

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

delegate_followupContinue a delegated conversationA

Send another message to an existing delegated session, resuming its full conversation history. Identify it by job_id (any turn) or session_id. Returns a new job_id for this turn while keeping the same session_id, so you can go back and forth with the Ollama model.

Only continue conversations the user asked you to start.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoA job_id from any earlier turn of the conversation.
promptNoThe next message. Use prompt_file for long prompts.
max_turnsNoCap the delegate's agentic turns for this turn.
session_idNoThe Claude Code session id, as an alternative to job_id.
prompt_fileNoPath to a file holding the next message.
wait_secondsNoBlock up to this many seconds before returning.
permission_modeNoOverride the permission mode for this turn.

TDQS

A4.4/5.0
Behavior4/5

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

The description explains that a new job_id is returned for this turn while the session_id remains the same, enabling back-and-forth interaction. Without annotations, the description carries the burden; it could mention any blocking behavior or side effects, but the transparency is strong.

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 concise (three sentences), front-loaded with the core action, and every sentence adds value. No wasted words.

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 7 parameters, full schema coverage, no output schema, and no annotations, the description explains the essential behavior and identification methods. It could be more complete by noting the default behavior for optional parameters like max_turns or wait_seconds, but is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description mentions job_id and session_id as alternatives for identification but does not add new semantic meaning beyond the schema for other parameters. It doesn't go beyond what the schema already provides.

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 tool sends another message to an existing delegated session, resuming conversation history. It distinguishes itself from siblings like delegate_start by focusing on continuation, and the title reinforces the purpose.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (continue a delegated conversation) and includes exclusion guidance: 'Only continue conversations the user asked you to start.' This clearly differentiates from delegate_start and sets a boundary.

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

delegate_listList delegated tasksC

Show delegated jobs from this server's lifetime, newest first, grouped by conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum jobs to list. Default 20.
stateNoFilter by state.

TDQS

C2.9/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 full burden. It discloses ordering and grouping, but does not state whether the tool is read-only, has performance implications, or returns partial results. The lack of mutation or safety context is a gap.

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 concise sentence that includes key details (ordering, grouping). No wasted words, though it could be slightly more informative without becoming verbose.

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?

The tool lists delegated jobs from a server's lifetime with no output schema. The description is sparse: it does not explain what fields are returned, pagination behavior, or how grouping works. More context is needed for an agent to use this tool effectively.

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 coverage is 100% and the schema descriptions are clear for both parameters, so the baseline is 3. However, the description adds no extra meaning beyond what the schema already provides (e.g., does not explain what 'state' values mean in context, how limit interacts with grouping, or 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 lists delegated jobs, specifying order (newest first) and grouping (by conversation). It distinguishes from siblings like delegate_status or delegate_result, but could be more explicit about what 'delegated jobs' refers to in context.

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 on when to use this tool versus siblings such as delegate_status or delegate_cancel. The description does not mention prerequisites, typical use cases, or when not to use it, leaving the agent to infer based on name alone.

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

delegate_resultGet a delegated task's outputA

Return the final text produced by a delegated Ollama session, plus its session_id for follow-ups. Blocks until the job finishes if you pass wait_seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id to collect.
wait_secondsNoBlock up to this many seconds for the job to finish.

TDQS

A4.4/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It clearly states that the tool blocks if wait_seconds is provided, and returns both the text and session_id. It does not discuss potential side effects, rate limits, or what happens if the job fails, but the blocking behavior is the key transparent element.

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 two sentences long, front-loaded with the primary purpose, and every sentence adds value. There is no wasted text.

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?

The tool has only two parameters, no output schema, and no nested objects, so its simplicity reduces the required completeness. The description adequately covers the inputs and the blocking behavior. It could mention what happens if the job hasn't started yet or if it fails, but given the low complexity, this is sufficient.

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?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that 'job_id' is the collected delegation identifier and that 'wait_seconds' controls blocking up to a maximum. This clarifies the semantics beyond the schema's minimal descriptions.

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 uses a specific verb ('Return') and resource ('final text...plus session_id'), clarifying the precise output. It distinguishes itself from sibling tools like 'delegate_status' (which likely returns status only) and 'delegate_start' (which starts work).

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

Usage Guidelines4/5

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

The description implies when to use this tool (after a delegation is created, to get final output) and mentions the optional wait_seconds for blocking behavior. However, it does not explicitly contrast with 'delegate_followup' or 'delegate_status'—though the context signals suggest those exist.

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

delegate_startDelegate a task to an Ollama modelA

Start a headless Claude Code session backed by an Ollama model and return immediately with a job_id. It runs in its own process with its own environment, so your Anthropic credentials and model settings are untouched. Poll with delegate_status, collect with delegate_result, and continue the conversation with delegate_followup. Pass prompt_file for long prompts.

WHEN TO USE — ON EXPLICIT REQUEST ONLY. Delegation mode is "ondemand". Call this only when the user actually asks for it: "delegate this", "use ollama", "ask qwen", "run this on a local model", or when they name an Ollama model. If the user has not asked for delegation, do the work yourself and do not offer this tool unprompted.

This policy is set by the user and is not yours to change. If it is getting in the way, say so and let the user run ollama-mcp-config; do not edit config files to widen it.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the delegated session. Defaults to the server's cwd.
modelNoOllama model id. Must be in the allowed list. Defaults to the configured default.
promptNoThe task for the Ollama-backed session. Use prompt_file for long prompts.
add_dirsNoAdditional directories the delegate may access.
max_turnsNoCap the delegate's agentic turns.
prompt_fileNoPath to a file holding the prompt. Preferred for long or special-character-heavy prompts.
wait_secondsNoBlock up to this many seconds for completion. Default 0.
allowed_toolsNoTool allowlist, e.g. ['Read','Grep','Bash(git *)'].
permission_modeNoPermission mode for the delegate. Defaults to the configured default.
disallowed_toolsNoTool denylist, e.g. ['Write','Edit'].
append_system_promptNoExtra instructions appended to the delegate's system prompt.

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It discloses key behaviors: the tool runs in its own process with its own environment, so the user's Anthropic credentials and model settings are untouched. It also mentions that delegation mode is 'ondemand.' However, it does not detail what happens upon failure (e.g., if the Ollama model is unavailable) or the format of the returned job_id, leaving minor gaps.

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 structured with a clear first paragraph about the tool's function and a separate 'WHEN TO USE' section. It is front-loaded with the core purpose. However, the second paragraph could be slightly more concise—it repeats the 'ON EXPLICIT REQUEST ONLY' instruction—and the policy enforcement sentence adds redundancy. Still, it is efficient overall.

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?

For an 11-parameter tool with no output schema, the description provides sufficient context: it explains the async nature, mentions sibling tools for follow-up, and includes usage boundaries. Some details about parameter interplay (e.g., wait_seconds vs. polling with delegate_status) or return value format are missing, but the description is functionally complete for selecting and invoking the tool.

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

Parameters3/5

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

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds minimal extra meaning beyond the schema: it mentions using `prompt_file` for long prompts and lists a few sibling tools for polling/collection. It does not elaborate on parameter constraints or relationships (e.g., mutual exclusivity of prompt and prompt_file).

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 purpose: 'Start a headless Claude Code session backed by an Ollama model and return immediately with a job_id.' It identifies the resource (delegate session) and the action (start). It also distinguishes itself from siblings by mentioning polling with delegate_status, collecting with delegate_result, and continuing with delegate_followup, making differentiation clear.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use instructions: 'ON EXPLICIT REQUEST ONLY' and lists triggering phrases like 'delegate this', 'use ollama', 'ask qwen', etc. It also states when not to use: 'If the user has not asked for delegation, do the work yourself and do not offer this tool unprompted.' This is exemplary usage guidance.

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

delegate_statusCheck a delegated taskA

Report whether a delegated job is still running, plus a tail of what the Ollama session has been doing — its actual tool calls and partial text. Optionally block until it finishes. Use the tool-call trace to check that a delegate really did the work it claims.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by delegate_start or delegate_followup.
wait_secondsNoBlock up to this many seconds waiting for completion.
progress_limitNoHow many recent activity lines to show. Default 15.

TDQS

A4.1/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It transparently discloses the tool's behavior: it reports running status, provides a tail of activity (including tool calls and partial text), and can optionally block for a specified duration. It does not mention potential side effects, but since it's a read-only monitoring operation, the disclosure is adequate.

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 two sentences, front-loaded with the core purpose. The second sentence adds a usage tip, which is relevant but slightly redundant. Every sentence earns its place, and there is no fluff.

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 there are 3 parameters, no output schema, and no annotations, the description is reasonably complete. It explains the tool's purpose, the key output (status and trace), and the optional blocking feature. It lacks explicit mention of the return format or error cases, but for a monitoring tool this is acceptable.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter has a description in the schema. The description adds no additional parameter semantics beyond the schema, so baseline 3 is appropriate.

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 specifies the tool reports the status of a delegated job ('Report whether a delegated job is still running'), a tail of activity ('actual tool calls and partial text'), and the option to block until completion. This distinguishes it from siblings like delegate_start (which initiates a job) and delegate_result (which presumably gets the final result).

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

Usage Guidelines4/5

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

The description gives explicit context for when to use this tool: to check if a delegate is still running and to use the tool-call trace to verify a delegate's actions. It does not explicitly state when not to use it or name alternatives, but the context ('Use the tool-call trace to check that a delegate really did the work it claims') implies it is for post-delegation monitoring versus delegate_cancel for aborting.

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

ollama_modelsList Ollama modelsA

List the Ollama models available for delegation, the current delegation mode and allowed-model policy, and the environment variables a delegated session receives. Use this to pick a model, or to report the current configuration when the user asks about it.

These settings are user-controlled. There is no tool to change them: if the user wants a different delegation mode or model policy, tell them to run ollama-mcp-config in a terminal and restart the session. Do not edit the config files yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It clearly states that the tool lists models, delegation mode, policy, and env vars, and that settings are user-controlled. It also warns that there is no tool to change them and instructs the agent not to edit config files. This covers the read-only nature and constraints. However, it does not mention any potential side effects, error conditions, or details about the output format, which would have made it a 5.

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 four sentences, tightly packed with information. The first sentence gives the purpose, the second gives usage guidance, and the last two provide behavioral context and alternative actions. No redundant sentences or filler. It is well-structured and front-loaded, making it easy for an AI agent to parse quickly.

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 has no parameters, no output schema, and no annotations, the description provides a solid overview of what the tool returns and how to use it. However, it lacks a brief description of the output format (e.g., whether it returns a list of model names or a structured JSON). This is a minor gap, but overall the description is sufficient for the agent to understand the tool's purpose and constraints.

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 has zero parameters, and schema description coverage is 100% (no parameters to describe). According to the guidelines, this gives a baseline of 4. The description does not add parameter semantics because there are none, and it correctly avoids adding unnecessary info. The score is appropriate.

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 starts with a specific verb 'List' and clearly identifies the resources: Ollama models, delegation mode, allowed-model policy, and environment variables. It distinguishes from sibling tools which are about delegation actions (start, cancel, followup, etc.) by focusing on listing models and configuration. This leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: 'Use this to pick a model, or to report the current configuration when the user asks about it.' It also provides crucial guidance on what not to do: there is no tool to change settings, and the agent should tell the user to run 'ollama-mcp-config' in a terminal and restart the session, and not to edit config files. This is exceptional for an AI agent.

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. 7 tool updatesv1.0.0
    • First observeddelegate_cancel
    • First observeddelegate_followup
    • First observeddelegate_list
    • First observeddelegate_result
    • First observeddelegate_start
    • First observeddelegate_status
    • First observedollama_models

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct lifecycle stage of a delegated Ollama session (start, status, result, followup, cancel, list). However, `delegate_cancel` and `delegate_result` have similar purposes (termination vs. final output), which could cause minor confusion but descriptions clarify the difference.

Naming Consistency5/5

All tool names follow a consistent `delegate_<verb>` pattern (cancel, list, start, followup, status, result). The naming is clear, predictable, and uses only snake_case.

Tool Count5/5

With 7 tools, the set is well-scoped for managing delegated sessions. Each tool has a clear role with no unnecessary extras, covering creation, polling, output retrieval, continuation, cancellation, and listing.

Completeness5/5

The tool surface covers the full lifecycle of a delegated session: start, poll status, get final result, follow up, cancel, list active/historical jobs, and even inspect the model configuration (`ollama_models`). No obvious gaps for the intended purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers