Scaffold MCP-сервера: структура проекта и зависимости
Уроки курсаScaffold MCP-сервера: структура проекта и зависимости
В прошлом уроке мы разбирали транспорт: как подключить stdio или HTTP/SSE, какие параметры прописывать в конфиге. Теперь шаг назад — к моменту, который обычно пропускают: что вообще должно лежать в папке проекта до того, как вы напишете первую строку кода сервера.
Файловая структура и зависимости MCP-сервера
MCP-сервер — это обычное приложение на Node.js или Python, и его проект подчиняется стандартным правилам для каждой экосистемы. Но есть минимальный набор элементов, без которого сервер просто не запустится. Для Node.js/TypeScript проект выглядит так:
package.json— манифест проекта: имя, версия, скрипты запуска и список зависимостей.tsconfig.json— конфигурация TypeScript-компилятора; без негоtscиts-nodeне знают, как трактовать ваш код.src/index.ts— точка входа; здесь живёт инициализация сервера.node_modules/— появляется послеnpm install, хранит установленные пакеты. Для Python структура проще:main.py— точка входа..venv/— виртуальное окружение; держать зависимости внутри него, а не в системном Python — стандартная практика.pyproject.toml(опционально, но желательно) — фиксирует зависимости проекта, чтобы воспроизвести окружение на другой машине. Теперь о зависимостях. MCP SDK существует отдельно для каждой экосистемы, и это важно понимать с самого начала: вы устанавливаете не «MCP» как таковой, а конкретный SDK-пакет. Для Node.js ключевая зависимость —@modelcontextprotocol/sdk. Именно из неё импортируются классыServerиStdioServerTransport. Помимо неё нужны инструменты разработки:typescript,ts-nodeи@types/node— они идут вdevDependencies, потому что в рантайме не нужны. Для Python единственная зависимость — пакетmcp. Он устанавливается черезpip install mcpи содержит всё необходимое: классы сервера, транспортные адаптеры и утилиты инициализации. Оба SDK активно развиваются, поэтому версию лучше фиксировать явно — иначе при повторной установке можете получить несовместимое API.
