Skip to main content
Glama
sauravakij

Production Plan Variance MCP Server

by sauravakij

MCP-сервер производственного плана и отклонений

Небольшой MCP-сервер, который предоставляет панель «Производственный план: отклонения и отслеживание проблем» (erp.peopledesk.io/production-management/mes/ProductionPlanVariance) в виде пяти инструментов только для чтения, напрямую работающих с базой данных DWH:

Инструмент

Соответствие

get_variance_summary

Четыре плитки: строки плана / в соответствии с планом / отмечены отклонения / отсутствуют проблемы

list_plan_variance

Таблица строк (код плана, позиция, предприятие, количество, разница, причина, статус)

list_variance_reasons

Конфигурация причин «Проблема для разницы» + эскалация по электронной почте, по предприятию

list_plants

Выпадающий список фильтра по предприятию

list_shop_floors

Выпадающий список фильтра по производственному участку

Он запрашивает следующие таблицы DWH (проверено по живой схеме): tblProductionPlanVarianceIssueArc, tblProductionPlanVarianceReasonArc, tblPlantArc, tblShopFloorArc.

Почему такая структура

Вы просили, чтобы любой мог использовать это через JSON-файл, без ввода учётных данных базы данных. Поэтому дизайн такой:

  • Один сервер, размещённый у вас, хранит учётные данные БД в своих переменных окружения (.env, никогда не коммитится, никогда не отправляется клиентам).

  • Все остальные просто добавляют mcp-config.json в свой MCP-клиент (Claude Desktop, Claude Code и т. д.) — в нём только URL, ничего секретного. Сервер — единственный, кто общается с SQL Server.

  • Все запросы — это фиксированные параметризованные SELECT, определённые в src/queries.js — нет инструмента для произвольного SQL, поэтому никто, использующий этот MCP-сервер, не может запрашивать данные вне самой панели или выполнять записи.

⚠️ Перед развёртыванием: подтвердите права доступа к БД

При создании я проверил схему (таблицы/колонки) с помощью вашего подключения mssql-test-server, но каждый реальный SELECT на уровне строк против tblProductionPlanVarianceIssueArc / tblPlantArc и т. д. завершался ошибкой — интроспекция схемы работала, запросы данных — нет. Это почти наверняка пробел в правах доступа для этого конкретного SQL-логина (mcp_user), а не проблема с этими запросами. Перед запуском:

  1. Создайте (или переиспользуйте) логин SQL Server с правами только на SELECT для таблиц DWH, перечисленных выше.

  2. Проверьте вручную, например:

    SELECT TOP 5 * FROM dbo.tblProductionPlanVarianceIssueArc;
  3. Только затем укажите DB_USER/DB_PASSWORD в .env для этого логина.

Развёртывание

Вариант A — ваш собственный сервер (nginx/Caddy перед ним)

npm install
cp .env.example .env    # fill in DB_SERVER / DB_USER / DB_PASSWORD
npm start                # listens on :3300, endpoint POST /mcp

Разместите его за HTTPS на домене, доступном вашей команде, например https://mcp.yourcompany.com/mcp.

Вариант B — Vercel (уже настроено в этом репозитории)

Файлы api/mcp.js + vercel.json превращают тот же сервер в бессерверную функцию Vercel, доступную по адресу /mcp.

  1. Загрузите эту папку в репозиторий GitHub (или запустите прямо из папки).

  2. Установите CLI один раз: npm i -g vercel

  3. Из папки production-variance-mcp/ войдите в свой собственный аккаунт Vercel и разверните:

    vercel login
    vercel --prod
  4. В панели Vercel → ваш проект → Settings → Environment Variables добавьте DB_SERVER, DB_PORT, DB_DATABASE, DB_USER, DB_PASSWORD, DB_ENCRYPT, DB_TRUST_CERT (те же значения, что в .env.example), затем переразверните, чтобы функция их подхватила.

  5. Ваша конечная точка MCP теперь https://<your-project>.vercel.app/mcp. Вставьте этот URL в mcp-config.json и раздайте его.

Примечание: SQL Server должен быть доступен из сети Vercel (т.е. не закрыт файрволом только для IP вашего офиса) — уточните у того, кто управляет 203.202.241.211, если после развёртывания соединение истекает по таймауту. Также добавьте какую-либо аутентификацию перед /mcp (см. примечание ниже), прежде чем этот URL станет публичным — сейчас любой, у кого есть ссылка, может вызывать эти инструменты только для чтения.

Распространение

Отредактируйте mcp-config.json, заменив YOUR-HOSTED-DOMAIN на ваш реальный домен, затем поделитесь этим одним файлом. Любой добавляет его в свой MCP-клиент и сразу получает доступ к данным этой панели в режиме чата только для чтения — без установки, без учётных данных, без знания SQL.

Примечания / что стоит перепроверить у себя

  • Колонка «Machine» на панели (например, «Aromatic Unit Line - 01») не была найдена в tblProductionPlanVarianceIssueArc в схеме, которую я получил — вероятно, она разрешается через таблицу производственной линии/рабочего центра в вашем окружении. Запрос list_plan_variance пока её не включает; добавьте соответствующий JOIN в src/queries.js, когда подтвердите исходную таблицу (кандидаты: tblProductionLineArc, tblWorkCenterArc).

  • Логика «Issues Missing» в get_variance_summary предполагает, что это означает «отмеченное отклонение без записанной причины/статуса» — сверьте это с фактической бизнес-логикой приложения и при необходимости скорректируйте QUERY_SUMMARY.

  • Добавьте аутентификацию (API-ключ / OAuth) перед /mcp, прежде чем открывать доступ за пределы вашей внутренней сети — в этой сборке по умолчанию её нет.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.

  • Read-only NuMetric.work accounting & ERP data: statements, KPIs, reports, invoices, documents.

  • Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sauravakij/AR-PP-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server