Skip to main content
Glama

ollama-mcp

Anthropic バックエンドの Claude Code セッションから、Ollama バックエンドの Claude Code セッションにタスクを委譲します。2つのセッションが環境変数を共有することはありません。

ollama launch claude --model <model> は、ANTHROPIC_* 変数をシェルにエクスポートすることで動作します。そのため、通常は専用のターミナルが必要です。変数はプロセス全体に適用されるため、1つのシェルは「Anthropic」か「Ollama」のどちらか一方にしかなれず、両方にはなれません。

この MCP サーバーは、明示的に構築された環境で、委譲された各セッションを子プロセスとして起動します。Opus セッションは自身の認証情報とモデル設定を保持し、委譲先は Ollama の設定を使用します。これらは同じターミナル内で並行して実行されます。

┌────────────────────────────┐
│  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

目次


Related MCP server: opencode-bridge

仕組み

Ollama サーバーは Anthropic 互換の POST /v1/messages エンドポイントを公開しているため、Claude Code は正しいベース URL を指定すれば、変更を加えずに通信できます。委譲された各タスクは、claude -p として自身のプロセスで実行され、以下の設定が適用されます。

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>

3つのモデルスロットはすべて同じ Ollama モデルを指すため、エイリアス(opus、sonnet、haiku)や、委譲先の内部で起動されたサブエージェントは、そのモデルに解決され、Anthropic のデフォルトに静かにフォールバックすることはありません。

子プロセスの環境は、プラットフォームごとの小さな許可リストから構築されます。ANTHROPIC_*、CLAUDE_*、AWS_*、GOOGLE_*、AZURE_*、OPENAI_*、BEDROCK_*、VERTEX_* に一致するものはすべて、Ollama の値が適用される前に削除されるため、シェル内の紛れ込んだ ANTHROPIC_API_KEY が委譲された実行に漏洩したり、課金されたりすることはありません。

また、委譲先は --strict-mcp-config と MCP 設定なしで起動されるため、起動が高速になり、このサーバーを再帰的に呼び出すことを防ぎます。


前提条件

要件

備考

Node.js 20+

node --version。24 でビルドおよびテスト済み。

Ollama

ollama.com/download。実行中である必要があります: ollama serve(デスクトップアプリが自動的に行います)。

Claude Code CLI

claude.com/code。claude --version。

少なくとも1つのモデル

ollama pull qwen3.5:397b-cloud

Ollama アカウント

:cloud モデルのみ必要 — ollama signin。ローカルモデルはアカウント不要。

インストール前に各コンポーネントを確認してください:

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

クラウドモデル vs ローカルモデル。 :cloud タグが付いたモデルは Ollama のインフラストラクチャ上で実行され、ollama signin が必要です。これらは、ほとんどのラップトップのメモリに収まるものよりもはるかに高性能であり、委譲の実用的な選択肢となります。ローカルモデルも動作し、マシンからデータが外部に出ることはありません。


インストール

npm から(推奨)

クローンやビルドは不要 — npx が必要に応じて取得します:

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

または、グローバルにインストールします。これにより、設定 CLI も PATH に追加されます:

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

ソースから

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"

設定 CLI は node dist/cli.js … として実行するか、npm link を使用して ollama-mcp-config を PATH に追加します。

スコープ

--scope user はすべてのプロジェクトで利用可能にします。--scope project は現在のリポジトリの .mcp.json に書き込み、コラボレーターと共有します。--scope local はこのマシンとプロジェクトに限定します。

確認

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

その後、Claude Code セッションを再起動してください — ツールリストは起動時に読み込まれます。

設定

設定は4つのレイヤーから解決され、後続のものが優先されます:

  1. 組み込みのデフォルト

  2. ユーザー設定 — ~/.ollama-mcp/config.json($OLLAMA_MCP_CONFIG でパスを上書き可能)

  3. プロジェクト設定 — サーバーの作業ディレクトリ内の ./ollama-mcp.config.json

  4. 環境変数

{
  "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
}

設定

環境変数

デフォルト

意味

delegationMode

OLLAMA_MCP_DELEGATION_MODE

ondemand

委譲の使用頻度 — 下記参照

allowedModels

OLLAMA_MCP_ALLOWED_MODELS(カンマ区切り)

[](すべて)

委譲が使用できるモデル

defaultModel

OLLAMA_MCP_DEFAULT_MODEL

最初に許可されたクラウドモデル

