Model Context Protocol · гайд 2026

Как создать MCP-сервер с нуля: пошаговый гайд для Cursor, Claude и автоматизации

FastMCP, MCP Inspector и подключение tools к ИИ-агентам — пошагово для бизнеса и вайбкодинга

MCP и автоматизация — Maya Pro
1 Идея tool
2 FastMCP код
3 MCP Inspector
4 Cursor mcp.json
5 Вызов tool
Model Context Protocol stdio / HTTP host → client → server

Коротко: MCP-сервер — это ваш «переводчик» между ИИ-агентом и бизнес-системами. За 30–60 минут на FastMCP можно собрать рабочий сервер с двумя-тремя tools, проверить его в MCP Inspector и подключить к Cursor или Claude — без полноценного бэкенд-опыта.

Если вы уже пользуетесь Cursor для вайбкодинга или Claude для рабочих задач, рано или поздно упираетесь в потолок: модель «знает» текст, но не видит вашу CRM, Wordstat, таблицы и сценарии Make. Готовые MCP из каталогов закрывают часть задач, но свой сервер даёт контроль над логикой, безопасностью и формулировками tools под ваш бизнес.

Этот гайд — про создание сервера, а не про агентный режим Cursor 3.x. Мы идём по цепочке: понять протокол → написать код → отладить → подключить → встроить в автоматизацию контента и маркетинга.

mcp-pipeline — zsh
$ fastmcp run main.py
# 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

Схема из трёх ролей:

  1. Host — приложение, где вы работаете: Cursor, Claude Desktop, Claude Code.
  2. Client — модуль внутри host, который говорит с сервером по протоколу.
  3. 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 Desktopclaude_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 подключаются как к «удалённому инструменту».

Когда какой вариант выбрать

СитуацияТранспорт
Личная разработка, секреты в envstdio
Несколько сотрудников, один серверStreamable HTTP
Интеграция с 1С/CRM в контейнереHTTP + Docker
Быстрый прототип в Cursorstdio

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 проверьте:

  1. Каждый tool открывается и возвращает JSON (не пустую строку).
  2. Обязательные параметры отмечены в схеме; опциональные имеют defaults.
  3. Ошибки API оборачиваются в понятный текст для модели, а не в traceback.
  4. 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, меняется только способ запуска и конфиг клиента (commandurl).

Безопасность и продакшен

Авторизация, заголовки и секреты

Минимум: ключи в 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.
Beget — надёжный хостинг и VPS
Telegram-канал Telegram-канал