🧩 Что это
MCP Server Development Patterns — это набор практик и рекомендаций для создания серверов по протоколу Model Context Protocol (MCP) с использованием Node/TypeScript SDK. Такие серверы позволяют AI-ассистентам (например, Claude Desktop, Cursor) вызывать инструменты (tools), читать ресурсы (resources) и использовать промпты (prompts). Навык ориентирован на разработчиков, которые проектируют, реализуют или сопровождают MCP-серверы, а также выбирают транспортный слой (stdio или HTTP) и следят за изменениями SDK.
⚙️ Как работает
🛠️ Основные концепции
- Tools — действия, которые модель может вызвать (например, поиск, выполнение команды). Регистрируются через
registerTool() или tool() в зависимости от версии SDK.
- 📄 Resources — данные только для чтения, которые модель может запросить (содержимое файла, ответ API). Регистрируются через
registerResource() или resource(). Обработчик обычно получает аргумент uri.
- 💬 Prompts — переиспользуемые шаблоны с параметрами, которые клиент (например, Claude Desktop) может предложить пользователю. Регистрируются через
registerPrompt() или аналогичный метод.
- 🔌 Transport — способ соединения:
stdio для локальных клиентов (Claude Desktop), Streamable HTTP для удалённых (Cursor, облачные сервисы). Устаревший HTTP/SSE — только для обратной совместимости.
API SDK менялся со временем: в одних версиях используются tool(name, description, schema, handler) (позиционные аргументы), в других — tool({ name, description, inputSchema }, handler) или registerTool(). Аналогично для ресурсов. Всегда сверяйтесь с актуальной документацией MCP или используйте Context7 с запросом query-docs "MCP".
🔌 Подключение через stdio
Для локальных клиентов создаётся StdioServerTransport, который передаётся в метод connect() сервера. Точный API зависит от версии SDK (конструктор или фабрика). Рекомендуется держать логику сервера (tools + resources) независимой от транспорта, чтобы в точке входа можно было легко переключиться между stdio и HTTP.
🌐 Удалённое подключение (Streamable HTTP)
Для Cursor, облачных сред и других удалённых клиентов используется Streamable HTTP — единая MCP-точка. Поддержка старого HTTP/SSE нужна только если требуется обратная совместимость.
🚀 Пример установки и настройки
npm install @modelcontextprotocol/sdk zod
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const server = new McpServer({
name: "my-server",
version: "1.0.0"
});
Далее регистрируются инструменты и ресурсы с помощью API, предоставляемого вашей версией SDK. Для валидации входных данных используйте Zod (или другой предпочитаемый SDK формат схем).
✅ Лучшие практики
- Schema first — определяйте входные схемы для каждого инструмента, документируйте параметры и возвращаемые данные.
- Обработка ошибок — возвращайте структурированные сообщения об ошибках, понятные модели; избегайте сырых стектрейсов.
- Идемпотентность — предпочитайте идемпотентные инструменты, чтобы повторные вызовы были безопасны.
- Лимиты и стоимость — для инструментов, вызывающих внешние API, учитывайте лимиты запросов и стоимость; указывайте это в описании инструмента.
- Версионирование — фиксируйте версию SDK в
package.json; при обновлении читайте release notes.
🎯 Когда использовать
Этот навык пригодится, когда вы:
- создаёте новый MCP-сервер с нуля;
- добавляете инструменты или ресурсы в существующий сервер;
- выбираете между
stdio и HTTP-транспортом;
- обновляете SDK и сталкиваетесь с изменениями API;
- отлаживаете регистрацию инструментов или проблемы с транспортом.
⚠️ Важно знать
- SDK
@modelcontextprotocol/sdk активно развивается — сигнатуры методов могут меняться. Всегда проверяйте актуальную документацию на официальном сайте MCP или используйте Context7 (запрос query-docs "MCP") для получения свежих примеров.
- Для Go и C# существуют официальные SDK (на GitHub:
modelcontextprotocol/go-sdk и modelcontextprotocol/csharp-sdk), но данный навык фокусируется на JavaScript/TypeScript.
- При использовании Streamable HTTP убедитесь, что ваш сервер поддерживает единый endpoint, как того требует текущая спецификация.
Комментарии
Комментариев пока нет. Будьте первым.