MCP-сервер на Node.js
Шаблон на официальном TypeScript SDK MCP (@modelcontextprotocol/sdk 1.32.2, McpServer и StreamableHTTPServerTransport). Общие вопросы (публикация, белый список IP, подключение в Trialix, шлюз во внутреннюю сеть) описаны в README выше.
| Файл | Что в нём |
|---|---|
src/server.ts | сервер, три инструмента, проверка токена |
package.json, package-lock.json | точные версии зависимостей |
tsconfig.json | настройки TypeScript |
Dockerfile | сборка и образ на node:24.21.0-trixie-slim, запуск не от root |
Запуск в Docker
docker build -t mcp-orders .
export MCP_TOKEN="$(openssl rand -hex 32)"
docker run --rm -p 127.0.0.1:8000:8000 -e MCP_TOKEN="$MCP_TOKEN" mcp-orders
Запуск без Docker
Нужен Node.js 24, как в образе.
npm ci
npm run build
export MCP_TOKEN="$(openssl rand -hex 32)"
npm start
Сервер слушает http://0.0.0.0:8000/mcp. HTTP-сервер - встроенный node:http, других фреймворков нет.
Переменные окружения
| Переменная | По умолчанию | Что задаёт |
|---|---|---|
MCP_TOKEN | нет, обязательна | токен доступа, не короче 32 символов |
MCP_HOST | 0.0.0.0 | адрес, на котором слушает сервер |
MCP_PORT | 8000 | порт |
Где менять код
- Данные. Класс
OrderStore: методыsearch,get,create. Методы уже асинхронные: замените тела запросами к своей БД (например,pg) или API (fetch), в комментариях есть примеры. Если оставить сигнатуры, инструменты менять не придётся. - Инструменты. Вызовы
server.registerToolвbuildServer(). Описание для модели -description, описания параметров -.describe()у схем zod вinputSchema. Схема ответаoutputSchemaнеобязательна, но помогает модели понять, что вернётся. - Чтение или запись.
annotations.readOnlyHint:trueдля инструментов, которые ничего не меняют,falseдля остальных. Вызов инструмента записи Trialix выполняет только после подтверждения сотрудника. - Ошибки.
return fail('понятный текст'): ответ сisError: true, модель увидит текст и сможет исправить запрос. - Описание сервера для модели.
instructionsво втором аргументеnew McpServer(...).
Сервер работает без сессий: на каждый запрос создаются свой McpServer и транспорт, поэтому подключения к БД и клиенты API создавайте один раз при старте, а не внутри buildServer().
Обновление SDK
Поднимите версию @modelcontextprotocol/sdk в package.json, выполните npm install, соберите образ и проверьте tools/list и tools/call запросами из README выше.
Источник: docs/developers/mcp-templates/node/README.md в репозитории Trialix