Skip to main content
Glama
NightTrek

Ollama MCP Server

by NightTrek
README.md
# Ollama MCP Server

šŸš€ A powerful bridge between Ollama and the Model Context Protocol (MCP), enabling seamless integration of Ollama's local LLM capabilities into your MCP-powered applications.

## 🌟 Features

### Complete Ollama Integration
- **Full API Coverage**: Access all essential Ollama functionality through a clean MCP interface
- **OpenAI-Compatible Chat**: Drop-in replacement for OpenAI's chat completion API
- **Local LLM Power**: Run AI models locally with full control and privacy

### Core Capabilities
- šŸ”„ **Model Management**
  - Pull models from registries
  - Push models to registries
  - List available models
  - Create custom models from Modelfiles
  - Copy and remove models

- šŸ¤– **Model Execution**
  - Run models with customizable prompts
  - Chat completion API with system/user/assistant roles
  - Configurable parameters (temperature, timeout)
  - Raw mode support for direct responses

- šŸ›  **Server Control**
  - Start and manage Ollama server
  - View detailed model information
  - Error handling and timeout management

## šŸš€ Getting Started

### Prerequisites
- [Ollama](https://ollama.ai) installed on your system
- Node.js and npm/pnpm

### Installation

1. Install dependencies:
```bash
pnpm install
```

2. Build the server:
```bash
pnpm run build
```

### Configuration

Add the server to your MCP configuration:

#### For Claude Desktop:
MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Windows: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "ollama": {
      "command": "node",
      "args": ["/path/to/ollama-server/build/index.js"],
      "env": {
        "OLLAMA_HOST": "http://127.0.0.1:11434"  // Optional: customize Ollama API endpoint
      }
    }
  }
}
```

## šŸ›  Usage Examples

### Pull and Run a Model
```typescript
// Pull a model
await mcp.use_mcp_tool({
  server_name: "ollama",
  tool_name: "pull",
  arguments: {
    name: "llama2"
  }
});

// Run the model
await mcp.use_mcp_tool({
  server_name: "ollama",
  tool_name: "run",
  arguments: {
    name: "llama2",
    prompt: "Explain quantum computing in simple terms"
  }
});
```

### Chat Completion (OpenAI-compatible)
```typescript
await mcp.use_mcp_tool({
  server_name: "ollama",
  tool_name: "chat_completion",
  arguments: {
    model: "llama2",
    messages: [
      {
        role: "system",
        content: "You are a helpful assistant."
      },
      {
        role: "user",
        content: "What is the meaning of life?"
      }
    ],
    temperature: 0.7
  }
});
```

### Create Custom Model
```typescript
await mcp.use_mcp_tool({
  server_name: "ollama",
  tool_name: "create",
  arguments: {
    name: "custom-model",
    modelfile: "./path/to/Modelfile"
  }
});
```

## šŸ”§ Advanced Configuration

- `OLLAMA_HOST`: Configure custom Ollama API endpoint (default: http://127.0.0.1:11434)
- Timeout settings for model execution (default: 60 seconds)
- Temperature control for response randomness (0-2 range)

## šŸ¤ Contributing

Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests

## šŸ“ License

MIT License - feel free to use in your own projects!

---

Built with ā¤ļø for the MCP ecosystem

TDQS

B3/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have distinct purposes, such as list, pull, push, rm, and show, which clearly target different operations on models. However, 'run' and 'chat_completion' could be confused, as both involve executing models, though 'chat_completion' is more specific to API interactions. Overall, the descriptions help clarify boundaries, but there is some overlap in execution-related tools.

Naming Consistency3/5

The naming is mixed with some inconsistencies: most tools use simple verb forms like list, pull, push, rm, run, and serve, which are consistent. However, 'chat_completion' uses snake_case and is more descriptive, while 'cp' and 'create' are shorter forms that deviate slightly. This creates a readable but not fully uniform pattern across all tools.

Tool Count5/5

With 10 tools, the count is well-scoped for managing Ollama models, covering essential operations like listing, creating, pulling, pushing, removing, running, and serving. Each tool serves a clear purpose in the model lifecycle, making the set comprehensive without being overwhelming or too sparse for the domain.

Completeness5/5

The tool set provides complete coverage for Ollama model management, including CRUD operations (create, list, rm), lifecycle actions (pull, push, run, serve), and informational tools (show, chat_completion). There are no obvious gaps; agents can perform all core workflows from model acquisition to execution and maintenance seamlessly.

Maintenance

ActivityInactive
ResponsivenessUnresponsive