Model Context Protocol · гайд 2026
Как создать MCP-сервер с нуля: пошаговый гайд для Cursor, Claude и автоматизации
FastMCP, MCP Inspector и подключение tools к ИИ-агентам — пошагово для бизнеса и вайбкодинга
MCP и автоматизация — Maya ProКоротко: MCP-сервер — это ваш «переводчик» между ИИ-агентом и бизнес-системами. За 30–60 минут на FastMCP можно собрать рабочий сервер с двумя-тремя tools, проверить его в MCP Inspector и подключить к Cursor или Claude — без полноценного бэкенд-опыта.
Если вы уже пользуетесь Cursor для вайбкодинга или Claude для рабочих задач, рано или поздно упираетесь в потолок: модель «знает» текст, но не видит вашу CRM, Wordstat, таблицы и сценарии Make. Готовые MCP из каталогов закрывают часть задач, но свой сервер даёт контроль над логикой, безопасностью и формулировками tools под ваш бизнес.
Этот гайд — про создание сервера, а не про агентный режим Cursor 3.x. Мы идём по цепочке: понять протокол → написать код → отладить → подключить → встроить в автоматизацию контента и маркетинга.
# 1. код tools + docstring
$ npx @modelcontextprotocol/inspector
# 2. проверка схем до IDE
$ cursor . # 3. .cursor/mcp.json → tool_call
Что такое MCP и зачем бизнесу свой сервер
MCP-сервер простыми словами: MCP (Model Context Protocol) — открытый протокол, через который ИИ-клиент (Cursor, Claude) подключается к внешним инструментам и данным. Сервер — программа, которая отдаёт агенту tools (действия), resources (контекст только для чтения) и prompts (шаблоны запросов) по единому стандарту. Официально его описывают как «USB-C для ИИ»: один раз подключили — работает с разными клиентами.
Маркер: простыми словами. MCP (Model Context Protocol) — это договорённость, по какому формату ИИ-приложение просит внешнюю программу выполнить действие и получить ответ. Внутри используется JSON-RPC 2.0: клиент шлёт запрос, сервер возвращает структурированный результат.
Model Context Protocol простыми словами
Запросы вроде «mcp сервер что это» и «model context protocol» ведут к одной сути. Протокол не заменяет ваш API — он оборачивает его в понятные для модели инструменты с описаниями. Агент читает название tool, параметры и docstring, решает, что вызвать, и получает ответ в предсказуемом виде.
Для маркетолога, контент-специалиста или предпринимателя это значит: можно дать Claude или Cursor доступ к Wordstat, CRM или webhook Make, не копируя ключи в чат и не объясняя каждый раз структуру API.
Как устроены host, client и server
Схема из трёх ролей:
- Host — приложение, где вы работаете: Cursor, Claude Desktop, Claude Code.
- Client — модуль внутри host, который говорит с сервером по протоколу.
- Server — ваша программа с tools, которую вы пишете или подключаете.
Поток выглядит так: вы формулируете задачу → модель выбирает tool → client отправляет вызов на server → server ходит в ваш API или базу → результат возвращается в чат. Эта цепочка host → client → server — базовая схема для любого MCP server creating.
Маркер: простыми словами. Host — это «дом» для ИИ (редактор или чат). Client — посредник, который знает протокол. Server — ваш код с бизнес-логикой: получить метрики, создать лид, дернуть webhook.
Архитектура MCP
Host → Client → Server: поток JSON-RPC
Протокол строится на JSON-RPC 2.0: host (Cursor, Claude) запускает client, client шлёт запросы на ваш server — тот выполняет tool или отдаёт resource и возвращает структурированный ответ.
- Host — IDE или чат, где вы формулируете задачу агенту.
- Client — модуль протокола: инициализация, список tools, вызовы.
- Server — ваш FastMCP-код: бизнес-логика и доступ к API.
Дальше разберём, чем MCP отличается от «просто API» и плагина одной платформы.
Чем MCP отличается от «просто API» и плагина
| Обычный REST API | Плагин одной платформы | MCP-сервер | |
|---|---|---|---|
| Кто вызывает | Ваш код / скрипт | Только эта платформа | Любой совместимый клиент |
| Как модель узнаёт о методах | Нужен промпт или RAG со Swagger | Встроено в плагин | Автогенерация схем из кода |
| Повторное использование | Интеграция на каждый сервис | Привязка к вендору | Один сервер — Cursor и Claude |
Зачем создавать свой MCP, а не вызывать API вручную: свой сервер даёт типизированные tools с описаниями — модель выбирает действие по смыслу задачи, а не по сырому REST. Проще спрятать ключи (middleware, переменные окружения) и переиспользовать одну обвязку в разных IDE.
MCP vs плагин: плагин живёт внутри одного продукта. MCP — стандарт: написали один раз — подключили в Cursor, Claude Desktop и другие клиенты с поддержкой протокола.
Что понадобится перед разработкой
Python, Node или другой стек — что выбрать новичку
Официальные SDK первого уровня: TypeScript, Python, C#, Go. Для русскоязычного вайбкодинга и гайдов чаще всего выбирают Python + FastMCP: мало boilerplate, декоратор @mcp.tool(), автогенерация JSON Schema из type hints.
Node уместен, если вся ваша инфраструктура на JavaScript. Для первого сервера разумный путь — Python 3.10+, менеджер пакетов uv или pip, виртуальное окружение.
Cursor, Claude Desktop и Claude Code — где потом подключим сервер
- Cursor —
.cursor/mcp.jsonв проекте или глобально в домашней папке. - Claude Desktop —
claude_desktop_config.json(путь зависит от ОС). - Claude Code — конфигурация MCP для командной работы в терминале.
Важно: тема этой статьи — разработка mcp сервера, а не настройка агентов Cursor. После сборки сервера вы подключите его в эти клиенты одной и той же логикой command/args/env или через URL для HTTP.
Локальный сервер или облако: когда нужен Docker
Для обучения и личных задач достаточно локального mcp сервера на stdio: Cursor сам запускает процесс. Docker и облако нужны, когда:
- сервером пользуется команда без общего ноутбука;
- нужен Streamable HTTP с аутентификацией;
- интеграция с 1С или CRM уже живёт в контейнере.
На старте не усложняйте: сначала stdio + Inspector, потом перенос в Docker.
Создаём первый MCP-сервер на FastMCP
Коротко: минимальный рабочий сервер — два tool с понятными docstring, проверка в Inspector, затем запись в mcp.json.
Маркер: простыми словами. FastMCP — Python-фреймворк для быстрой разработки MCP-серверов. Вы описываете функцию с типами и текстом помощи, фреймворк превращает её в tool, который видит агент.
Установка FastMCP и структура проекта
Создайте папку проекта и установите зависимости:
mkdir my-mcp-server && cd my-mcp-server
uv init
uv add fastmcp
Базовая структура:
my-mcp-server/
main.py # сервер и tools
pyproject.toml
.env # секреты (не коммитить)
В main.py — экземпляр FastMCP и первый tool. FastMCP также встроен в официальный Python SDK (from mcp.server.fastmcp import FastMCP); для гайда удобен отдельный пакет fastmcp с расширенными возможностями mount и middleware.
Первый tool с docstring и типами Pydantic
from fastmcp import FastMCP
mcp = FastMCP("business-helper")
@mcp.tool()
def get_wordstat_summary(phrase: str, region: int = 225) -> dict:
"""Возвращает топ запросов и частотность по фразе из Wordstat.
Используй, когда пользователь спрашивает про спрос на ключевое слово в РФ."""
return {"phrase": phrase, "region": region, "top": []}
Правила хорошего первого tool:
- Имя отражает результат (
get_wordstat_summary, неsearch_api). - Docstring объясняет, когда агент должен вызывать tool — это важнее кода.
- Типы (str, int, Pydantic-модели) попадают в JSON Schema автоматически.
Маркер: простыми словами. Tool в MCP — это именованное действие, которое модель может вызвать сама. У каждого tool есть описание и список параметров; агент сопоставляет вашу задачу с подходящим инструментом.
Второй tool под бизнес-задачу (пример: CRM или таблица)
Добавьте outcome-oriented tool — ориентированный на результат, а не на сырой метод API:
@mcp.tool()
def create_crm_draft(company: str, contact_email: str, note: str = "") -> dict:
"""Создаёт черновик лида в CRM. Вызывай, когда нужно сохранить контакт из переписки."""
return {"status": "draft", "company": company, "email": contact_email}
Антипаттерн — обернуть каждый REST-endpoint в отдельный tool: агент теряется в десятках однотипных вызовов. Практическая эвристика из опыта CRM-интеграций: если tools больше десяти, вы, скорее всего, проектируете API, а не MCP. Цельтесь в 3–5 сценарных tools на один домен.
Третий tool логично сделать под автоматизацию — например, trigger_make_scenario(scenario_id, payload) для webhook Make.com.
Транспорт: stdio и HTTP
Актуальная спецификация MCP (ревизия 2025-11-25) стандартизует два транспорта: stdio и Streamable HTTP. Устаревший вариант HTTP+SSE из ранних туториалов заменён; старые статьи могут ссылаться на SSE — ориентируйтесь на Streamable HTTP.
Локальный запуск через stdio для Cursor
При stdio клиент запускает сервер как подпроцесс и обменивается сообщениями через stdin/stdout. Критичное правило: в stdout нельзя писать ничего, кроме валидных MCP-сообщений — отладочные print ломают JSON-RPC. Логи отправляйте в stderr.
fastmcp run main.py
HTTP-транспорт для удалённого доступа и uvicorn
Для команды и удалённого доступа поднимайте Streamable HTTP:
uvicorn main:mcp --port 3000 --reload
Endpoint обычно один — например http://localhost:3000/mcp. POST и GET, опционально SSE внутри streamable-протокола. Для локальной разработки bind на localhost; в продакшене — валидация Origin и аутентификация.
Маркер: простыми словами. Streamable HTTP — способ общения с MCP-сервером по сети через один URL. Удобно, когда сервер в Docker или на VPS, а Cursor и Claude подключаются как к «удалённому инструменту».
Когда какой вариант выбрать
| Ситуация | Транспорт |
|---|---|
| Личная разработка, секреты в env | stdio |
| Несколько сотрудников, один сервер | Streamable HTTP |
| Интеграция с 1С/CRM в контейнере | HTTP + Docker |
| Быстрый прототип в Cursor | stdio |
Decision tree: начните со stdio → убедитесь в Inspector → при необходимости вынесите в HTTP с middleware для API-ключей в заголовках.
Отладка в MCP Inspector до подключения к IDE
Не подключайте сырой сервер сразу в Cursor: сначала MCP Inspector — официальный инструмент отладки, который вызывает tools до связки с IDE.
Установка и первый запуск Inspector
npx @modelcontextprotocol/inspector
Для stdio укажите команду запуска сервера; для HTTP — URL вроде http://localhost:3000/mcp с типом Streamable HTTP. UI по умолчанию на порту 6274. Подробности — в документации Inspector.
На вкладках Tools / Resources / Prompts вы увидите список tools и сможете вызвать их вручную.
Чек-лист: схема tool, ошибки типов, пустой результат
Перед mcp.json проверьте:
- Каждый tool открывается и возвращает JSON (не пустую строку).
- Обязательные параметры отмечены в схеме; опциональные имеют defaults.
- Ошибки API оборачиваются в понятный текст для модели, а не в traceback.
- Docstring читается как инструкция для агента: «когда вызывать».
Типичные ошибки FastMCP и как их избежать
Сводка практик из русскоязычных разборов и спецификации:
- Слишком много мелких tools — объединяйте в сценарные.
- Слабые описания — конечный пользователь tool это агент, не человек; пишите для LLM.
- Нет аннотаций поведения — в спецификации есть ToolAnnotations (
readOnlyHint,destructiveHint): подсказки клиенту, можно ли действие без подтверждения. - Сырые ошибки HTTP — возвращайте структуру
{ "error": "...", "hint": "..." }. - Логи в stdout при stdio — только stderr.
Подключение MCP-сервера в Cursor
Файл mcp.json и путь к серверу
В корне проекта создайте .cursor/mcp.json:
{
"mcpServers": {
"business-helper": {
"command": "uv",
"args": ["run", "fastmcp", "run", "main.py"],
"env": {
"WORDSTAT_TOKEN": "${env:WORDSTAT_TOKEN}"
}
}
}
}
Cursor поддерживает stdio, SSE (legacy) и Streamable HTTP. Для удалённого сервера — блок url и headers. Интерполяция: ${env:NAME}, ${workspaceFolder}, ${userHome}. Актуальные поля — в документации Cursor MCP.
Проверка: агент видит tools и вызывает их
После сохранения конфига откройте Output → MCP Logs. В чате попросите: «Покажи топ запросов по фразе X через Wordstat». Модель должна предложить вызов tool (по умолчанию с подтверждением). Если tools не видны — проверьте путь, venv и логи Inspector ещё раз.
Переменные окружения и API-ключи через middleware
Не храните ключи в коде. Для HTTP-сервера используйте middleware FastMCP (on_call_tool): читайте заголовок Authorization или кастомный X-API-Key, кладите токен в context.state, используйте внутри tool. Для stdio — только env в mcp.json или envFile.
Подключение в Claude и Claude Code
Claude Desktop: конфиг MCP-серверов
В claude_desktop_config.json секция mcpServers с той же логикой command / args / env, что и в Cursor. Перезапустите Claude Desktop после изменений.
Claude Code и командная работа
Claude Code позволяет подключать MCP для сценариев в терминале и совместной разработки. Конфигурация зависит от версии CLI; принцип тот же: stdio для локального сервера, URL для удалённого.
Один и тот же сервер в Cursor и Claude
Главное преимущество MCP: один сервер — несколько клиентов. Вы поддерживаете один main.py, а маркетолог открывает Claude, разработчик — Cursor. Для HTTP-варианта команда подключается к одному endpoint; секреты — на уровне reverse proxy или middleware.
Бизнес-кейсы: Wordstat, Make, CRM и 1С
Блок закрывает запросы «mcp сервер для 1с», «яндекс mcp сервер», «mcp серверы для вайб кодинга» — без ухода в узкую нишу одного вендора.
MCP для Wordstat и SEO-автоматизации
Для сбора семантики агенту нужен tool уровня «получить топ фраз и частотность», а не низкоуровневый вызов API. Готовые open-source серверы (например, реализации на FastMCP для Yandex Wordstat) можно взять как образец архитектуры или форкнуть под свой OAuth. Свой сервер оправдан, если нужны фильтры, регионы и формат отчёта под ваш контент-завод.
Связка с SEO: MCP KV в пайплайне контент-офиса — тот же принцип: Wordstat → ядро → текст. Научившись писать сервер, вы понимаете, как автоматизировать исследование ключей из Cursor.
Webhook и сценарии Make.com
У Make есть облачный MCP-сервер (Streamable HTTP, OAuth) для запуска сценариев из агента. Это другой уровень, чем свой сервер с tool trigger_webhook: готовый MCP — быстрый старт; свой — полный контроль над payload и валидацией. Для контент-завода часто достаточно пары tools: «отправить черновик в Telegram», «добавить строку в Google Sheets».
Идеи для 1С и Битрикс24 без ухода в узкую нишу
Запрос «mcp сервер для 1с» (~365 показов/мес. в Wordstat) отражает спрос на мост между учёткой и ИИ. Архитектурно: расширение или HTTP-прокси в 1С + Python MCP с 3–5 tools (get_stock, create_order_draft). Для Битрикс24 опыт внедрений показывает: pre-authenticated токены в конфиге надёжнее «чистого» OAuth на всех клиентах; не копируйте REST 1:1 — делайте сценарные tools.
MCP и вайбкодинг: свой стек под контент-завод
Вайбкодинг — когда вы описываете задачу, а Cursor собирает код. Свой MCP замыкает цикл: агент не только пишет текст, но и дергает ваши инструменты — Wordstat, CMS, Make. Это ядро стека Kovcheg: Cursor + MCP + автоматизация без обязательного бэкенд-бэкграунда.
Готовые MCP-серверы или своя разработка
GitHub, Figma, Postgres — когда хватает каталога
В каталогах (mcp.so и аналоги) уже есть серверы для GitHub, Figma, Postgres, браузера. Берите готовый, если задача стандартная и не нужна кастомная бизнес-логика.
Критерии: когда писать свой сервер
| Пишите свой | Берите готовый |
|---|---|
| Свой CRM / 1С / внутренний API | Публичный GitHub / Figma |
| Нестандартные отчёты Wordstat | Типовой доступ к репозиторию |
| Секретная логика и middleware | Демо и обучение |
Локальный vs облачный MCP
Локальный — stdio, секреты на машине, идеален для вайбкодинга. Облачный — HTTP, Docker, доступ команде. Миграция: тот же код FastMCP, меняется только способ запуска и конфиг клиента (command → url).
Безопасность и продакшен
Авторизация, заголовки и секреты
Минимум: ключи в env, не в репозитории; для HTTP — HTTPS, проверка Origin, rate limit. Middleware извлекает токен из заголовка и не передаёт его в ответ tool.
Ограничение прав tools (read-only vs mutating)
Разделяйте tools, которые только читают данные, и те, что меняют систему. Используйте ToolAnnotations и разумный UX: деструктивные действия — с явным описанием в docstring. Помните: аннотации — подсказка, а не гарантия; злонамеренный сервер может врать.
Деплой: Docker и мониторинг
Образ с uvicorn, healthcheck на /mcp, логи в stderr/систему мониторинга. Обновляйте зависимости; в open-source MCP встречались уязвимости в прослойках — относитесь к чужим серверам с осторожностью и не ставьте непроверенные tools с правами на прод.
FAQ
Что такое MCP-сервер?
Программа, которая по протоколу Model Context Protocol отдаёт ИИ-клиенту tools, resources и prompts. Клиент (внутри Cursor или Claude) вызывает tools, сервер выполняет логику и возвращает результат.
Как создать MCP-сервер с нуля без опыта в бэкенде?
Установите Python и FastMCP, опишите 2–3 функции с декоратором @mcp.tool() и понятными docstring, проверьте в MCP Inspector, добавьте запись в .cursor/mcp.json. Ориентир по времени — 30–60 минут на учебный сервер.
Как подключить MCP-сервер к Cursor?
Создайте .cursor/mcp.json с блоком mcpServers: для локального сервера укажите command, args, env; для удалённого — url и при необходимости headers. Перезапустите MCP в Cursor и проверьте MCP Logs.
Чем MCP server creating отличается от настройки готового сервера?
Создание — вы пишете код tools под свой API. Настройка готового — копируете command/url из каталога и подставляете ключи. Создание даёт гибкость; настройка — скорость.
Нужен ли Python для разработки MCP?
Нет, но Python с FastMCP — самый короткий путь для новичка. Альтернативы: TypeScript, Go, C# с официальными SDK.
MCP Inspector обязателен?
Не обязателен по спецификации, но настоятельно рекомендуется: ловит ошибки схем и типов до борьбы с mcp.json и логами IDE.
Можно ли один сервер использовать в Claude и Cursor одновременно?
Да. Один и тот же stdio-сервер прописывается в конфигах обоих клиентов; при HTTP — несколько клиентов подключаются к одному URL.
Итог
MCP-сервер создаётся за 30–60 минут на FastMCP с минимумом двух tools с понятными docstring. Проверка в MCP Inspector перед mcp.json экономит часы отладки. Выберите stdio для локальной работы или Streamable HTTP для команды, спроектируйте 3–5 сценарных tools, подключите сервер в Cursor и Claude — и вы получите тот же класс интеграций, что лежит в основе автоматизации контента и вайбкодинга.
Что проверяли по источникам:
- Определение MCP и архитектура host–client–server — modelcontextprotocol.io.
- FastMCP, mount, middleware — документация FastMCP и практические разборы на Habr.
- Транспорты stdio и Streamable HTTP — спецификация 2025-11-25.
- Подключение в Cursor — официальные docs Cursor MCP.
- Антипаттерны tools и аннотации — спецификация MCP и разборы ошибок FastMCP.
