MCP (Model Context Protocol)
Это открытый протокол, разработанный Anthropic, для подключения LLM к внешним инструментам.
Идея простая: вместо того чтобы модель была ограничена только текстом, она может вызывать функции — читать файлы, делать запросы, работать с БД и т.д.
В веб-UI llama.cpp это работает так: ты указываешь MCP-сервер (процесс, который запускается рядом), и модель видит его инструменты как доступные функции. Во время разговора она сама решает когда и какой инструмент вызвать.
Как это выглядит в практике:
Ты спрашиваешь: «Найди все функции в проекте, которые не имеют тестов» — модель сама читает файлы через MCP и отвечает на основе реального кода.
Полезные MCP-серверы для программирования:
Сервер: filesystem
Что делает: Читает/пишет файлы проекта — основа для работы с кодом
────────────────────────────────────────
Сервер: git
Что делает: git log, git diff, git blame — контекст из истории репозитория
────────────────────────────────────────
Сервер: github
Что делает: Issues, PR, code search через GitHub API
────────────────────────────────────────
Сервер: fetch
Что делает: Загружает веб-страницы — документация, Stack Overflow
────────────────────────────────────────
Сервер: sqlite / postgres
Что делает: Прямые SQL-запросы к базе данных
────────────────────────────────────────
Сервер: sequential-thinking
Что делает: Структурированное пошаговое рассуждение (улучшает качество на сложных задачах)
────────────────────────────────────────
Сервер: memory
Что делает: Knowledge graph — модель запоминает факты между сессиями
────────────────────────────────────────
Сервер: brave-search
Что делает: Поиск в интернете (нужен API-ключ)
────────────────────────────────────────
Сервер: puppeteer
Что делает: Управление браузером — можно тестировать веб-интерфейсы
Важный нюанс
Качество работы с MCP сильно зависит от модели. Gemma 4 E4B поддерживает tool use, но небольшая модель может ошибаться в выборе инструментов или формате вызова. На практике MCP лучше всего работает с более крупными моделями (14B+). Для Jetson с Qwen2.5-14B это будет работать заметно надёжнее.
Как работает MCP в связке с llama.cpp
Ключевое понимание: MCP работает на стороне клиента, не на сервере где запущен llama.cpp.
┌─────────────────────────────────────────────┐
│ Клиент (твой компьютер / Open WebUI) │
│ │
│ ┌─────────────┐ ┌────────────────────┐ │
│ │ MCP Host │◄──►│ MCP Servers │ │
│ │ (WebUI) │ │ - filesystem │ │
│ └──────┬──────┘ │ - git │ │
│ │ │ - postgres │ │
│ │ └────────────────────┘ │
└─────────┼───────────────────────────────────┘
│ API (tool calls + results)
▼
┌─────────────────┐
│ Jetson │
│ llama-server │ ← просто inference engine
│ :8080 │ не знает о MCP вообще
└─────────────────┘
Jetson только генерирует токены. Он говорит клиенту: “вызови функцию read_file(“/etc/nginx”)” — клиент сам идёт в MCP сервер и выполняет, потом возвращает результат модели.
Доступ к ресурсам
┌────────────┬────────────────┬─────────────────────────────┐
│ MCP сервер │ Где запущен │ Что видит │
├────────────┼────────────────┼─────────────────────────────┤
│ filesystem │ твой компьютер │ твои локальные файлы │
├────────────┼────────────────┼─────────────────────────────┤
│ filesystem │ Jetson │ файлы Jetson │
├────────────┼────────────────┼─────────────────────────────┤
│ git │ твой компьютер │ твои репозитории │
├────────────┼────────────────┼─────────────────────────────┤
│ postgres │ любой сервер │ БД куда есть сетевой доступ │
├────────────┼────────────────┼─────────────────────────────┤
│ memory │ твой компьютер │ локальное хранилище │
└────────────┴────────────────┴─────────────────────────────┘
Если Open WebUI запущен на твоём компьютере — MCP серверы запускаются там же, видят твою файловую систему, могут подключаться к postgres на любом третьем сервере по сети.
llama.cpp built-in UI vs Open WebUI
Встроенный UI llama.cpp — поддержка MCP есть в настройках, но реализована через HTTP/SSE транспорт (браузер не может запускать stdio-процессы напрямую). Нужно отдельно поднимать MCP серверы как HTTP сервисы. Это неудобно, мало кто так делает.
Open WebUI — полноценная MCP интеграция, запускает MCP серверы как локальные процессы, есть готовые пресеты. Практически это лучший выбор если нужен MCP.
Итог
Для твоей задачи (filesystem + git + postgres + memory) правильная схема:
- Open WebUI на твоём компьютере → подключается к llama.cpp на Jetson как backend
- MCP серверы запускаются локально на твоём же компьютере
- postgres MCP подключается к БД на третьем сервере по сети
Jetson при этом остаётся чистым inference backend — никаких изменений в его конфигурации не нужно.