Что такое MCP

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) правильная схема:

  1. Open WebUI на твоём компьютере → подключается к llama.cpp на Jetson как backend
  2. MCP серверы запускаются локально на твоём же компьютере
  3. postgres MCP подключается к БД на третьем сервере по сети

Jetson при этом остаётся чистым inference backend — никаких изменений в его конфигурации не нужно.