呼び出しでモデルが省略された場合のモデル

defaultPermissionMode

OLLAMA_MCP_PERMISSION_MODE

auto

委譲先の権限モード

baseUrl

OLLAMA_MCP_BASE_URL または OLLAMA_HOST

http://127.0.0.1:11434

Ollama エンドポイント

claudeBin

OLLAMA_MCP_CLAUDE_BIN

claude

Claude Code CLI へのパス

stateDir

OLLAMA_MCP_STATE_DIR

~/.ollama-mcp/jobs

プロンプト、トランスクリプト、結果

jobTimeoutMs

OLLAMA_MCP_JOB_TIMEOUT_MS

1800000

1ターンのハードキル時間

maxInlineChars

OLLAMA_MCP_MAX_INLINE_CHARS

60000

この値を超える出力は切り詰められ、全文はディスクに保存

設定の変更

設定はターミナルから変更され、モデルによって変更されることはありません:

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

その後、Claude Code セッションを再起動して、サーバーが設定を再読み込みするようにします。

これを実現する MCP ツールは意図的に存在しません。 セキュリティモデル を参照してください。

許可されたモデル

allowedModels: [](デフォルト)は、サーバーが提供する任意のモデルを許可します。空でないリストの場合:

  • delegate_start は、リスト外のモデルを拒否し、静かに別のモデルに置き換えるのではなく、許可されたセットを指定します

  • ollama_models は、除外されたモデルを BLOCKED by allowedModels とマークします

  • 許可リストは delegate_start ツールの説明に埋め込まれるため、オーケストレーターは追加の呼び出しなしで選択肢を把握できます

  • CLI は、defaultModel が新しいリストの外側に取り残されるような変更を拒否します


委譲モード

これは、モデルが実際に読み取るツールの説明を書き換えることで、オーケストレーターが委譲にどの程度積極的に頼るかを制御します。変更にはセッションの再起動が必要です(設計上の意図です)。

モード

効果

off

delegate_* ツールは完全に非表示になります。ollama_models は残り、モデルがセットアップを報告できるようにします。

ondemand (デフォルト)

明示的に依頼した場合のみ委譲 — 「これを委譲して」、「ollama を使って」、「qwen に聞いて」。それ以外の場合、オーケストレーターは自身で作業を行い、ツールについて言及しません。

auto

オーケストレーターが自身で判断し、説明に組み込まれた基準を使用します。

auto モードでは、説明はオーケストレーターに対し、自己完結型で、安価に検証可能で、コンテキストを多く消費する作業(大量のファイル要約、最初のパス検索、機械的なリファクタリング、ボイラープレートとテストの足場、ログや差分のトリアージ)を委譲し、アーキテクチャ上の決定、セキュリティに関わる変更、曖昧な要件、最終レビューは自身で保持するように指示します。また、運用方法 で説明されている理由から、委譲された主張を検証するように指示されています。


ツールリファレンス

ツール

目的

ollama_models

提供可能なモデルを一覧表示し、現在の設定を報告します(読み取り専用)

delegate_start

タスクを開始します。即座に job_id を返します

delegate_followup

同じセッションに別のメッセージを送信します

delegate_status

状態と、委譲先のツールコールの末尾をポーリングします

delegate_result

最終出力を収集します

delegate_cancel

実行中の委譲先と、それが開始したすべてのものを終了します

delegate_list

ジョブを会話ごとにグループ化して一覧表示します

delegate_start

パラメータ

タイプ

備考

prompt

string

タスク。prompt_file とは相互排他的。

prompt_file

string

プロンプトを保持するファイルへのパス。長い場合に推奨。

model

string

許可リストに含まれている必要があります。デフォルトは defaultModel。

cwd

string

委譲先の作業ディレクトリ。デフォルトはサーバーの cwd。

permission_mode

enum

auto、acceptEdits、bypassPermissions、manual、dontAsk、plan

allowed_tools

string.

例: ["Read","Grep","Bash(git *)"]

disallowed_tools

string.

例: ["Write","Edit"]

append_system_prompt

string

委譲先への追加指示

max_turns

number

委譲先のエージェントターンを制限

add_dirs

string.

追加のアクセス可能なディレクトリ

wait_seconds

number

最大 N 秒間ブロック(0~600)。デフォルト 0 = 即座に戻る。

delegate_followup は job_id または session_id を受け取り、同じ prompt/prompt_file ペアとオプションの permission_mode、max_turns、wait_seconds を受け取ります。


運用方法

デフォルトで非同期

delegate_start はミリ秒単位で job_id を返します。委譲先はバックグラウンドで実行を続けます。これにより、長時間のタスクがセッションを停止させたり、MCP クライアントのタイムアウトを発生させたりするのを防ぎます。

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

これらのいずれかに wait_seconds を渡すと、代わりにブロックします — ポーリングの往復がもったいない短いタスクに便利です。

双方向の会話

すべてのジョブには session_id が含まれています。その job_id を delegate_followup に渡すと、完全な履歴でセッションが再開されます。session_id はターン間で安定していますが、各ターンは新しい job_id を取得します。

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)

委譲先がすでに関連するコンテキストを読み込んでいる場合、フォローアップは新しく開始するよりもはるかに低コストです。

長いプロンプト

すべてのプロンプトパラメータには、対応する prompt_file があります。内部的には、プロンプトは常にディスクに書き込まれ、CLI に stdin 経由で渡されます — argv エントリとしてもシェル経由でもありません。バッククォート、$(...)、引用符、改行、グロブ文字はそのまま通過し、argv の長さ制限もありません。

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

権限

デリゲートはデフォルトで defaultPermissionMode (auto) になります。特定の呼び出しを絞り込む場合:

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

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

委任された出力の信頼性

完了したすべての結果は、その ツール呼び出し回数 を報告します。弱いモデルは、何も実行せずに自信満々に答えることがあります — 開発中、あるモデルは Bash を呼び出さずに環境変数が設定されていないと主張しましたが、促されるとコマンドを実行して正しい値を報告しました。

tool calls: 0 の結果は、未検証として注釈されます:

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

delegate_status は実際のトレースを示します。純粋に会話ベースのフォローアップは正当にゼロになることがあります — このフラグは「これを裏付けるものは何もない」という意味であり、「何かが壊れた」という意味ではありません。

キャンセル

delegate_cancel({ job_id: "A" })

デリゲート とそれが開始したすべてのもの を強制終了します。そのため、長いビルドの途中だったデリゲートがビルドを実行したままになることはありません。


ジョブアーティファクト

各ジョブは ~/.ollama-mcp/jobs/<job_id>/ に書き込みます:

ファイル

内容

prompt.txt

送信された内容そのまま

stream.jsonl

すべてのツール呼び出しを含む完全な stream-json トランスクリプト

result.json

メタデータ:状態、モデル、トークン、タイミング、終了コード

result.txt

最終出力テキスト

maxInlineChars より長い結果はツール応答で切り詰められ、全文は result.txt から読み取られます。自動的に削除されることはありません — 好きなときにディレクトリを削除してください。


トラブルシューティング

Cannot reach Ollama at http://127.0.0.1:11434 Ollama が実行されていません。ollama serve を起動するか、デスクトップアプリを開いてください。別の場所で待機している場合は、OLLAMA_MCP_BASE_URL を設定してください。

No models available from Ollama ollama pull qwen3.5:397b-cloud を実行し、:cloud モデルには ollama signin を行ってください。

<model> was retired at … (HTTP 410) Ollama がそのクラウドモデルを削除しました。ollama list には、削除されたモデルのローカルキャッシュマニフェストがまだ表示されることがあります — 実際に動作するものを確認し、defaultModel を更新してください。

Model "x" is not in the allowed list 意図した動作です。ollama-mcp-config --allow <models> を実行し、その後再起動してください。

ツールが Claude Code に表示されない ツールリストはセッション開始時に読み取られます。再起動するか、claude mcp list で確認してください。

デリゲートが起動エラーで即座に失敗する CLI が見つかりませんでした。OLLAMA_MCP_CLAUDE_BIN に claude の絶対パスを設定してください。

すべてが遅い クラウドモデルはターンごとにラウンドトリップを支払い、Claude Code はすべてのリクエストで大きなシステムプロンプト(約25kトークン)を送信します。max_turns を使用してエージェントループを制限し、allowed_tools を使用してデリゲートが必要以上に探索するのを防いでください。


プラットフォームサポート

プラットフォーム

ステータス

macOS

エンドツーエンドでテスト済み

Linux

サポート対象;macOS と同じ POSIX コードパス

Windows

設計上はサポート対象、実際のハードウェアでは未テスト

プラットフォームの違いは src/platform.ts に分離されています:

