MCP с локальными моделями: гайд по настройке инструментов в Ollama и Open Web UI | AiManual
AiManual Logo Ai / Manual.
01 Июн 2026 Гайд

MCP с локальными моделями: как настроить инструменты для Ollama и Open Web UI

Пошаговое руководство по подключению MCP-серверов к локальным LLM через Ollama и Open Web UI. Решаем проблему фейковых вызовов инструментов и настраиваем реальн

Почему MCP с локальными моделями — это не «просто подключил и работает»

Ты запустил Ollama, поднял Open Web UI, выбрал модную Qwen2.5 14B (или Llama 4, если у тебя 48 ГБ VRAM). Просишь модель: «Найди последние коммиты в репозитории pytorch». Она кивает, выплевывает JSON с tool_call, а потом... ничего. Или начинает генерировать текст, в котором подробно описывает, как она «выполнила поиск», хотя на самом деле даже не дернула API.

Я уже писал о том, почему opensource-модели фейкут вызовы инструментов. Проблема не ушла. Но Open Web UI последних версий (с апреля 2026) наконец-то получил встроенную поддержку MCP — Model Context Protocol. И теперь можно замкнуть контур: модель вызывает инструмент, сервер исполняет, результат возвращается. Без вранья.

Этот гайд — именно про то, как это сделать на стеке Ollama + Open Web UI. Без облачных прокси, без кустарных скриптов на Flask. Только local-first, только хардкор.

Что нам нужно, чтобы не ходить по граблям

Мой опыт показывает: половина проблем с MCP в локальном окружении — это не кривые руки, а несовместимость версий. На 1 июня 2026 года актуальный стек выглядит так:

Компонент Минимальная версия Рекомендованная
Ollama 0.5.0 0.5.4+
Open Web UI 0.4.0 0.5.2+
uv (менеджер Python) 0.4.0 0.5.0+
Модель (с tool calling) Qwen2.5 7B, DeepSeek V3, Llama 4 8B Qwen3 14B, DeepSeek R1 32B

Важно: Не смотри на версию Ollama ниже 0.5.0 — function calling там работает через одно место. Обновляйся.

План: от установки до первого реального вызова

1 Ставим uv и MCP-серверы

uv — это быстрый менеджер Python на Rust. Он уже стал стандартом в 2026 году, а pip отправился на пенсию. С его помощью мы развернём MCP-серверы — они будут выполнять реальные вызовы (файловая система, HTTP-запросы, базы данных).

curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
uv --version

Теперь создадим директорию для наших MCP-инструментов и положим туда серверы. Я предпочитаю mcp-server-time (возвращает текущее время) и mcp-server-fetch (HTTP-запросы).

mkdir ~/mcp-servers && cd ~/mcp-servers
uv init .
uv add mcp-server-time mcp-server-fetch
# Проверяем, что серверы запускаются:
uv run mcp-server-time --transport stdio &

Почему stdio? Потому что Open Web UI подключается к MCP-серверам через стандартный ввод/вывод, а не через HTTP. Это безопаснее и не требует портов.

2 Запускаем Ollama с включенным function calling

В новых версиях Ollama function calling включается отдельным флагом --tool-calls при старте сервера. Без этого модель может генерировать JSON, но он никогда не будет исполнен.

# Останавливаем старый ollama serve, если был запущен
pkill ollama
# Запускаем с поддержкой инструментов
ollama serve --tool-calls 2>&1 | tee ~/ollama.log

Проверь в логах строку Tool calling enabled. Если её нет — обновляй Ollama до версии 0.5.4+.

Грабли: Некоторые модели (например, старый Mixtral 8x7B) не умеют реальный tool calling, даже если сервер включён. Используй Qwen2.5, DeepSeek V3 или Llama 4 — они прошли мой тест на честность.

3 Настраиваем Open Web UI для работы с MCP

Open Web UI начиная с версии 0.4.0 имеет раздел Admin Panel → Models → MCP Servers. Там можно добавить свои серверы.

Перейди в этот раздел и нажми «Add MCP Server». Заполни поля:

  • Name: time
  • Command: uv
  • Arguments: run --directory /home/user/mcp-servers mcp-server-time
  • Transport: stdio

Сохрани. Для сервера fetch повтори то же самое, только имя и аргументы другие.

💡
Подробнее про архитектуру подключения читай в статье «MCP для локальных моделей: как настроить сервер». Там разобрана проблема аутентификации.

4 Выбираем модель, которая не врёт

В Open Web UI выбери модель, скачанную через Ollama. Например, qwen3:14b-instruct-q4_K_M (релиз мая 2026). Или llama4:8b-instruct.

Важно: модель должна поддерживать native function calling. Проверить это можно, отправив через API запрос с инструментами и посмотрев, возвращает ли модель tool_call с корректными аргументами. Подробнее про проверку я писал в статье про Qwen3 VL.

5 Тестируем: «Который час?»

Открой чат с новой моделью. Напиши: «Покажи текущее время и дату в формате ISO 8601». Если всё настроено правильно, ты увидишь в логах вызов инструмента get_current_time, а затем ответ с реальным временем с твоего компьютера.

Если модель вместо вызова начинает генерировать текст — скорее всего, она не видит инструменты. Проверь, что MCP-серверы запущены и Open Web UI подцепил их (зелёная иконка в админке).

Разбор типичных ошибок (и как их чинить)

Ошибка 1: «Authentication required» от MCP-сервера

Некоторые MCP-серверы (особенно те, что выдёргивают данные с GitHub или Google Drive) требуют токен даже для локального использования. Выход — запускать их с флагом --no-auth или указывать пустой токен через переменную окружения. Полный разбор этой проблемы — в статье «MCP для локальных моделей: как настроить сервер».

Ошибка 2: Модель генерирует tool_call, но сервер не отвечает

Проблема в рантайме. Ollama должен перехватить JSON-вызов и отправить его на выполнение. Если ты видишь в логах модели валидный JSON, но ответ от сервера не приходит — включи дебаг-режим Ollama: OLLAMA_DEBUG=1 ollama serve --tool-calls. Скорее всего, сервер MCP упал с ошибкой импорта или неправильным путём.

Ошибка 3: Open Web UI не показывает инструменты в чате

Проверь версию: Open Web UI 0.4.0+ поддерживает MCP только для моделей, подключенных через Ollama. Если ты используешь другой провайдер (например, llama.cpp напрямую), MCP может не работать. Читай гайд по подключению MCP-серверов к llama-server — там другой подход.

Продвинутые сценарии: больше, чем часы и погода

Когда базовая связка заработала, можно расширять. Вот что я использую в продакшене (да, локальная LLM в продакшене — это реально):

  • Доступ к файловой системе — MCP-сервер filesystem читает и записывает файлы в разрешённых директориях.
  • Выполнение Python-скриптов — изолированная среда через mcp-sandbox.
  • Управление Docker — контейнеры поднимаются по запросу модели.
  • Slack API — модель отправляет сообщения от твоего имени (через токен, конечно).

Каждый такой сервер запускается аналогично: через uv, с конфигом в Open Web UI. Единственное ограничение — модель должна уметь обрабатывать сложные инструменты с несколькими параметрами. Qwen3 14B справляется на ура, DeepSeek R1 32B — ещё лучше.

Реальный кейс из моего CI: модель (Llama 4 8B) получает задачу «запустить тесты на ветке feature/new-mcp», она вызывает инструмент github_list_commits, потом docker_run с образом, и возвращает лог тестов. Всё локально, без интернета.

Как проверить, что модель не фейкует (и не дать ей это сделать)

Вернёмся к проблеме из моего первого поста. Даже с включённым tool calling некоторые модели имитируют вызов, не запуская сервер. Как отличить реальный вызов от галлюцинации?

  1. Смотри логи MCP-сервера. Если сервер получил JSON-RPC запрос — он выведет его в stderr. Реальный вызов видно.
  2. Ограничь контекст модели. Если модель не может найти ответ сама, но якобы «выполнила поиск» — это обман. Отключи интернет у модели (запусти без MCP-fetch) и попроси что-то, что требует внешних данных. Если она снова сгенерирует JSON с результатами — она фейкует.
  3. Используй строгую схему. Open Web UI передаёт в модель дескрипцию инструментов. Если модель не видит их — она не сможет сформировать правильный tool_call. В моём тесте Llama 4 и Qwen3 никогда не фейкают, а вот старые модели (Mixtral, Mistral 7B) — постоянно.

FAQ: частые вопросы с митапов

Почему Open Web UI не видит мой MCP-сервер?

Проверь путь к uv и аргументы. Команда должна быть абсолютной, без тильды. Используй /home/user/.local/bin/uv.

Можно ли подключать MCP к Ollama через сторонние прокси?

Да, я тестировал mcp-proxy. Но Open Web UI с версии 0.4.0 работает напрямую, без прокси. Это проще.

Какая модель лучше всего для tool calling локально?

На июнь 2026 — Qwen3 14B (инструкт) и DeepSeek R1 8B. Llama 4 8B тоже хороша, но тяжеловата.

Как обновить Open Web UI до версии с MCP?

Если ты ставил через pip: pip install open-webui --upgrade. Если через Docker: docker pull ghcr.io/open-webui/open-webui:main.

Последний совет: не верь модели на слово

Я перепробовал десятки сборок. Самая надёжная — Qwen3 14B на Ollama 0.5.4 с Open Web UI 0.5.2. Все инструменты работают, модель не фейкует. Но не забывай: локальная LLM — это как стажёр. Она может случайно сделать что-то опасное (удалить файл, если ты дал права на запись). Всегда ограничивай MCP-серверы через --allowed-directories и не давай полный доступ к системе.

Если хочешь больше автоматизации — посмотри на Open Cowork или Show UI Aloha. Там те же принципы, но с GUI и готовыми агентами.

А теперь — иди и настрой. Если на каком-то шаге застрянешь, пиши в комменты. Я проверяю каждую неделю.

Подписаться на канал