Skip to main content
Glama
sauravakij

Production Plan Variance MCP Server

by sauravakij

生産計画差異 MCPサーバー

生産計画差異・課題追跡ダッシュボード(erp.peopledesk.io/production-management/mes/ProductionPlanVariance)を、DWHデータベースに直接接続して5つの読み取り専用ツールとして公開する、小さなMCPサーバーです。

ツール

対応する画面要素

get_variance_summary

4つのタイル: 計画ライン / 目標達成 / 差異フラグ / 課題未登録

list_plan_variance

行グリッド(計画コード、品目、工場、数量、差異、理由、ステータス)

list_variance_reasons

「差異の理由」設定とエスカレーションメール(工場別)

list_plants

工場フィルタードロップダウン

list_shop_floors

職場フィルタードロップダウン

以下のDWHテーブルを照会します(ライブスキーマで検証済み): tblProductionPlanVarianceIssueArctblProductionPlanVarianceReasonArctblPlantArctblShopFloorArc

この構成にした理由

データベースの認証情報を誰も入力せずに、JSONファイルだけで誰でも使えるようにするというご要望でした。そこで、次のような設計にしています。

  • サーバーは1つ(あなたがホスト)。DB認証情報はサーバー自身の環境変数(.env、コミットもクライアントへの送信もされません)に保持します。

  • 他の全員は、mcp-config.jsonをMCPクライアント(Claude Desktop、Claude Codeなど)にドロップするだけです。このファイルにはURLしか含まれておらず、秘密情報は一切ありません。SQL Serverと通信するのはサーバーだけです。

  • すべてのクエリは、src/queries.jsで定義された固定のパラメータ化されたSELECT文です。自由形式のSQLツールは公開されていないため、このMCPサーバーを使う誰も、ダッシュボード自身のデータ以外を照会したり、書き込みを実行したりすることはできません。

⚠️ デプロイ前に: DB権限を確認してください

この構築中に、mssql-test-server接続を使ってスキーマ(テーブル/カラム)を検証しましたが、tblProductionPlanVarianceIssueArc / tblPlantArc などに対する実際の行レベルのSELECTはすべて失敗しました。スキーマのイントロスペクションは機能しましたが、データクエリは機能しませんでした。これはほぼ間違いなく、その特定のSQLログイン(mcp_user)の権限不足が原因であり、これらのクエリの問題ではありません。本番公開前に:

  1. 上記のDWHテーブルに対してSELECTのみの権限を持つSQL Serverログインを作成(または再利用)してください。

  2. 手動でテストしてください。例:

    SELECT TOP 5 * FROM dbo.tblProductionPlanVarianceIssueArc;
  3. そのうえで、.envDB_USER/DB_PASSWORDをそのログインに設定してください。

デプロイ

オプション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_SERVERDB_PORTDB_DATABASEDB_USERDB_PASSWORDDB_ENCRYPTDB_TRUST_CERTを追加し(.env.exampleと同じ値)、関数がそれらを取得できるよう再デプロイします。

  5. MCPエンドポイントはhttps://<your-project>.vercel.app/mcpになります。 そのURLをmcp-config.jsonに入れて配布してください。

注: SQL ServerはVercelのネットワークから到達可能である必要があります(つまり、オフィスのIPのみにファイアウォール制限されていないこと)。デプロイ後に接続がタイムアウトする場合は、203.202.241.211の管理者に確認してください。また、このURLを公開する前に、/mcpの前面に何らかの認証を追加してください(下記の注を参照)。現状では、リンクを知っている誰でもこれらの読み取り専用ツールを呼び出せます。

配布

mcp-config.jsonを編集し、YOUR-HOSTED-DOMAINを実際のドメインに置き換えてから、その1ファイルを共有してください。誰でもMCPクライアントに追加するだけで、このダッシュボードのデータへの読み取り専用チャットアクセスがすぐに得られます。インストール不要、認証情報不要、SQLの知識も不要です。

注意事項 / ご自身で確認すべき点

  • ダッシュボードの**「機械」**列(例: "Aromatic Unit Line - 01")は、取得したスキーマのtblProductionPlanVarianceIssueArcには見つかりませんでした。おそらく、お使いの環境の生産ライン/作業センターのテーブルを介して解決されるものと思われます。list_plan_varianceのクエリにはまだ含まれていません。ソーステーブルを確認したら、src/queries.jsに適切なJOINを追加してください(候補: tblProductionLineArctblWorkCenterArc)。

  • get_variance_summaryの「課題未登録」ロジックは、「理由やステータスがまだ記録されていない差異フラグ」を意味すると仮定しています。アプリの実際のビジネスロジックと照合して確認し、異なる場合はQUERY_SUMMARYを調整してください。

  • 内部ネットワークの外に公開する前に、/mcpの前面に認証(APIキー/OAuth)を追加してください。このビルドにはデフォルトで認証はありません。

-
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