ollama-handoff
The ollama-handoff server lets an AI agent offload routine tasks to a local Ollama model, saving cloud costs and keeping frontier models focused on complex work. It can be configured via environment variables (Ollama URL, default model, context window, timeouts).
ask_local— Send a one-shot prompt to the local model for simple tasks (drafts, formatting, quick lookups)chat_local— Conduct multi-turn conversations with the local modelsummarize_local— Generate a structured summary (headline + bullets) of long texts, logs, or transcripts, with an optional focus hintcode_review_local— Perform a quick first-pass code review on a diff or code block to catch obvious bugs and style issuesdraft_commit_message_local— Draft a conventional commit message from agit diff --stagedoutputextract_local— Extract structured data (e.g., URLs, function names, error codes) from unstructured textlist_models— List locally available Ollama modelsserver_info— View the server's effective configuration (default model, context size, Ollama URL) for debugging
Enables AI agents to offload routine tasks to local Ollama models, reducing cloud costs and frontier model context usage.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ollama-handoffsummarize the errors in build.log"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ollama-handoff
An MCP server that offloads cheap work from your cloud LLM agent to a local Ollama model.
Your frontier model (Claude, GPT, etc.) is brilliant and metered. A lot of the work it gets handed — summarizing a log, drafting a commit message, pulling every URL out of a file, a quick first-pass code review — doesn't need frontier reasoning at all. ollama-handoff exposes your local Ollama instance as a handful of purpose-built MCP tools, so your agent can route that work to a model on your own GPU — at zero cloud cost — and spend its (paid) reasoning budget on the things that actually need it.
This isn't a generic "wrap the Ollama API" server. Each tool ships with a baked-in system prompt and a description written for the calling agent, so the agent knows when to hand off and gets a tuned result back without re-stating instructions every call.
Why you'd want this
💸 Spend less. Routine offloads run locally and bill nothing.
⚡ Keep the big model focused. Summaries, extractions, and drafts don't eat its context or your budget.
🧠 Tuned, not raw.
summarize_local,code_review_local,draft_commit_message_local, andextract_localcome with reviewer/summarizer/extractor system prompts already dialed in.🔌 Drop-in. One MCP registration; works with Claude Code, Claude Desktop, Cursor, and any MCP client.
🪶 Tiny & auditable. Two dependencies (
mcp,httpx), fully typed, unit-tested, no telemetry.
Related MCP server: local-llm-delegation-mcp
Requirements
Ollama running locally (
ollama serve) with at least one model pulled, e.g.ollama pull qwen2.5-coder:14b.Python 3.11+ (or just
uvx, which manages it for you).
Install
The fastest path is uv — no manual venv needed:
uvx ollama-handoff # run directly
# or
pip install ollama-handoff # then run: ollama-handoffClaude Code
claude mcp add ollama-handoff -- uvx ollama-handoffClaude Desktop / Cursor (mcp config block)
{
"mcpServers": {
"ollama-handoff": {
"command": "uvx",
"args": ["ollama-handoff"],
"env": {
"OLLAMA_DEFAULT_MODEL": "qwen2.5-coder:14b"
}
}
}
}Run with Docker
A Dockerfile is included. The server speaks MCP over stdio, so run it
interactively (-i) and point it at your Ollama instance:
docker build -t ollama-handoff .
docker run --rm -i -e OLLAMA_URL=http://host.docker.internal:11434 ollama-handoffOn native Linux (no Docker Desktop), use --network=host with
OLLAMA_URL=http://localhost:11434.
Tools
Tool | What it does | When the agent should reach for it |
| One-shot prompt to the local model | Any handoff that doesn't need frontier reasoning |
| Multi-turn local chat | Handoffs needing more than one turn of context |
| Structured summary (headline + bullets) | Long files, logs, transcripts, docs |
| Quick first-pass review of a diff/code | Cheap pre-filter before a deep review |
| Conventional commit message from a diff | Routine commits |
| Pull structured items from unstructured text | URLs, function names, error codes, TODOs |
| List locally available Ollama models | Discovery / choosing a model |
| Report the effective configuration | Debugging setup |
Configuration
All configuration is via environment variables set in your MCP registration:
Variable | Default | Description |
|
| Base URL of the Ollama server |
|
| Default model for handoffs |
|
| Context window in tokens |
|
| How long to keep the model resident in VRAM |
|
| Per-request timeout, seconds |
Example
Once registered, you don't call the tools yourself — your agent does. A typical exchange:
You: Summarize the errors in
build.logand draft a commit for the staged fix.Agent: (calls
summarize_local(build.log, focus="errors and stack traces")anddraft_commit_message_local(git diff --staged)— both run on your GPU, nothing billed) → returns the summary + commit message.
Development
git clone https://github.com/Michael-WhiteCapData/ollama-handoff
cd ollama-handoff
uv pip install -e ".[dev]"
ruff check .
pytest # tests use httpx.MockTransport — no running Ollama requiredSee CONTRIBUTING.md. Contributions welcome — especially new specialized handoff tools.
License
MIT © Michael Tierney
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Michael-WhiteCapData/ollama-handoff'
If you have feedback or need assistance with the MCP directory API, please join our Discord server