catalogue について
catalogue は商品価格と作業料金を管理する MCP サーバーで、見積書や請求書を作成するチーム向けです。日付に応じた価格を各サーバー用の明細形式に変換し、不明なコードの価格を推測せず、過去の価格も書き換えません。
主な機能
- 01適用開始日ごとの SKU 価格管理
- 02役割ごとの時間単価設定
- 03請求書・見積書向け明細の解決
- 04テキストまたは PDF の価格表表示
- 05カタログの価格状況レポート
活用シーン
- 01正確な価格の見積明細作成
- 02カタログ SKU から請求項目を作成
- 03過去の日付に有効な価格の確認
- 04通貨別に未設定価格を確認
MCP 対応
MCP クライアントに、カタログ、料金表、明細解決、価格表のツールを提供します。`lines_resolve` は `invoice_create` と `quote_create` に対応する明細を返します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.zovo.one/mcp/catalogueclaude mcp add --transport http theluckystrike-catalogue https://mcp.zovo.one/mcp/catalogue{"mcpServers":{"theluckystrike-catalogue":{"type":"http","url":"https://mcp.zovo.one/mcp/catalogue"}}}Cursor で開く{"servers":{"theluckystrike-catalogue":{"type":"http","url":"https://mcp.zovo.one/mcp/catalogue"}}}VS Code で開く{"mcpServers":{"theluckystrike-catalogue":{"type":"http","url":"https://mcp.zovo.one/mcp/catalogue"}}}{"mcpServers":{"theluckystrike-catalogue":{"serverUrl":"https://mcp.zovo.one/mcp/catalogue"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.zovo.one/mcp/catalogue認証が必要ツール
12| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sku | string | はい | コード。例:WEB-AUDIT。大文字で指定し、空白は使用しません。請求書の明細行はこのコードに紐づけられます |
| name | string | はい | 顧客向け書類に記載する項目名。例:Website audit |
| note | string | いいえ | |
| tier | string | いいえ | 価格帯。例:trade、list。デフォルトは standard です。2 つ目の価格帯は Pro 版です |
| unit | string | いいえ | 単位。例:each、hour、month、1000 words。デフォルトは each です。初回設定時は必須です |
| currency | string | いいえ | この価格に使用する ISO コード。デフォルトでは共有ビジネスプロフィールの通貨を使用します |
| vat_rate | number | いいえ | この製品の VAT 率。解決済みの明細行では共有プロフィールのデフォルト値を上書きします |
| valid_from | string | いいえ | この価格の適用開始日です。形式は YYYY-MM-DD。デフォルトは今日です |
| price_minor | integer | はい | 1 個あたりの価格を最小通貨単位の整数で指定します。45000 は EUR 450.00 です。小数は使用できません |
| duplicate_ok | boolean | いいえ | 別のコードに同じ商品と同じ価格がすでに登録されていても追加します。デフォルトは false です |
詳細
mcp-catalogue
公式 MCP Registry(io.github.theluckystrike/catalogue)に掲載されています。
請求書と見積書の両方が参照できる場所に、価格表と料金表をそれぞれ 1 つずつ保管します。
商品にコード、名前、単位、最小通貨単位での価格、そしてその価格が適用される日を登録します。役割にも同じ方法で時間単価を登録します。次に、顧客が購入した品目のリストをカタログに渡すと、価格が設定済みの明細項目が返されます。数量、説明、単価、VAT 税率が、invoice_create が受け取る引数の形式と quote_create が受け取る引数の形式にそれぞれ正確に一致します。
何も捏造せず、二重に保存することもありません。SKU は価格の行を保持し、それぞれに適用開始日があります。日付時点の価格は呼び出し時に算出されるため、7 月に価格を上げても、6 月の案件の見積価格が書き換わることはありません。不明なコードに対しては、推測した価格ではなく、コードを明記した拒否が返されます。
@theluckystrike/mcp-catalogue の npm 公開は保留中のため、現在 npx -y @theluckystrike/mcp-catalogue は 404 を返します。それまでは、ワンクリックで使える .mcpb バンドルか、クローンしてビルドする方法をご利用ください。
インストール
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または
%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"catalogue": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-catalogue"]
}
}
}
Claude Code
claude mcp add catalogue -- npx -y @theluckystrike/mcp-catalogue
Cursor
~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクト)に、Claude Desktop と同じエントリを設定します。
ツール
| ツール | 機能 |
|---|---|
sku_set | カタログ項目を追加するか、価格を再設定します。コード、名前、単位、任意の VAT 税率、および通貨、価格帯、適用開始日を指定した最小通貨単位での価格を設定します |
sku_get | 指定日の SKU の価格を、該当する行と、すでに登録されている後続の価格とともに返します |
sku_list | 適用中の価格を含むカタログを、コードのプレフィックス、通貨、価格帯で絞り込みます |
sku_delete | 誤って追加した項目を削除します。ほかの項目が依存していないものに限ります。すべてのプランで無料です |
rate_set | 役割の料金表に、適用開始日と、任意で SKU を紐付けて時間単価を設定します |
rate_get | 指定日の役割の時間単価、またはすべての料金表を返します |
lines_resolve | SKU と役割の明細リストに価格を設定し、invoice_create 用および quote_create 用の項目に変換します |
price_list_text | 適用中の価格、適用開始日、続いて人件費をプレーンテキストで出力します |
price_list_pdf | 通貨と価格帯ごとの A4 PDF 形式の価格表を出力します |
catalogue_report | SKU、適用中の行、後続の行に置き換え済みの行、デフォルト通貨で価格がない行を表示します |
license_status / license_activate | Free または Pro の状態と、アップグレード方法を表示します |
Free と Pro の比較
| Free | Pro | |
|---|---|---|
| カタログ内の SKU | 25 | 無制限 |
| SKU ごとの価格行 | 100 | 100 |
| 料金表 | 無制限 | 無制限 |
| 設定、価格取得、一覧表示、明細の解決 | はい | はい |
| 価格表(テキスト) | はい | はい |
| 未使用の SKU の削除 | はい | はい |
standard 以外の価格帯 | いいえ | はい |
| 価格表(PDF) | いいえ | はい |
| カタログレポート | いいえ | はい |
Pro の購入先:https://mcp.zovo.one/buy/catalogue(このサーバーは一度限りの支払いで $19、すべてのサーバーは $39、生涯利用可能)。キーはオフラインで検証され、情報が外部に送信されることはありません。
価格の決まり方
価格行は (currency, tier, valid_from, amount) です。ある日付の価格は、その日付以前で最も新しい valid_from の行から、該当する通貨と価格帯に基づいて決まります。すでに存在するキーに行を設定すると置き換えられるため、同じキーを持つ行が 2 つできることはなく、「その日の価格」が運任せになることもありません。すべての行より前の日付には価格がなく、拒否されます。まだ存在していなかった価格は、価格とはみなされません。
通貨の換算は行いません。PLN の見出しの下に EUR の価格を表示するのは捏造した数字になるため、指定された通貨の価格がない SKU は、価格なしとして一覧表示され、catalogue_report で件数が集計されます。
測定されたインサイト
このカタログが連携する2つのサーバーは、同じ価格を異なる単位で受け取り、その差は正確に100倍です。 invoice_create の項目は MAJOR 単位の unit_price を受け取ります(「主要通貨単位での単価。例:90 EUR なら 90」、servers/invoice/src/index.ts)。一方、quote_create の項目は MINOR 単位の unit_price_minor を受け取ります(「9000 = 90.00 EUR、90 = JPY 90。小数は不可」、servers/quotes/src/index.ts)。どちらのフィールドも単価と呼ばれ、どちらも単なる数値を受け取ります。また、どちらのツールも、渡された数値がもう一方のツール向けにスケーリングされているかどうかを判別できません。unit_price に渡された 45000 は、EUR 45,000.00 の有効な請求書明細になります。
test/unit.test.mjs の解決例で測定すると、正しいペイロードの合計は EUR 2,613.63 です。同じ項目を使い、見積もりサーバーのフィールドを請求書サーバーのエンジンに渡すと、合計は EUR 261,363.00 となり、テストスイートではこれが正確に100倍であると検証しています。KWD のような小数点以下3桁の通貨では1000倍になります。そのため、カタログでは情報を損なわない唯一の形式である最小通貨単位で価格を保存し、1回の呼び出しで2種類のペイロードを両方とも生成し、それぞれの単位を出力します。これが、lines_resolve が、呼び出し側で再構成する「価格」を1つ返すのではなく、2つのペイロードを返す理由のすべてです。
さらに、保存される価格はすべて最小通貨単位の整数です。そのため、invoice_create 自身の computeTotals は、主要通貨単位の値を元の整数にそのまま丸めて戻します。解決結果の rounding_drift_minor は仕組み上ゼロであり、テストスイートでも検証しています。これは「請求書には価格表に表示された金額が記載される」ことを機械的に検証できる形にしたものです。
プライバシー
すべてのデータはローカルに保存されます:${XDG_DATA_HOME:-~/.local/share}/mcp-servers/catalogue/。どのツールもネットワーク呼び出しを行いません。このサーバーがそのディレクトリの外でアクセスするファイルは、デフォルト通貨、デフォルトの VAT 率、および価格表の先頭に表示する名前を取得するために読み取り専用で参照する、共有ビジネスプロフィールのみです。請求書も見積書も作成しません。
theluckystrike によって作成されました。
これらのドキュメントを MCP サーバーとして使用する
MCP クライアント(Claude、Cursor、Windsurf、VS Code)は、インストール不要で GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます:
- ドキュメント MCP URL:https://gitmcp.io/theluckystrike/mcp-catalogue
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。