Карта экосистемы Model Context Protocol: клиенты, транспорты, SDK, готовые серверы, реестр и инструменты отладки. Материал помогает выбрать способ подключения, найти реализацию и проверить её до использования.
📖 Если вы ещё не знакомы с протоколом, начните со справочника по MCP. Здесь основное внимание уделено практической экосистеме.
Проверено по официальной спецификации и репозиторию MCP 5 сентября 2026 года. Материал основан на этих источниках; запуск серверов и команд в рамках проверки не выполнялся.
Содержание
- Для кого
- Как устроено подключение
- stdio и Streamable HTTP
- SDK для разработки
- Где искать MCP-серверы
- Референсные и архивные серверы
- Как выбрать и подключить сервер
- Практические комбинации
- Инструменты разработки и отладки
- Что делать, если сервер не работает
- Версии и совместимость
- Официальные источники
Для кого
Справочник рассчитан на тех, кто впервые подключает MCP-серверы, выбирает SDK для собственного сервера или проверяет уже найденную реализацию. Начинающим он даёт базовый порядок действий, а разработчикам с опытом — чеклист транспорта, совместимости и границ доступа.
Как устроено подключение
MCP-хостом называют ИИ-приложение, внутри которого работает MCP-клиент. В типичном сценарии клиент устанавливает соединение с сервером, получает сведения о доступных возможностях и обменивается с ним сообщениями формата JSON-RPC.
Один хост может работать с несколькими серверами. Поддерживаемые транспорты, формат конфигурации, авторизация и набор доступных функций зависят от конкретного приложения, поэтому перед подключением сверяйтесь с его актуальной документацией.
stdio и Streamable HTTP
Официальная спецификация MCP версии 2025-06-18 определяет два стандартных транспорта.
| Транспорт | Где работает сервер | Как передаются сообщения | Когда подходит |
stdio | Клиент запускает сервер как локальный дочерний процесс | Через стандартный ввод и вывод | Локальные инструменты, файлы и процессы |
| Streamable HTTP | Сервер работает как самостоятельный процесс и принимает подключения | HTTP POST и, при необходимости, GET с потоком Server-Sent Events (SSE) | Удалённые и многопользовательские серверы |
Для stdio действуют строгие правила:
- сервер читает сообщения из
stdinи отправляет ответы вstdout; - сообщения кодируются в UTF-8 и отделяются переводом строки;
- в
stdoutнельзя писать ничего, кроме корректных сообщений MCP; - диагностические сообщения можно направлять в
stderr; - сообщения
stdioне должны содержать встроенные переводы строк.
Streamable HTTP использует единую конечную точку MCP. Каждое JSON-RPC-сообщение клиента отправляется отдельным POST-запросом. Клиент должен передавать заголовок Accept с поддержкой application/json и text/event-stream. Для JSON-RPC-запроса сервер возвращает один JSON-объект или открывает SSE-поток. Принятое уведомление или ответ сервера может завершаться статусом 202 Accepted без тела.
При GET сервер либо открывает SSE-поток, либо возвращает 405 Method Not Allowed, если поток для этого метода не предоставляется.
⚠️ При реализации Streamable HTTP сервер должен проверять заголовокOrigin, локально привязываться к127.0.0.1, когда внешний доступ не нужен, и использовать надлежащую аутентификацию. Эти меры снижают риск DNS rebinding и доступа к локальному серверу со стороннего сайта.
Спецификация допускает собственные транспорты, если они сохраняют формат JSON-RPC и требования жизненного цикла MCP.
SDK для разработки
В README официального репозитория референсных серверов перечислены SDK для следующих языков и платформ:
| Язык или платформа | Когда выбирать |
| TypeScript | Серверы и клиенты в экосистеме Node.js |
| Python | Автоматизация, анализ данных и Python-приложения |
| C# | Проекты на .NET |
| Go | Компактные сервисы и инфраструктурные инструменты |
| Java | Java-приложения и серверная разработка |
| Kotlin | JVM- и Kotlin-проекты |
| PHP | Интеграция с PHP-приложениями |
| Ruby | Ruby-приложения и внутренние инструменты |
| Rust | Системные приложения и строгий контроль ресурсов |
| Swift | Приложения экосистемы Apple |
Перед началом разработки проверяйте актуальное состояние нужного SDK, поддерживаемую версию протокола и примеры в его собственном репозитории.
Сторонние фреймворки и генераторы, включая FastMCP, MCP Go и инструменты генерации из OpenAPI, развиваются независимо от спецификации. Их версии, команды установки и совместимость нужно сверять с документацией конкретного проекта.
Где искать MCP-серверы
Главная точка поиска опубликованных серверов — MCP Registry. Официальный репозиторий modelcontextprotocol/servers прямо направляет пользователей в Registry, если нужен каталог серверов.
Сам репозиторий решает другую задачу: в нём хранится небольшое число референсных реализаций, поддерживаемых руководящей группой MCP (steering group). Это учебные примеры функций протокола и SDK; репозиторий не позиционирует их как готовые к производственной эксплуатации.
Дополнительные независимые каталоги:
| Каталог | Назначение |
| Smithery | Поиск, установка и размещение MCP-серверов |
| Glama | Каталог с категориями и фильтрами |
| mcp.run | Запуск совместимых серверов в облачной среде |
| OpenTools | Поиск серверов и инструментов сообщества |
| PulseMCP | Наблюдение за обновлениями экосистемы |
⚠️ Наличие сервера в каталоге или примера в официальном репозитории не доказывает безопасность и готовность к производственной эксплуатации. Проверяйте исходный код, владельца, запрашиваемые права, способ хранения токенов и модель угроз.
Референсные и архивные серверы
В README, проверенном 5 сентября 2026 года, перечислены семь референсных серверов:
| Сервер | Назначение |
| Everything | Тестовый сервер с prompts, resources и tools |
| Fetch | Получение и преобразование веб-контента |
| Filesystem | Операции с файлами в пределах настроенного доступа |
| Git | Чтение, поиск и изменение Git-репозиториев |
| Memory | Постоянная память на основе графа знаний |
| Sequential Thinking | Пошаговая обработка последовательностей рассуждений |
| Time | Работа со временем и часовыми поясами |
Ранее находившиеся в этом репозитории серверы AWS KB Retrieval, Brave Search, EverArt, GitHub, GitLab, Google Drive, Google Maps, PostgreSQL, Puppeteer, Redis, Sentry, Slack и SQLite перенесены в servers-archived. Их прежние пакеты нельзя автоматически считать актуальными официальными рекомендациями.
Если нужен один из таких сервисов:
- Найдите актуальную публикацию в MCP Registry.
- Проверьте, выпустил ли поставщик собственный сервер.
- Сверьте владельца пакета и ссылку на исходный код.
- Изучите разрешения и способ авторизации.
- Проверьте дату последнего обновления и совместимость с вашим клиентом.
Как выбрать и подключить сервер
Шаг 1. Определите задачу и границы доступа
Зафиксируйте, какие действия должен выполнять агент и какие данные ему действительно нужны. Для файлового сервера укажите отдельную разрешённую директорию. Для внешнего API выдавайте минимально необходимые права.
Шаг 2. Проверьте происхождение реализации
Предпочтительный порядок поиска:
- MCP Registry и официальный сайт поставщика.
- Репозиторий организации, которой принадлежит подключаемый сервис.
- Независимый каталог с обязательной проверкой владельца и исходного кода.
- Собственная реализация через подходящий SDK, если доверенного готового сервера нет.
Шаг 3. Подключите локальный сервер
Пример конфигурации reference server для работы с ограниченной директорией:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/allowed/files"
]
}
}
}Путь в последнем аргументе ограничивает область доступа сервера. На Windows официальный репозиторий рекомендует запускать npx через cmd /c:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\\path\\to\\allowed-files"
]
}
}
}Не передавайте серверу домашнюю директорию или весь диск, если для задачи достаточно одной рабочей папки.
Шаг 4. Подключите удалённый сервер
Для Streamable HTTP нужен URL единой конечной точки MCP. При собственной реализации проверьте:
- поддержку
POSTиGETна одной конечной точке; приGETсервер должен открыть SSE-поток или вернуть405; - заголовок
Acceptсapplication/jsonиtext/event-stream; - ответы
application/jsonиtext/event-stream; - проверку
Origin; - аутентификацию;
- обработку
Mcp-Session-Id, если сервер создаёт сессии; - передачу согласованной версии в заголовке
MCP-Protocol-Version.
Шаг 5. Проверьте наблюдаемый результат
Подключение можно считать успешным, когда клиент запускает локальный процесс или устанавливает HTTP-соединение без ошибки, завершает инициализацию и показывает ожидаемые сервером tools, resources или prompts. Если сервер предоставляет безопасную операцию чтения, выполните её; иначе используйте другой безвредный тестовый вызов.
Практические комбинации
Локальная работа с файлами
Подключите Filesystem reference server и передайте ему только каталог проекта. После запуска запросите список доступных файлов и чтение заранее выбранного тестового документа. Успех подтверждается содержимым ответа и отсутствием доступа за пределами разрешённой директории.
Разработка собственного сервера
Выберите SDK для языка проекта, реализуйте один безопасный инструмент чтения и подключите сервер по stdio. Проверьте инициализацию и вызов инструмента. Изменяющие данные операции добавляйте после этого, с отдельными разрешениями и подтверждениями пользователя.
Удалённый многопользовательский сервер
Используйте Streamable HTTP, настройте аутентификацию, проверку Origin и разграничение доступа. Проверяйте не только успешный запрос, но и отказ для пользователя без нужных прав.
Инструменты разработки и отладки
| Инструмент | Для чего нужен |
| MCP Inspector | Просмотр возможностей сервера и ручные тестовые вызовы |
Логи в stderr | Диагностика локального stdio-сервера без повреждения потока JSON-RPC |
| HTTP-клиент и серверные логи | Проверка заголовков, кодов ответа, сессий и типов содержимого Streamable HTTP |
| Тестовый MCP-клиент из выбранного SDK | Автоматические проверки инициализации и вызовов инструментов |
Команды референсных серверов
| Команда | Что делает | Пример задачи |
npx -y @modelcontextprotocol/server-memory | Запускает Memory reference server | Подключить графовую память локальному клиенту |
uvx mcp-server-git --repository path/to/git/repo | Запускает Git reference server | Ограничить работу одним репозиторием |
npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/files | Запускает Filesystem reference server | Дать доступ только к выбранной директории |
Для stdio сначала проверьте процесс и разделение потоков. Для HTTP фиксируйте URL конечной точки, метод, код ответа, Content-Type, версию протокола и идентификатор сессии.
Что делать, если сервер не работает
npx: используйте command: "cmd" и добавьте "/c", "npx" в начало args.stdout нет логов и произвольного текста.stdio.MCP-Protocol-Version, формат JSON-RPC, Accept и обязательные заголовки.Mcp-Session-Id.Last-Event-ID.Версии и совместимость
Редакция спецификации 2025-06-18 отличается от 2025-03-26. Среди подтверждённых изменений:
- удалена поддержка пакетной обработки JSON-RPC;
- добавлен структурированный вывод инструментов;
- добавлена возможность elicitation, при которой сервер запрашивает у пользователя дополнительные сведения;
- появились ссылки на resources в результатах вызова инструментов;
- уточнена модель OAuth Resource Server;
- для HTTP-запросов после инициализации требуется заголовок
MCP-Protocol-Versionс согласованной версией.
Если HTTP-сервер не получил заголовок версии и не может определить её другим способом, спецификация рекомендует для обратной совместимости предполагать версию 2025-03-26. Неподдерживаемая или некорректная версия должна приводить к ответу 400 Bad Request.
Перед обновлением SDK сверяйте changelog и прогоняйте тесты инициализации, обнаружения возможностей и вызова инструментов.
Официальные источники
- Транспорты MCP, спецификация 2025-06-18
- Изменения спецификации 2025-06-18
- Официальный репозиторий reference servers
Следующий шаг
Подробнее о рисках подключения внешних серверов: MCP и безопасность — prompt injection, tool poisoning и как защититься.
Если вы внедряете MCP в рабочий стек, эти материалы помогут сопоставить транспорт, права и конкретные сценарии подключения.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov


