lightspeed-x
lightspeed-x-mcp
Model Context Protocol サーバーであり、Lightspeed X(旧Vendとして知られるプラットフォーム、Lightspeed Retail POS)向けです。Claudeやその他のMCPクライアントに、店舗の売上、在庫、商品、顧客への読み取り専用アクセスも提供し、集約も行います。売上、数量、COGS、粗利益、マージン、割引、平均バスケット金額、バスケットサイズを、指定した任意の次元でグループ化して返します。
構造上、読み取り専用です。 すべてのツールはGETリクエストを発行します。このサーバーには、アカウント内に何かを作成・更新・削除できるコードパスがありません。そのため、稼働中の小売店を視野に入れて接続できます。
"What sold best yesterday?" → lightspeed_sales_report
"Revenue by store last week" → lightspeed_sales_report, group_by: outlet
"Which SKUs need reordering?" → lightspeed_inventory_report, status: reorder_needed
"What are our busiest hours?" → lightspeed_sales_report, group_by: hour
"Margin by brand this month" → lightspeed_sales_report, group_by: brand
"Pull up invoice 162220" → lightspeed_list_salesなぜこれが存在するのか
Lightspeed X APIはVend時代の生き残りであり、単純だクライアントを遅くしたり、静かに間違った結果に導いたりする鋭いエッジがあります。このサーバーはそれらを処理するので、モデルが同じことをする必要はありません:
現実 | このサーバーが行うこと |
| バージョンシーケンスを二分探索して日付範囲を特定し、その後ローカルでフィルタリングします。パラメータを信頼する素朴なクライアントは、完全な自信を持って誤った答えを返します。 |
ページネーションはカーソルベースではなく、 バージョンベースです。 | クライアントの |
ドキュメント上の最大 | 一括スキャンは5000を使用します(売上は完全な明細項目を持つため、1000を使用します)。12万6,000行の在庫スキャンが630リクエストではなく26リクエストで完了します。 |
売上の明細項目には | キャッシュされた商品カタログに結合するため、すべてのレポートが人が読める形式になります。 |
店の1日はUTCの0時には始まりません。そのため、単純な分割では夜の売上が間違った日に計上されます。 | 日・月・曜日・時刻のバケットは、店舗自身のIANAタイムゾーンで解決されます。 |
返品はマイナス数量・マイナスの合計数を持つ明細項目として記録されます。 | 特別な処理をしなくても、すべての指標で正しく相殺されます。 |
| 独立したケースとして処理されます。 |
レート制限は 5分間で | 429 と 5xx で指数バックオフとリトライを実施します。 |
売上計算の導出方法
連続した200件の実売上データで検証されています。すべてがその売上自体の totals.price に2セント以内で一致しました:
line revenue excl tax = line_items[].pricing.total (net of discount, already x quantity)
line COGS = line_items[].pricing.cost_total
line discount given = line_items[].pricing.discount_total
line tax = line_items[].tax.totalさらに、実データでの3つの検証も完全一致です:
1週間の1日ごとの売上の合計が、その週の総計と一致する。
group_by: outletレポートの店舗の行が、その店舗のサーバーサイドフィルタで再実行した同じレポートと一致する。支払い種別ごとの支払い額の合計が、税込み売上と一致する。
Related MCP server: Shopify MCP Server
インストール
オプション1: Claude Codeプラグインとして(推奨)
わずか3つのコマンドで、クローン不要、ビルド不要、編集するパスも不要です:
/plugin marketplace add genvjacobc/lightspeed-x-mcp
/plugin install lightspeed-x@lightspeed-x-mcp
/lightspeed-x:setup3つ目のコマンドは、同梱されたセットアップスキルを実行します。このスキルは、トークンの取得を支援し、正しい場所に書き込み、ライブアカウントとの接続を検証してから、動作したことを通知します。
また、プラグインにはreports スキルも含まれているため、Claudeはどのツールがどのような小売関連の質問に解答するか、取得した数値をどう読むか理解できます。
認証情報は ${CLAUDE_PLUGIN_DATA}/credentials.env に保存され、このディレクトリはユーザーごとの領域で、プラグインの更新後も残ります。マシン間やチームメンバー間で共有されるものはありません。
尚、/plugin uninstall はこのディレクトリを削除するため、アンインストールして再インストールする操作はセットアップの再実行を意味します。トークン自体はLightspeed上で有効なままなので、使い終わったらそこで生成してください。
オプション2: スタンドアロンのMCPサーバーとして
git clone https://github.com/genvjacobc/lightspeed-x-mcp.git
cd lightspeed-x-mcp
npm install
npm run buildNode 18 以降が必要です。
APIトークンを取得する
Lightspeed X バックオフィスで: Setup → Personal Tokens → Add Personal Token。ダイアログを閉じる前にコピーしてください。一度だけ表示されます。
ロールアウトを計画する前に知っておくべき2つの制限があります:
管理者ユーザーのみがパーソナルトークンを作成でき、Lightspeedはこの機能をPlusプランに限定しています。 Setupの下にPersonal Tokensが表示されない場合、管理者アクセス権を持つ誰かがあなたの代わりにトークンを作成する必要があります。
Lightspeedは読み取り専用トークンを提供していません。 トークンは、作成したユーザーのすべての権限保持します。このサーバーは常に
GETのみを発行しますが、トークン自体は汎用のvinfidential情報です。そのため、パスワードのように密に取り扱い、漏洩した場合は同じ画面で失効させてください。
動作確認
npm run doctorこれにより、資格情報の検証、ライブAPIの呼応、失敗の正確な原因を特定します。ストアドメインとトークンの誤りはどちらもLightspeedからHTTP 401を返すため、診断ツールは推測ではなく、その両方の可能性を報告します。
設定
.env.example を .env にコピーして、ストア情報を入力してください:
LIGHTSPEED_DOMAIN=mystore
LIGHTSPEED_TOKEN=your_personal_tokenLIGHTSPEED_DOMAIN は、単純なプレフィックス (mystore)、ホスト名 (mystore.retail.lightspeed.app)、または完全なURLを受け入れます。3つともすべて同じ場所に解決されます。
複数のストア。 LIGHTSPEED_<NAME>_DOMAIN と LIGHTSPEED_<NAME>_TOKEN の行が組で、小文字の <name> という名前のアカウントを定義します。ツールはさらにオプションの account 引数を受け取ります:
LIGHTSPEED_NORTH_DOMAIN=northstore
LIGHTSPEED_NORTH_TOKEN=token_for_north
LIGHTSPEED_SOUTH_DOMAIN=southstore
LIGHTSPEED_SOUTH_TOKEN=token_for_south
LIGHTSPEED_DEFAULT_ACCOUNT=north環境内に既に存在する値は常に .env ファイルより優先されるため、認証情報を直接注入する環境が優先されます。
Claude Codeとの登録(スタンドアロン経路で人)
プラグインをインストールしている場合は、この手順を省略できます。プラグインはサーバー自身を登録します。
claude mcp add lightspeed-x -s user -- node /absolute/path/to/lightspeed-x-mcp/dist/index.jsまたは、手動で設定に追加することもできます:
{
"mcpServers": {
"lightspeed-x": {
"command": "node",
"args": ["/absolute/path/to/lightspeed-x-mcp/dist/index.js"],
"env": {
"LIGHTSPEED_DOMAIN": "mystore",
"LIGHTSPEED_TOKEN": "your_personal_token"
}
}
}
}Claude Desktop の場合は、同じブロックを claude_desktop_config.json に配置します。
MCP Inspectorでローカルに検証します:
npm run inspectツール
lightspeed_sales_report
メインのツール。日付範囲を集計し、グループ化します。
引数 | 説明 |
|
|
|
|
|
|
| ランキングの制御 |
| サーバーサイドで適用されるため、非常に高速です |
| デフォルトは |
| 日次境界のためのIANATゾーンオーバーライド |
| Outlet | Revenue | Units | Sales | Basket value | Gross profit | Margin |
| --------------- | --------: | ----: | ----: | -----------: | -----------: | -----: |
| South Lincoln | $3,401.60 | 193 | 91 | $37.38 | $2,342.35 | 68.9% |
| York | $3,222.86 | 159.2 | 73 | $44.15 | $2,238.77 | 69.5% |lightspeed_list_sales
個別の取引を新しい順に返し(オプションで行アイテムを展開)、1件のレシートへのド派ノ、合計の監査、返品の確認に使用します。outlet_id、customer_id、min_total でフィルタリングします。
lightspeed_inventory_report
手持ち在庫を、商品名と店舗名に結合し、棚にあるものの小売価値と原価価値を表示します。
重要になるのは status 引数です:
status | 意味 |
| まだ販売可能ただし再注文点以下。少なくなっているもの。 |
| 再注文点以下。2024ゼロやマイナスを含む。完全な仕入先リスト。 |
| 正確にゼロ。 |
| ゼロ未満、つまり在庫数の誤りを示します。 |
| ゼロより多い / すべて。 |
group_by は product、outlet、category、brand、supplier に展開できます。これにより、「各カテゴリにどれくらいの在庫価値があるか」という質問に答えます。
lightspeed_search_products
名前、バリアント名、SKU、ハンドルを対象にしたフリーテキスト検索で、ブランド / サプライヤ / カテゴリ / タグのフィルタが付いています。APIの検索エンドポイントは検索品質が低いため、キャッシュされたカタログに対してローカルで正確な部分文字列一致を行います。
lightspeed_get_product
IDまたは完全一致のSKUで、1つの商品の詳細を返します。店舗ごとの在庫と起算済みマージンさあらため含みます。
lightspeed_search_customers / lightspeed_get_customer
メールアドレス(APIに送信)、または名前・電話番号・顧客コード(問い合わせコード)で顧客を検索します。販売ツールが customer_id フィルタとして受け取るUUIDを返します。このツールは個人データを返します。それに応じて取り扱ってください。
lightspeed_list_outlets / lightspeed_list_registers / lightspeed_list_accounts
ストア名を、レポートフィルたが受け取る店舗UUIDに変換します。POSレーンを(eコマースレジスタ含む)一覧表示し、サーバーが到達できるアカウントを確認します。lightspeed_list_accounts がトークンを返すことはありません。
lightspeed_list_reference_data
brands、suppliers、product_categories、tags、customer_groups、payment_types、promotions、taxes、users をまとめて扱う 1 つのツールです。レポートを絞り込む前に、ブランドやカテゴリの正確なスペルを確認するために使用します。
lightspeed_api_get
専用ツールがない任意のエンドポイントのための脱出ハッチです: /consignments、/price_books、/serial_numbers など。送信されるのは GET のみです。
パフォーマンスと制限
売上はサーバー側で日付によるフィルタリングができないため、レポートはその影響を受けます。
クエリ | 一般的なコールドタイム |
1 日分、全店舗 (~900 件の売上) | 初回は 15〜20 秒、その後は約 2 秒 |
1 週間分 (~5,900 件の売上) | 約 20 秒 |
在庫全体のスキャン (~126,000 行) | 初回は約 25 秒、その後は即時 |
商品 / 店舗 / リファレンスの検索 | 初回以降は 1 秒未満 |
初回呼び出しの大部分は、日付範囲を特定するための約 30 回の単一行プローブです。このプローブはアカウントごとに記憶されるため、セッション内の 2 回目以降のレポートでは通常不要です。カタログ、店舗、レジ、ユーザー、在庫のスキャンは 15 分間キャッシュされます。
高速に保つには: 1 つの店舗だけを対象にする場合は outlet_id を渡し、日付範囲は狭めにしてください。LIGHTSPEED_MAX_SALES(デフォルト 200,000)は 1 回の呼び出しの上限を設定し、ツールは結果を切り詰めた場合、黙って不完全な回答を返すのではなく、その旨を明確に伝えます。
正直な注意点。 日付範囲はバージョンによって特定されるため、範囲より前に作成され、範囲より後に編集された売上は見落とされる可能性があります。LIGHTSPEED_SEEK_MARGIN_DAYS(デフォルト 1)は、検索が範囲より前のどのあたりを目標にするかを設定します。この値を上げると、より多くのレコードをスキャンするコストと引き換えに、安全網を広げられます。これは日付で絞り込めない API に本来備わる特性であり、ここで手を抜いたわけではありません。
設定リファレンス
変数 | デフォルト | 用途 |
| 必須 | ストアのプレフィックス、ホスト、または URL |
| 必須 | パーソナルトークン |
| 省略可 | 追加の名前付きアカウント |
| 最初のアカウント | ツールが |
|
| API バージョンのパスセグメント |
|
| 販売呼び出しごとの安全上限 |
|
| バージョンアンカーを探すときの余裕日数 |
| 省略可 | 資格情報ファイルの明示的なパス。プラグインはこれを |
開発
npm run dev # run from source with tsx
npm run build # compile to dist/
npm run inspect # MCP Inspector against the built server
npm run doctor # credentials + live connectivity check
npm run validate-plugin # validate the plugin manifestssrc/
index.ts entry point, env loading, tool registration
config.ts account discovery from the environment
lib/
client.ts HTTP client, retry, version pagination
version-seek.ts date to version binary search
sales.ts sale fetching and metric aggregation
catalog.ts cached product, outlet, register, inventory lookups
time.ts timezone-aware day boundaries
format.ts Markdown table rendering, tool results
tools/ one file per tool groupツールは未焼成の JSON ではなく Markdown テーブルを返します。モデルは深く入れ子になった JSON のブロックよりも、整理されたテーブルの方が確実に読み取れ、トークン消費も抑えられます。基になる数値は、プログラムから呼び出す向利用者向けに structuredContent にも格納されます。
貢献する際に守る価値のある 2 つの慣習があります:
ツールハンドラーから例外を投げない。 失敗は
isErrorの結果として返します。guard()のラッパーがこれを強制します。console.logを発行しない。 標準出力は JSON-RPC フレームを伝送します。診断情報はconsole.errorに出力します。
リポジトリ構成
.claude-plugin/ plugin + marketplace manifests
.mcp.json MCP server declaration used by the plugin path
skills/setup/ guided connection walkthrough
skills/reports/ how to answer retail questions with these tools
src/ TypeScript source
dist/ compiled output, committed so plugin installs need no builddist/ は意図的に git で追跡されています。Claude Code プラグインのインストールではビルドステップが実行されず、コンパイル済みサーバーをリポジトリに同梱して提供する必要があるためです。ソースの変更をコミットする前に npm run build を実行し、リリース時には package.json、.claude-plugin/plugin.json、.claude-plugin/marketplace.json の version をまとめて更新してください。
ライセンス
MIT。ライセンスは ライセンス を参照してください。
Lightspeed Commerce とは提携していませんし、その推奨も受けていません。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Shopify store data (products, customers, orders) via GraphQL, providing comprehensive tools for store management through Claude.873MIT
- AlicenseAqualityDmaintenanceProvides AI assistants with real-time access to Shopify store analytics, sales data, and inventory through ShopifyQL and the Admin GraphQL API. It enables users to query store performance, customer metrics, and marketing insights using natural language.13MIT
- AlicenseBqualityCmaintenanceRead-only MCP server for querying Shopify analytics data, including orders, customers, products, sales, retention, and attribution.19MIT
- AlicenseNot gradedqualityCmaintenanceA local-first, read-only MCP server for the Loyverse POS API that lets AI assistants query receipts, items, employees, customers, stores, and sales analytics — built for secure local use with Personal Access Tokens.6Apache 2.0
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.
Query Churn Solution cancellation-flow metrics, revenue, and feedback analytics (read-only).
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/genvjacobc/lightspeed-x-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server