MCP server for Ollama - exposes all Ollama SDK functionality through MCP tools
The Ollama MCP server presents 13 tools with consistent naming (verb_noun pattern: ollama_*), reasonable descriptions (avg ~120 chars), and visible JSON Schema definitions. However, there are significant gaps: parameter descriptions lack depth and format constraints; output schemas are not documented; error handling is generic; and several high-risk tools (delete, push, pull) lack confirmation or dry-run patterns. The server is functional but not production-grade. Naming is clear and action-oriented. Descriptions exist but are often too brief to guide LLM tool selection decisively. Schemas are present but incomplete, missing type constraints, format specifications, and range limits on numeric parameters. No tool annotations (readOnlyHint/destructiveHint) are visible despite the risk classification provided.
Chat with a model using conversation messages. Supports system messages, multi-turn conversations, tool calling, and generation options.
Copy a model. Creates a duplicate of an existing model with a new name.
Create a new model with structured parameters. Allows customization of model behavior, system prompts, and templates.
Delete a model from local storage. Removes the model and frees up disk space.
Generate embeddings for text input. Returns numerical vector representations.
Generate completion from a prompt. Simpler than chat, useful for single-turn completions.
No tool annotations (destructiveHint, readOnlyHint, idempotentHint) despite risk classification. Tools like ollama_delete (DESTRUCTIVE), ollama_pull (WRITE), ollama_push (WRITE) should declare their safety profiles for agent planning.
Destructive operations lack confirmation or dry-run support. ollama_delete permanently removes models with no undo path. Critical pattern violation for irreversible tools.
Parameter descriptions lack actionable constraints. Numeric parameters (e.g., max_results in ollama_web_search) state allowed range in schema but not in description text. LLMs cannot read JSON Schema constraints, they need explicit description hints like '(1-10, default 5)'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
List all available Ollama models installed locally. Returns model names, sizes, and modification dates.
List running models. Shows which models are currently loaded in memory.
Pull a model from the Ollama registry. Downloads the model to make it available locally.
Push a model to the Ollama registry. Uploads a local model to make it available remotely.
Show detailed information about a specific model including modelfile, parameters, and architecture details.
Fetch a web page by URL using Ollama's web fetch API. Returns the page title, content, and links. Requires OLLAMA_API_KEY environment variable.
Perform a web search using Ollama's web search API. Augments models with latest information to reduce hallucinations. Requires OLLAMA_API_KEY environment variable.
Output schemas are not documented. Tools return structured JSON (as seen in server.ts structuredContent handling) but the calling agent has no schema to understand return fields, forcing unguided parsing.
Error responses use generic messaging. In server.ts, errors return 'Error: {message}' with isError=true but no guidance on recovery or error classification (retryable vs fatal). Pattern: recovery-guide.
Tool descriptions below LLM-optimal length (10 - 1024 chars, baseline avg 194 chars). ollama_ps (50 chars), ollama_list (89 chars), ollama_delete (80 chars), ollama_show (84 chars) are too brief to guide multi-tool selection decisions.
The 'options' parameter in ollama_chat and ollama_generate is typed as string ('Provide as JSON object') rather than structured object. LLMs will struggle to construct valid JSON strings; should be a typed object schema.
API key requirement (OLLAMA_API_KEY) for ollama_web_search and ollama_web_fetch is mentioned in description but not enforced or validated in visible code. No guidance on what happens if the key is missing.