AI Agent Integrations PRO: MCPПервый MCP-сервер: scaffold, инициализация и возможностиScaffold MCP-сервера: структура проекта и зависимости

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.