Skip to content
reaatechREAATECH

@reaatech/media-pipeline-mcp-ollama

npm v0.3.0

A local Ollama provider for the media-pipeline framework that exposes text completion, embedding generation, and image description via any Ollama model. It provides an `OllamaProvider` class implementing the `MediaProvider` interface, requiring a running Ollama instance at a configurable `baseUrl`.

@reaatech/media-pipeline-mcp-ollama

npm version License: MIT CI

Status: Pre-1.0 — APIs may change in minor versions. Pin to a specific version in production.

Local Ollama provider for the media pipeline framework. Supports text completion, embedding generation, and image description via any Ollama model at zero API cost. Ideal as an LLM-judge backend for variant evaluation in quality gates.

Installation

terminal
npm install @reaatech/media-pipeline-mcp-ollama
# or
pnpm add @reaatech/media-pipeline-mcp-ollama

Feature Overview

  • Zero API cost — all inference runs on your own hardware
  • Text completion — generate text with any Ollama model using /api/generate
  • Embedding generation — produce vector embeddings via /api/embeddings
  • Image description — describe images using multimodal models (e.g. LLaVA, llama3.2-vision)
  • Auto-pull — optionally pull missing models automatically before first use
  • Streaming support — operations declare streaming capability for progress tracking
  • Configurable timeout — adjustable request timeout per operation

Quick Start

typescript
import { OllamaProvider } from "@reaatech/media-pipeline-mcp-ollama";
 
const provider = new OllamaProvider({
  baseUrl: "http://localhost:11434",
  defaultModel: "llama3.2",
});
 
// Text completion
const textResult = await provider.execute({
  operation: "text.complete",
  params: {
    prompt: "Write a haiku about cherry blossoms",
    temperature: 0.7,
    max_tokens: 100,
  },
  config: {},
});
 
console.log(textResult.data.toString()); // The generated haiku
console.log(textResult.metadata.model); // "llama3.2"
 
// Embedding generation
const embedResult = await provider.execute({
  operation: "embedding.generate",
  params: {
    input: "What is the meaning of life?",
    model: "nomic-embed-text",
  },
  config: {},
});
 
const embedding = JSON.parse(embedResult.data.toString());
console.log(embedResult.metadata.dimensions); // e.g. 768
 
// Image description (requires multimodal model)
const descResult = await provider.execute({
  operation: "image.describe",
  params: {
    artifact_data: imageBuffer,
    model: "llama3.2-vision",
    prompt: "Describe this image in detail.",
  },
  config: {},
});
 
console.log(descResult.data.toString()); // Image description

With auto-pull enabled:

typescript
const provider = new OllamaProvider({
  baseUrl: "http://localhost:11434",
  autoPull: true,     // Pull models automatically if not present
  defaultModel: "llama3.2",
});

Supported Operations

OperationOllama API EndpointDescription
text.complete/api/generateText generation with prompt, system message, temperature, and max token control
embedding.generate/api/embeddingsGenerate vector embeddings for text input
image.describe/api/generateDescribe images using multimodal vision models

Configuration

typescript
interface OllamaConfig {
  baseUrl?: string;        // Default: "http://localhost:11434"
  defaultModel?: string;   // Default: "llama3.2"
  timeoutMs?: number;      // Default: 120000 (2 min)
  headers?: Record<string, string>;  // Custom HTTP headers
  autoPull?: boolean;      // Default: false — auto-pull missing models
}

API Reference

OllamaProvider

Main provider class extending MediaProvider.

MemberTypeDescription
supportedOperationsstring[]['text.complete', 'embedding.generate', 'image.describe']
supportsStreamingSet<string>{'text.complete', 'embedding.generate'}
supportsWebhooksbooleanfalse — Ollama has no outbound webhooks
healthCheck()Promise<ProviderHealth>Checks /api/tags endpoint
estimateCost()Promise<CostEstimate>Always returns { costUsd: 0 }
execute(input)Promise<ProviderOutput>Routes to textComplete, embeddingGenerate, or imageDescribe

createOllamaProvider(config?)

Factory function that returns a new OllamaProvider instance.

OllamaConfig

Configuration interface (see Configuration section above).

Text Completion Parameters

ParameterTypeDefaultDescription
promptstringInput text prompt (required)
modelstringProvider defaultModel name to use
systemstringSystem prompt
temperaturenumberSampling temperature
max_tokensnumberMaximum output tokens
streambooleanfalseStreaming mode (use supportsStreaming metadata)

Embedding Parameters

ParameterTypeDefaultDescription
inputstringText to embed (required)
modelstringProvider defaultEmbedding model name

Image Description Parameters

ParameterTypeDefaultDescription
artifact_dataBufferImage data buffer (required)
modelstringllama3.2-visionMultimodal model name
promptstringDescribe this image in detail.Custom description prompt
detailstringdetailedDetail level metadata

Cost Estimation

OperationEstimated Cost
text.complete$0.00 (local)
embedding.generate$0.00 (local)
image.describe$0.00 (local)

License

MIT