Production Plan Variance MCP Server
MCP-сервер производственного плана и отклонений
Небольшой MCP-сервер, который предоставляет панель «Производственный план: отклонения и отслеживание проблем» (erp.peopledesk.io/production-management/mes/ProductionPlanVariance) в виде пяти инструментов только для чтения, напрямую работающих с базой данных DWH:
Инструмент | Соответствие |
| Четыре плитки: строки плана / в соответствии с планом / отмечены отклонения / отсутствуют проблемы |
| Таблица строк (код плана, позиция, предприятие, количество, разница, причина, статус) |
| Конфигурация причин «Проблема для разницы» + эскалация по электронной почте, по предприятию |
| Выпадающий список фильтра по предприятию |
| Выпадающий список фильтра по производственному участку |
Он запрашивает следующие таблицы 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), а не проблема
с этими запросами. Перед запуском:
Создайте (или переиспользуйте) логин SQL Server с правами только на
SELECTдля таблиц DWH, перечисленных выше.Проверьте вручную, например:
SELECT TOP 5 * FROM dbo.tblProductionPlanVarianceIssueArc;Только затем укажите
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.
Загрузите эту папку в репозиторий GitHub (или запустите прямо из папки).
Установите CLI один раз:
npm i -g vercelИз папки
production-variance-mcp/войдите в свой собственный аккаунт Vercel и разверните:vercel login vercel --prodВ панели Vercel → ваш проект → Settings → Environment Variables добавьте
DB_SERVER,DB_PORT,DB_DATABASE,DB_USER,DB_PASSWORD,DB_ENCRYPT,DB_TRUST_CERT(те же значения, что в.env.example), затем переразверните, чтобы функция их подхватила.Ваша конечная точка 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, прежде чем открывать доступ за пределы вашей внутренней сети — в этой сборке по умолчанию её нет.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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