Что такое MCP и зачем строить свой сервер

Model Context Protocol (MCP) - это стандартизированный способ расширить ИИ-инструменты кастомными возможностями. Он позволяет ИИ-ассистенту получать доступ к внешним системам, данным и выполнять действия через паттерн клиент-сервер. Это отдельная задача от подключения уже готового чужого MCP-сервера - здесь речь о том, чтобы написать свой собственный.

Шаг 1. Разберитесь в архитектуре: host, client, server

Система состоит из трёх компонентов. Host - это само ИИ-приложение. Client живёт внутри хоста и поддерживает связь один-к-одному с каждым сервером. Server - это ваш кастомный MCP-сервер, который предоставляет инструменты, ресурсы и промпты. Понимание этой связки важно ещё до первой строчки кода: именно host обнаруживает и вызывает то, что предоставляет ваш сервер.

Шаг 2. Выберите язык и SDK

MCP предоставляет SDK для нескольких языков, включая TypeScript, Python, Go и Rust. Для первого сервера удобно использовать TypeScript SDK - он хорошо документирован и часто используется в примерах. Понадобится базовое знание TypeScript, окружение Node.js и знакомство с концепциями API.

Шаг 3. Настройте проект и зарегистрируйте сервер

Типичная структура демонстрационного проекта включает веб-приложение для локального запуска в целях обучения, сам MCP-сервер на TypeScript SDK и общую библиотеку с определениями типов и компонентов. Сервер регистрируется файлом конфигурации, например .vscode/mcp.json, в котором задаются команда запуска и рабочая директория:

{ "servers": { "my-server": { "command": "node", "args": ["dist/index.js"], "cwd": "./mcp-server" } } }

Такой же принцип - команда, аргументы и рабочая директория - применяется и при подключении собственного MCP-сервера к Claude Code.

Шаг 4. Опишите Tools - что сервер умеет делать

Tools определяют, какие действия может выполнять MCP-сервер. Каждому инструменту нужны понятное имя, чёткое описание и схема входных параметров, определяющая обязательные поля. Например, инструмент с именем play_tic_tac_toe, описанием того, что он делает, и схемой параметров, требующей идентификатор игры.

Шаг 5. Добавьте Resources - как ИИ получает контекст

Resources дают ИИ способ собрать контекст через URI-идентификаторы вида game://tic-tac-toe/ID-игры. Методы сервера транслируют эти URI в вызов API и возвращают нужные данные - это способ передать модели структурированный контекст, а не просто ответ на действие.

Шаг 6. Добавьте Prompts - готовые подсказки для пользователя

Prompts - это заранее заданные подсказки, которые помогают пользователю получить максимум от ваших инструментов. Пользователи вызывают их слэш-командами прямо в интерфейсе - например, командой /strategy.

Шаг 7. Соберите, запустите и протестируйте

TypeScript нужно скомпилировать перед запуском - именно поэтому в конфигурации команда указывает на собранный файл вроде dist/index.js. После регистрации в конфигурации ИИ-инструмент автоматически обнаруживает доступные инструменты, вызывает их явно или через автообнаружение, MCP-сервер выполняет запрос и возвращает результат, а диалог продолжается уже с учётом полученных данных.

Безопасность и с чего начинать

Перед установкой чужого MCP-сервера стоит проверить его происхождение так же тщательно, как любую другую зависимость. Работа с авторизацией зависит от сценария использования - встречаются и OAuth-потоки, и персональные токены доступа. По возможности стоит изучить код в открытом репозитории перед установкой. Начинать лучше с простых, узко сфокусированных серверов, решающих одну конкретную задачу, а не пытаться сразу построить всё.

Чек-лист

Что проверить перед запуском своего MCP-сервера
  1. Понятна разница между host, client и server в архитектуре MCP
  2. Выбран SDK под нужный язык - TypeScript, Python, Go или Rust
  3. Каждому tool заданы понятное имя, описание и схема входных параметров
  4. Продуманы resources для передачи контекста через URI, если задаче это нужно
  5. Сервер начат простым и узко сфокусированным, а не как универсальный комбайн сразу
Чем создание своего MCP-сервера отличается от подключения чужого?
Подключение чужого сервера - это настройка готового инструмента через конфигурацию. Создание своего - написание кода, который сам предоставляет инструменты, ресурсы и промпты для ИИ.
На каких языках можно писать MCP-сервер?
MCP предоставляет SDK для нескольких языков, включая TypeScript, Python, Go и Rust.
Что такое tools в терминологии MCP?
Действия, которые может выполнять сервер - у каждого есть имя, описание и схема входных параметров.
Что такое resources?
Способ передать ИИ контекст через URI-идентификаторы, которые сервер транслирует в вызов API.
Что такое prompts в MCP-сервере?
Заранее заданные подсказки, которые помогают пользователю получить максимум от инструментов сервера, вызываются слэш-командами.
Как проверить безопасность чужого MCP-сервера перед установкой?
Проверить происхождение так же тщательно, как любую другую зависимость, и по возможности изучить код в открытом репозитории.
← Все статьи блога