MCP Ollama Server
by MikeyBeez
README.md
# MCP Ollama Server
A Model Context Protocol (MCP) server that provides direct access to Ollama models for AI inference.
## Features
- 🚀 **Direct Model Access**: Generate responses and chat with any Ollama model
- 💬 **Chat Support**: Maintain conversation context with chat endpoints
- 📋 **Model Management**: List, pull, delete, and get info about models
- 🔢 **Embeddings**: Generate text embeddings for semantic search
- 🔧 **Full Control**: Configure temperature, max tokens, and system prompts
- ✅ **Status Checking**: Automatic Ollama availability detection
## Installation
1. **Prerequisites**:
- [Ollama](https://ollama.ai) installed and running
- Node.js 18+ installed
2. **Install the MCP server**:
```bash
cd /Users/bard/Code/mcp-ollama
npm install
npm run build
```
3. **Add to Claude Desktop config**:
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"ollama": {
"command": "node",
"args": ["/Users/bard/Code/mcp-ollama/dist/index.js"],
"env": {
"OLLAMA_BASE_URL": "http://localhost:11434"
}
}
}
}
```
4. **Restart Claude Desktop**
## Usage
### Generate Text
```javascript
// Simple generation
ollama_generate({
prompt: "What is the meaning of life?"
})
// With system prompt and parameters
ollama_generate({
model: "llama3.2",
prompt: "Write a haiku about coding",
system: "You are a creative poet",
temperature: 0.9,
max_tokens: 100
})
```
### Chat Conversations
```javascript
// Multi-turn conversation
ollama_chat({
model: "llama3.2",
messages: [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "What is Python?" },
{ role: "assistant", content: "Python is a high-level programming language..." },
{ role: "user", content: "What makes it good for beginners?" }
]
})
```
### Model Management
```javascript
// List available models
ollama_list()
// Pull a new model
ollama_pull({ model: "mistral" })
// Get model information
ollama_info({ model: "llama3.2" })
// Delete a model
ollama_delete({ model: "old-model" })
```
### Generate Embeddings
```javascript
// Generate embeddings for semantic search
ollama_embeddings({
model: "nomic-embed-text",
prompt: "The quick brown fox jumps over the lazy dog"
})
```
## Available Models
Popular models you can use:
- `llama3.2` - Fast, efficient general-purpose model
- `deepseek-r1` - Advanced reasoning model
- `mistral` - Efficient 7B parameter model
- `gemma:2b` - Google's small efficient model
- `phi3:mini` - Microsoft's compact model
- `nomic-embed-text` - For generating embeddings
Pull any model with:
```bash
ollama pull <model-name>
```
## Configuration
### Environment Variables
- `OLLAMA_BASE_URL`: Ollama API endpoint (default: `http://localhost:11434`)
### Tool Parameters
#### ollama_generate
- `model`: Model to use (default: "llama3.2")
- `prompt`: Input prompt (required)
- `system`: System prompt (optional)
- `temperature`: Sampling temperature 0-1 (default: 0.7)
- `max_tokens`: Maximum tokens to generate (default: 2048)
- `stream`: Stream responses (default: false)
#### ollama_chat
- `model`: Model to use (default: "llama3.2")
- `messages`: Array of chat messages (required)
- `temperature`: Sampling temperature 0-1 (default: 0.7)
- `max_tokens`: Maximum tokens to generate (default: 2048)
## Troubleshooting
### Ollama not running
If you see "❌ Ollama is not running", start Ollama:
```bash
ollama serve
```
### No models available
Pull a model first:
```bash
ollama pull llama3.2
```
### Different Ollama port
If Ollama runs on a different port, update the config:
```json
{
"env": {
"OLLAMA_BASE_URL": "http://localhost:YOUR_PORT"
}
}
```
## Differences from ELVIS
This MCP server provides direct, synchronous access to Ollama models, unlike ELVIS which uses a delegation/queue pattern. Benefits:
- **Immediate responses**: No waiting for task completion
- **Simpler API**: Direct function calls instead of task management
- **Native chat support**: Built-in conversation handling
- **Model management**: Pull, delete, and inspect models
- **Embeddings support**: Generate embeddings for RAG applications
## Development
### Running in development:
```bash
npm run dev
```
### Building:
```bash
npm run build
```
### Testing:
```bash
# Test generate
curl -X POST http://localhost:11434/api/generate \
-d '{"model": "llama3.2", "prompt": "Hello"}'
# Test chat
curl -X POST http://localhost:11434/api/chat \
-d '{"model": "llama3.2", "messages": [{"role": "user", "content": "Hello"}]}'
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues