Гайд · grounder

Как дать Ollama доступ в интернет

Ollama отлично гоняет модель локально, но в веб не ходит и MCP-серверы сама не запускает. Разберём, как всё-таки дать ей поиск и чтение страниц.

Что Ollama делает и чего не делает

Ollama - это локальный раннер моделей. Он скачивает веса (Llama, Qwen, Gemma, DeepSeek), поднимает модель у вас на машине и отдаёт ответ по OpenAI-совместимому API на localhost. По сути это всё, что он делает с самой моделью: принимает запрос и генерирует текст.

Чего Ollama не делает: он не открывает сайты и не ходит в веб вместо модели. И, на момент написания, он не выступает MCP-хостом, то есть сам не запускает инструменты вроде веб-поиска. Поэтому «Ollama в интернете» на практике всегда означает связку: Ollama как движок модели плюс отдельный слой, который умеет искать и приносить страницы. Ниже - два реальных способа собрать такую связку и один подвох с окном контекста, о который спотыкается большинство первых попыток.

Зачем это вообще нужно: веса модели зафиксированы на дату обучения. Локальная Llama или Qwen не знает про вчерашний релиз, новый API библиотеки или цену, которая изменилась в прошлом месяце, - и, будучи обученной быть полезной, она заполняет пробел уверенной догадкой вместо честного «не знаю». Живой веб убирает именно это: модель отвечает по тому, что реально нашлось на странице, а не по памяти.

Способ A - собственный веб-поиск Ollama

У Ollama есть свой размещённый в облаке веб-поиск (web search API). Это шаг вперёд по сравнению с тем, чтобы поднимать поиск самому: запрос уходит на серверы Ollama, а обратно приходят результаты со сниппетами. Вызывается он обычным HTTP-запросом:

# схема запроса: docs.ollama.com/capabilities/web-search
import requests

def ollama_web_search(query, api_key):
    r = requests.post("https://ollama.com/api/web_search",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"query": query}, timeout=30)
    r.raise_for_status()
    # вернутся результаты со сниппетами - под окно контекста режете сами
    return r.json()

Что тут важно понимать

Способ B - MCP-клиент поверх Ollama с grounder

Второй путь - не звать поиск из своего кода, а подключить инструменты через MCP (Model Context Protocol). Поскольку сама Ollama MCP-хостом не является, инструменты подключают на уровне клиента: берётся MCP-совместимый клиент, который умеет работать с моделью на Ollama как с бэкендом, и уже в его настройки MCP добавляется grounder. Тогда именно клиент управляет вызовами: модель решает, что ей нужен веб, клиент дёргает нужный инструмент и вплетает результат обратно в диалог.

Конфиг MCP везде одинаковый - один блок:

// MCP-конфиг клиента: LM Studio, Claude Desktop, Cursor
{
  "mcpServers": {
    "grounder": {
      "command": "uvx",
      "args": ["grounder-mcp"],
      "env": { "GROUNDER_API_KEY": "gnd_live_ваш_ключ" }
    }
  }
}

Тонкий клиент grounder-mcp ставится через uvx и просто передаёт вызовы на наши серверы: локально не поднимается ни браузер, ни скрапер. После этого модели доступны инструменты web_search, fetch, deep_search и research, и она отвечает по живым источникам, а не по памяти. Пошаговый разбор подключения - в гайде как подключить нейросеть к интернету.

Окно контекста - почему нельзя просто вывалить страницы

Оба способа упираются в одно и то же ограничение. Локальная модель на Ollama обычно работает с небольшим окном контекста. Если по запросу скачать пару-тройку полных веб-страниц и целиком вложить их в промпт, это легко перевалит за 20 000 токенов и переполнит окно. Модель при этом не «отвечает хуже» - она возвращает ошибку длины контекста или пустоту.

Лекарство одно: возвращать модели не сырые страницы, а пакет с урезанием по токенам - только релевантные фрагменты со ссылками на источники. У способа A этот шаг остаётся на вас. grounder делает его сам: deep_search ищет, открывает несколько страниц, ранжирует их и отдаёт пакет, укладывающийся в заданное окно (например, 8k). Поэтому маленькая модель получает ровно то, что помещается и относится к делу.

Что выбрать - сравнение

 Способ A: веб-поиск OllamaСпособ B: MCP-клиент + grounder
Что делаетпоиск, возвращает сниппетыпоиск + открывает и чистит страницы + ранжирует
Кто управляет вызовомваш код или агент, который вы пишетеMCP-клиент, модель сама решает вызвать инструмент
Под маленькое окнорежете самиготовый пакет, урезанный под окно
Что нужно завестибесплатный аккаунт и ключ Ollamaбесплатный ключ grounder
Закрытые в РФ сайтынужен доступ к ollama.comчитает снаружи РФ, без VPN

Если вам просто нужна строка поиска в своём агенте и вы сами соберёте обвязку под контекст - подойдёт способ A. Если хочется, чтобы модель сама вызывала инструменты, получала готовый под окно текст и читала в том числе закрытые в РФ источники, - ближе способ B.

Почему это работает из России без VPN

Ключевой момент способа B: искать и читать веб будет не ваш компьютер, а серверы grounder за пределами России. Вашей машине нужно дотянуться только до grounder.dev, а дальше заблокированные у вас сайты открываем мы и отдаём модели уже готовый чистый текст. Поэтому VPN не нужен - туннель на весь трафик тут лишний. Подробный разбор этой логики - в гайде веб-поиск для локальной LLM без VPN.

Честная граница: это решает повседневные блокировки, а не полное отключение интернета. Пока ваша сеть дотягивается до наших серверов, всё работает; если оператор оставит только белый список российских доменов, наружу не пробьётся никто, и grounder тоже.

grounder - наш продукт, так что интерес у нас есть. Но факты вокруг верны независимо от инструмента: у Ollama действительно есть собственный веб-поиск, окно контекста маленькой модели действительно переполняется сырыми страницами, а читать закрытые сайты можно только оттуда, где они не заблокированы. Версии API и детали сверяйте с официальной документацией Ollama.

Частые вопросы

Умеет ли Ollama искать в интернете сама?

Нет. Ollama запускает модель, но не ходит в веб и не запускает инструменты. Поиск подключают через MCP-совместимый клиент поверх Ollama.

Нужен ли VPN для доступа Ollama в интернет?

Нет. grounder читает страницы снаружи России, вашей машине достаточно доступа к grounder.dev.