Skip to content

SergeyLPL/MCP_server

Repository files navigation

MCP Server — Ollama Connector

MCP сервер для работы с локальной LLM Ollama. Позволяет интегрировать AI-модели в ваши проекты через стандартный MCP протокол.

📦 Возможности

Инструмент Описание
chat Отправить запрос к модели и получить ответ
chat_with_history Чат с поддержкой контекста (мультитурновый диалог)
list_models Получить список установленных моделей
pull_model Загрузить новую модель из registry
get_model_info Получить информацию о модели (параметры, шаблон)
embed_text Получить векторное представление текста
delete_model Удалить модель из локального хранилища

🚀 Быстрый старт

1. Запуск Ollama в Docker

# Запуск контейнера с Ollama
docker compose up -d ollama

# Проверка что API работает
curl http://localhost:11434/api/tags

2. Загрузка модели

# Загрузить Llama 3.2
docker exec ollama-server ollama pull llama3.2

# Или использовать скрипт
.\setup.bat

3. Запуск MCP сервера

# Создание виртуального окружения
python -m venv venv
venv\Scripts\activate

# Установка зависимостей
pip install -r requirements.txt

# Запуск MCP сервера
python server.py

🔧 Конфигурация

Создайте файл .env (скопируйте из .env.example):

# URL Ollama API
OLLAMA_BASE_URL=http://localhost:11434

# Модель по умолчанию
DEFAULT_MODEL=llama3.5

# Timeout для запросов (секунды)
REQUEST_TIMEOUT=120

# --- Cloud Models (OpenRouter / OpenAI-compatible)
# API ключ для cloud моделей
CLOUD_API_KEY=your_api_key_here
# Базовый URL cloud API
CLOUD_API_BASE_URL=https://openrouter.ai/api/v1
# Модель cloud по умолчанию
CLOUD_DEFAULT_MODEL=openai/gpt-4o-mini

Для Docker: используйте http://host.docker.internal:11434 если MCP сервер работает в контейнере.

Если CLOUD_API_KEY и CLOUD_API_BASE_URL указаны, chat, chat_with_history и embed_text могут работать с cloud-моделями вида openai/gpt-4o-mini или anthropic/claude-3.5.

📡 Подключение к MCP серверу

Из Qwen Code / Claude Code / других MCP клиентов

Добавьте в конфигурацию MCP клиента:

{
  "mcpServers": {
    "ollama": {
      "command": "python",
      "args": ["c:/Users/sergey.petrov/Documents/Project/MCP_server/server.py"],
      "env": {
        "OLLAMA_BASE_URL": "http://localhost:11434"
      }
    }
  }
}

Пример использования инструментов

Простой чат:

chat(prompt="Объясни что такое рекурсия", model="llama3.2", temperature=0.7)

Чат с историей:

chat_with_history(
  messages='[
    {"role": "system", "content": "Ты помощник разработчика"},
    {"role": "user", "content": "Какие паттерны проектирования ты знаешь?"},
    {"role": "assistant", "content": "Я знаю Singleton, Factory, Observer..."},
    {"role": "user", "content": "Расскажи подробнее про Observer"}
  ]'
)

Список моделей:

list_models()

Загрузка модели:

pull_model(model_name="mistral")

Эмбеддинг текста:

embed_text(text="Это пример текста для векторизации", model="nomic-embed-text")

🐳 Docker Compose

Запуск только Ollama

docker compose up -d ollama

Запуск с WebUI (удобный веб-интерфейс)

docker compose up -d
# WebUI доступен на http://localhost:3000

Остановка

.\stop.bat
# или
docker compose down

Остановка с удалением данных

docker compose down -v

🎯 Доступные модели

Популярные модели для загрузки:

Модель Размер Описание
llama3.2 ~2GB Легковесная версия Llama, быстрее работает
llama3.1 ~4.7GB Полная Llama от Meta
mistral ~4.1GB Mistral 7B, хорошая для кода
codellama ~3.8GB Специализирована для программирования
phi3 ~2.3GB Компактная модель от Microsoft
gemma2 ~2.6GB Лёгкая модель от Google
nomic-embed-text ~274MB Для эмбеддингов (векторных представлений)

🔌 GPU ускорение

Для использования GPU (NVIDIA) раскомментируйте секцию deploy в docker-compose.yml:

deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          count: all
          capabilities: [gpu]

Windows WSL2: GPU должен быть настроен автоматически через WSL2 GPU Paravirtualization.

📁 Структура проекта

MCP_server/
├── server.py              # MCP сервер с инструментами
├── requirements.txt       # Python зависимости
├── docker-compose.yml     # Docker конфигурация
├── .env.example          # Пример конфигурации
├── setup.bat             # Скрипт установки
├── stop.bat              # Скрипт остановки
└── README.md             # Документация

🛠 Интеграция с вашими проектами

Пример использования из Next.js приложения

// lib/ollama.ts
export async function askOllama(prompt: string) {
  const response = await fetch('http://localhost:11434/api/generate', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model: 'llama3.5',
      prompt,
      stream: false
    })
  });
  
  const data = await response.json();
  return data.response;
}

Использование через MCP в других проектах

MCP сервер можно подключить к любому MCP-совместимому клиенту:

  • Qwen Code
  • Claude Desktop
  • Cursor
  • Continue (VS Code extension)
  • И другие

⚠️ Troubleshooting

Ollama не отвечает:

docker ps | grep ollama
docker logs ollama-server

Модель не загружается:

docker exec ollama-server ollama pull llama3.2

Ошибка подключения из MCP:

  • Проверьте что Ollama запущен: curl http://localhost:11434/api/tags
  • Проверьте OLLAMA_BASE_URL в .env

📚 Полезные ссылки

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors