MCP server for local LLM processing via Ollama - Swiss legal privacy protection. Enables local processing of privileged legal content via Ollama, enforcing Art. 321 StGB (attorney-client privilege) compliance.
The Ollama MCP server defines 5 tools with varying quality. All tools have descriptions (ranging from 120-340 chars, within the 34-392 baseline), clear action verbs (check_, generate, chat, classify_, list_), and complete input schemas with type declarations. However, several critical gaps reduce the score: (1) Output schemas are entirely undocumented, there is no structured specification of what each tool returns, forcing LLMs to infer response shape. (2) Parameter descriptions lack actionable constraints: temperature ranges (0.0-2.0) and max_tokens lack minimums/maximums or default guidance. (3) Tools exhibit composition issues: ollama_check_status and ollama_list_models both describe Ollama availability but serve slightly different purposes, creating naming ambiguity. (4) Error handling is absent, no guidance on how to recover from network failures, model unavailability, or malformed prompts. The privacy-focused Swiss legal use case is well-motivated and descriptions contextualize tools appropriately, but production-grade tool composition and schema completeness are missing.
Chat completion with message history using a local Ollama model. Use for multi-turn conversations about privileged legal content. Supports system, user, and assistant message roles. Requires Ollama to be running locally (ollama serve).
Check if Ollama is running locally and report its status. Returns: - Whether Ollama is online - Ollama version - List of installed models with sizes - Model recommendations for Swiss legal work Use this before attempting generate or chat to verify Ollama is available.
Classify text by Swiss legal privacy level using pattern detection. Works entirely OFFLINE — no Ollama or network connection required. Detects patterns in German, French, and Italian: - PRIVILEGED: Anwaltsgeheimnis, secret professionnel, segreto professionale, Art. 321 StGB, streng vertraulich, strictement confidentiel, etc. - CONFIDENTIAL: vertraulich, confidentiel, riservato, intern, privat, etc. - PUBLIC: No privacy patterns detected Returns the classification level, matched patterns, and routing guidance.
Generate text locally using Ollama for privacy-sensitive Swiss legal content. Use this for PRIVILEGED content (Art. 321 StGB) that must not be sent to cloud APIs: - Attorney-client communications - Legal opinions and memoranda - Case strategy documents Requires Ollama to be running locally (ollama serve). Supports optional system prompt for context and generation options.
Output schemas are completely undocumented. LLMs cannot infer what fields to expect (e.g., ollama_check_status returns 'whether Ollama is online', 'version', 'list of models', but the exact JSON structure, field names, types, and nesting are not specified). This forces LLMs to guess and makes chaining tools impossible.
Parameter constraints lack actionable detail. 'temperature' is described as '0.0-2.0, default: model default' but min/max bounds and whether the default is optional are unclear. 'max_tokens' has no numeric range guidance. LLMs cannot validate inputs and will pass invalid values.
No error handling guidance. Tools have no documented recovery paths. What happens if Ollama is offline? If a model is not installed? If a prompt is malformed? Raw error codes or stack traces are useless to an LLM, error responses must guide the next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List installed Ollama models with Swiss legal task recommendations. Returns: - All installed models with name, size, and quantization details - Task-specific recommendations for Swiss legal work: - Legal analysis (large models: mixtral, llama3) - Quick classification (small models: phi, gemma) - Multilingual DE/FR/IT (aya, mixtral, qwen) - Document embeddings (nomic-embed, mxbai-embed) Requires Ollama to be running locally.
Naming ambiguity: ollama_check_status and ollama_list_models both establish Ollama availability and list models. The distinction is unclear, check_status implies a health check; list_models suggests enumeration. LLMs may conflate them. Consider renaming to get_ollama_status (lightweight) vs list_available_models (heavyweight) or merge them.
No pagination or result-limiting guidance. The description of ollama_list_models says it returns 'all installed models', but what if a user has 500 models? No mention of limits, pagination, or how large responses are handled. Tool descriptions should cap result limits (e.g., 'Returns up to 50 models; use pagination for more').
Messages array in ollama_chat lacks item schema detail. Items are objects with 'role' (enum: system|user|assistant) and 'content' (string), but are there any constraints on content length, message order, or minimum messages required? Undocumented dependencies cause silent misuse.