バイナリ解決。 POSIX では、spawn が PATH を検索します。Windows では、ネイティブインストールは claude.exe を提供し、npm インストールは claude.cmd を提供しますが、CreateProcess はそれを直接実行できません — そのためサーバーは PATH × PATHEXT を走査して .exe を優先し、.cmd シムを cmd.exe 経由でルーティングするフォールバックを行います。

引数のエスケープ。 そのフォールバックは2つのレイヤーを適用します:MSVCRT argv の引用符付け、次に cmd 自身のメタ文字(& | < > ^ " ( ) % !)をキャレットでエスケープします。2番目のレイヤーをスキップすることは、古典的な .cmd コマンドインジェクションの穴です。プロンプトはこのパスには決して触れません — それらは stdin を経由します。1つの制限:複数行 の append_system_prompt は cmd.exe のコマンドラインをまたげないため、サーバーはそれを静かに壊す代わりに、OLLAMA_MCP_CLAUDE_BIN を指す明確なエラーを発生させます。

環境許可リスト。 Windows は POSIX よりもはるかに多くのセットを保持します。SystemRoot と windir はオプションではありません — それらを削除すると Winsock の初期化に失敗し、子プロセスはローカルホストに対してもソケットを開けなくなります。名前は大文字小文字を区別せずに一致しますが、親の元のスペルでコピーされます。

キャンセル。 POSIX の子プロセスはプロセスグループリーダーとして detached で生成され、process.kill(-pid) でキャンセルされます。Windows では taskkill /T /F を使用します。どちらの場合でも、デリゲート自身のサブプロセスはデリゲートとともに終了します。サーバーはシャットダウン時にも実行中のデリゲートを強制終了します。


セキュリティモデル

認証情報の分離がポイントです。 子環境は継承されるのではなく、ゼロから構築され、プロバイダ変数は Ollama の値が適用される前に削除されます。これは test/env-unit.mjs でカバーされ、test/e2e.mjs は親に偽の ANTHROPIC_API_KEY を注入し、それがデリゲートに到達しないことをアサートします。

委任ポリシーはモデルから書き換えられません。 delegationMode や allowedModels を変更する MCP ツールはありません。以前のバージョンにはありましたが、それは間違いでした:ondemand が不便だと感じたモデルは、1回の呼び出しで auto に切り替えて自由に委任できてしまいます。設定は起動時に一度だけ読み込まれ、実行時に変更されることはなく、ツールの説明にはポリシーはモデルが変更できるものではないと明記されています。

これはガードレールであり、セキュリティ境界ではありません。 シェルアクセスを持つエージェントは、設定ファイルを編集できます。ツールを削除することで得られるのは、そのような変更が 次回の再起動まで有効にならない、目に見えるファイル編集 となり、タスク途中の1回の静かなツール呼び出しではなくなることです。完全に堅牢にするには、MCP 登録時に --env で値を固定します。これにより設定ファイルが上書きされます:

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

デリゲートはあなたのファイルシステムを継承します。 デリゲートは、あなたが指定した cwd で、defaultPermissionMode であなたのユーザーとして実行されます。委任されたセッションは、他の Claude Code セッションと同様に扱ってください — 信頼性の低いモデルに作業を任せる場合は、disallowed_tools または読み取り専用の権限モードを使用してください。


開発

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

テスト

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 は、ネットワークを必要としない3つのテストを実行します。

リリースの公開

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

パッケージは claude-ollama-delegate-mcp で、dist/、README.md、LICENSE のみを出荷します。publishConfig.access は public で、prepare はパッケージング前に tsc を実行するため、古い dist/ が公開されることはありません。出荷前に npm pack --dry-run で tarball をプレビューしてください。

レイアウト

ファイル

責任

src/index.ts

MCP サーバー、ツール登録とハンドラ

src/settings.ts

階層的な設定読み込みとバリデーション

src/config.ts

起動時に解決される設定のシングルトン

src/descriptions.ts

モード依存のツール説明

src/env.ts

子環境の構築とプロバイダ変数のブロックリスト

src/platform.ts

Windows/POSIX の spawn、引数のエスケープ、プロセスツリーの強制終了

src/jobs.ts

ジョブのライフサイクル、stream-json のパース、キャンセル

src/models.ts

モデルの発見と許可リストの強制

src/cli.ts

ollama-mcp-config 設定 CLI


ライセンス

MIT — 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