Коротко: Agent умеет писать код, но не видит ваши GitHub Issues, схему БД и внутреннюю документацию — проблема часто не в модели, а в том, что никто не объяснил, откуда берутся данные. Статья начинается с протокола MCP: слои архитектуры, три примитива Tools / Resources / Prompts, stdio и HTTP, затем примеры настройки и чек-лист для Cursor и Claude Code. После прочтения вы сможете самостоятельно подключить типовые источники без glue-кода для каждого SaaS.
Материалы серии: инструкция по установке MCP в Claude Code · 20 рекомендуемых MCP Server · минимальная экспозиция прав MCP
Что такое MCP? Какую проблему решает?
Model Context Protocol (MCP) — открытый стандарт, опубликованный Anthropic в конце 2024 года. Цель: AI-приложения (Host) должны единым и аудируемым способом подключаться к внешнему миру — репозитории, БД, документация, тикеты, браузер — без custom-интеграции на каждый источник.
До MCP команды обычно шли одним из двух путей:
- Ручное копирование контекста — ссылки на issues, SQL-результаты, ответы API в чат. Точно, но медленно и не масштабируется.
- Собственный Function Calling — schema и auth для GitHub, Postgres, Notion по отдельности. Гибко, но дорого в поддержке; смена клиента (Cursor → Claude Code) часто означает переписывание.
MCP — третий путь: стандартизация интерфейса «источник данных ↔ Agent». Настроили GitHub MCP один раз — Cursor, Claude Code, VS Code Copilot и OpenAI Codex могут переиспользовать; сообщество поддерживает тысячи готовых Server для SaaS и dev-tools.
В одном предложении
MCP — не сама LLM, а «USB-порт» Agent: Host рассуждает и планирует, MCP Server превращает внешние данные в структурированные вызываемые возможности. Смена модели или клиента? Настройка источников может переехать вместе с вами.
Три слоя: Host, Client, Server
Для настройки MCP сначала разберите три роли:
| Роль | Типичный пример | Обязанности |
|---|---|---|
| Host | Cursor, Claude Code, Claude Desktop, VS Code | UI чата, оркестрация модели, решение вызывать ли MCP tools |
| Client | Встроенный MCP-коннектор Host | Сессия с Server, передача tools/list, tools/call и JSON-RPC |
| Server | GitHub MCP, Context7, Supabase MCP, свой Server | Tools / Resources / Prompts, чтение/запись данных и вызовы API |
Типичная цепочка: в Cursor спрашиваете «Какие файлы изменил PR #42?» → Host → модель выбирает mcp__github__get_pull_request → Client отправляет через stdio или HTTP в GitHub MCP → Server вызывает GitHub API → структурированный JSON → ответ на основе реальных данных.
Важно: вы настраиваете подключение к Server (команда, URL, переменные окружения). Host автоматически обнаруживает tools — не нужно вручную вставлять API-доку в prompt: при старте Server через tools/list отдаёт список возможностей.
Три примитива: Tools, Resources, Prompts
MCP Server предоставляет три типа возможностей — разные паттерны подключения источников:
Tools — «дать Agent выполнять действия»
Самый частый случай. У каждого Tool есть имя, описание и input schema (JSON Schema); Agent вызывает по необходимости. Примеры: GitHub MCP search_code, Playwright MCP browser_click, DB MCP execute_query.
При настройке источников: ~90 % сценариев — Tool-ориентированные Server: чтение repo, запрос таблиц, HTTP, управление браузером.
Resources — «статический контекст для чтения»
Resources — адресуемые фрагменты данных, как read-only файлы с URI. Server объявляет file://docs/api.md или db://schema/users; Host может загрузить содержимое до или во время диалога — без угадывания, какой Tool вызвать.
Подходит для: README, OpenAPI spec, снимок схемы БД, шаблонов конфигурации — знания относительно стабильные и перечислимые.
Prompts — «готовые точки входа в workflow»
Server может отдавать именованные шаблоны prompt (с параметрами) — «Code Review», «скрипт миграции» и т. п. В сообществе используются реже Tools, но удобны для упаковки командных SOP.
От источника данных к Agent: причинно-следственная цепочка настройки
Рекомендуемый порядок
- Сначала один read-only источник
- Прогнать реальную задачу
- Затем добавить write-Server
Типичные ошибки
- 10+ Server сразу
- Prod-БД с write-DSN
- Никогда не проверять после настройки
Типы источников и типичные MCP Server
Таблица связывает «что хочу подключить» с «какой Server». Полный список из 20: рекомендуемые MCP Server 2026.
| Тип источника | Типичный MCP Server | Основные возможности (Tools) | Аутентификация |
|---|---|---|---|
| Репозиторий кода (GitHub) | GitHub MCP (официальный) | Чтение файлов, поиск кода, Issues/PR, статус CI | OAuth Remote или fine-grained PAT |
| Локальная семантика кода | CodeGraph MCP | Навигация по символам, анализ зависимостей | Локальный индекс, без remote token |
| Документация библиотек / фреймворков | Context7 | Официальные docs по lib и версии | API Key (Remote) |
| Реляционная БД | Supabase MCP / DBHub | Чтение schema, выполнение SQL | OAuth или read-only DSN |
| Веб / публичные API | Fetch MCP | HTTP GET → Markdown | Нет (контролируемый egress) |
| Браузер / проверка UI | Playwright MCP | Клики, формы, a11y-дерево | Локальный процесс |
| Тикеты / collaboration | Linear / Notion / Slack MCP | Issues, страницы, сообщения | OAuth Remote |
| Мониторинг ошибок | Sentry MCP | Stack traces, статус issues | OAuth Remote |
Принцип выбора
Выбирайте по workflow, а не по рейтингу «всё сразу». Full-stack: Context7 + GitHub + Playwright закрывают ~80 %; backend + Supabase; Linear MCP — если команда им пользуется. Одновременно активно: 3–7 Server.
Транспортный слой: stdio или HTTP?
Client и Server MCP обмениваются JSON-RPC 2.0. В 2026 доминируют два транспорта:
stdio (стандартный ввод/вывод)
Host запускает Server как subprocess, напр. npx -y @modelcontextprotocol/server-github, сообщения через stdin/stdout. Плюсы: простая config, без открытых портов, удобно локально. Минусы: процесс на Server; полные Docker-версии могут превысить лимит Cursor ~40 tools.
Streamable HTTP / SSE (Remote)
Server удалённо или официально хостится; Client по HTTPS, часто OAuth. GitHub, Supabase, Linear, Sentry предлагают Remote-варианты. Плюсы: компактные наборы tools, без локального Node/Docker, tokens через OAuth. Минусы: зависимость от сети; в корп. сети проверьте egress.
| Сценарий | Рекомендуемый транспорт | Причина |
|---|---|---|
| Cursor + GitHub | Remote HTTP (OAuth) | Локальная полная версия с 40+ tools превышает лимит |
| Claude Code + CodeGraph | stdio (codegraph mcp) |
Локальный индекс repo, нужна та же машина |
| Внутренний custom-источник | stdio или внутренний HTTP | Данные не покидают сеть, аудируемо |
| Единый SaaS для команды | Remote HTTP | Без локальных зависимостей, централизованные права |
Настройка источников в Cursor
Cursor: Settings → MCP или ~/.cursor/mcp.json. Структура: объект mcpServers, одна запись на Server.
Пример 1: локальный stdio — Fetch MCP
{
"mcpServers": {
"fetch": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-fetch"]
}
}
}
Пример 2: локальный stdio — GitHub MCP (PAT)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
}
}
}
}
Лучше: официальный GitHub Remote MCP в UI Cursor (OAuth) — меньше tools, PAT не в JSON. PAT fine-grained read-only; не коммитить в git.
Пример 3: Context7 (источник документации)
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
После сохранения перезапустите Cursor; Settings → MCP — статус Connected зелёный. В Agent-режиме: «синтаксис middleware Next.js 15?» — при правильной config модель вызовет Context7, а не выдумает API.
Настройка источников в Claude Code
Claude Code: ~/.claude.json (пользователь) или .mcp.json в корне проекта. Структура похожа на Cursor, пути немного отличаются.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
}
},
"codegraph": {
"command": "codegraph",
"args": ["mcp"]
}
}
}
После изменений полностью выйдите из Claude Code и запустите снова; в корне repo выполните claude, в сессии введите /mcp — список Server и tools. Успех: префиксы mcp__github__*, mcp__codegraph__*.
Пошагово: инструкция по установке MCP в Claude Code; обзор архитектуры: цепочка MCP GitHub Files API.
Уровень проекта vs пользователя: куда писать config?
| Расположение | Cursor | Claude Code | Когда использовать |
|---|---|---|---|
| Пользователь (глобально) | ~/.cursor/mcp.json |
~/.claude.json |
Личные Server: Context7, GitHub, Fetch |
| Проект (repo) | .cursor/mcp.json |
.mcp.json |
Команда: CodeGraph, внутренний API, project DB |
Best practice: credentials и личные предпочтения на уровне пользователя (не в git); источники, привязанные к repo (путь CodeGraph, project docs Server) в .mcp.json с commit — clone-and-go для команды. Чувствительные tokens через env, напр. "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PAT}" }, инжект из shell или CI.
Проверка: Agent действительно использует источник
Настроено ≠ работает. Чек-лист:
- Связь — Cursor: MCP зелёный в Settings; Claude Code:
/mcpбез error. - Tools видны — целевой tool существует, напр.
mcp__github__search_code. - Smoke-тест — чёткая инструкция: «Список open issues этого repo через GitHub MCP» или «Context7: последний синтаксис Prisma migrate».
- Ошибки наблюдаемы — если Agent не вызывает tools: слишком много tools, размытая задача; уточните «использовать GitHub MCP».
- Граница прав — запрещённое действие (удалить repo) должно вернуть 403, а не тихий «OK».
Лимит tools
В Cursor около 40 tools. Один полный локальный GitHub MCP может отдать 40+ — используйте официальный Remote slim или отключайте лишние Server. Слишком много tools: неверный выбор и трата контекстных токенов.
Права и границы безопасности
Каждый источник открывает Agent дверь во внешние системы. Принцип: по умолчанию read-only, запись явно, production изолирован.
- GitHub PAT — fine-grained token, только целевые repos; Issues/Contents read-only хватает для большинства dev-сценариев.
- DB DSN — dev-БД с read-only ролью; никогда не класть prod write-DSN в project config.
- Filesystem MCP — ограничить
argsкорнем проекта, не$HOMEи не/. - Внутренние API — staging read-only; workspace Claude без prod
.env.
Матрица стратегий и цепочки атак: минимальная экспозиция прав MCP.
Типичные неполадки
| Симптом | Возможная причина | Действие |
|---|---|---|
| Пустой список tools | Ошибка JSON; Host не перезапущен | Проверить JSON; полностью перезапустить Cursor / Claude Code |
| GitHub 401 / 403 | PAT истёк или repo не авторизован | Пересоздать token; проверить scope repo |
| CodeGraph пустой | Не из корня repo; нет индекса | codegraph init -i; проверить cwd |
| Agent никогда не вызывает MCP | Слишком много tools; размытая задача | Уменьшить число Server; назвать tool в prompt |
| Таймаут npx | Первый download медленный; нет Node | Предустановить deps; node -v |
Частые вопросы
Чем MCP отличается от Function Calling?
Function Calling объявляет tools в одном API-запросе, часто привязан к модели/вендору. MCP — постоянное подключение к Server и открытый протокол: одна настройка, много клиентов, экосистема сообщества. MCP ≈ стандартизированный сменяемый runtime для Function Calling.
Можно ли написать свой MCP Server?
Да. Официальные SDK: TypeScript (@modelcontextprotocol/sdk), Python и др. Типично: внутренний wiki, ticketing API, data lake. Минимум: tools/list и tools/call, stdio — отладка в Cursor.
Отправляет ли MCP данные вендору модели?
Результаты tool-вызовов попадают в контекст диалога и уходят с запросом в LLM API Host — это необходимо для работы Agent. MCP сам ничего «лишнего» не загружает; риск = какие права вы дали Server. Minimal privilege ограничивает поверхность.
Какие источники подключать первыми в 2026?
Обычно Context7 (docs) + GitHub (repo) + Playwright (браузер). Backend: Supabase или DBHub; Linear/Notion — если команда ими пользуется. Подробнее: 20 рекомендуемых MCP Server.
ZavCloud Cloud Mac
Прогон MCP + Agent workflow на настоящем macOS
Выделенный Mac mini: локальный индекс CodeGraph, MCP-цепочка Claude Code, GitHub Runner CI — разработка, проверка и автоматизация на одной машине.
Начать настройку