estimate-template について
estimate-template は、VAT を含む見積書を作成し、承諾された見積もりを請求書に変換する MCP サーバーです。見積データはローカルに保存され、請求書作成時も見積もりの明細額が引き継がれます。
主な機能
- 01VAT・割引付きの番号付き見積もり作成
- 02見積もりの有効期限設定
- 03メールに貼り付けられるテキスト出力
- 04承諾された見積もりを請求書に変換
- 05見積もりの状態と成約率を追跡
- 06A4 PDF 見積書の生成
活用シーン
- 01顧客向けの価格見積もりを準備
- 02期限前の未承諾見積もりを修正
- 03承諾済み見積もりを請求書に変換
MCP 対応
見積もりの作成、編集、出力、承諾、レポート、PDF のツールを MCP クライアントに提供し、有効な見積もりのリソースとフォローアップ用プロンプトも備えます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.zovo.one/mcp/estimate-templateclaude mcp add --transport http theluckystrike-estimate-template https://mcp.zovo.one/mcp/estimate-template{"mcpServers":{"theluckystrike-estimate-template":{"type":"http","url":"https://mcp.zovo.one/mcp/estimate-template"}}}Cursor で開く{"servers":{"theluckystrike-estimate-template":{"type":"http","url":"https://mcp.zovo.one/mcp/estimate-template"}}}VS Code で開く{"mcpServers":{"theluckystrike-estimate-template":{"type":"http","url":"https://mcp.zovo.one/mcp/estimate-template"}}}{"mcpServers":{"theluckystrike-estimate-template":{"serverUrl":"https://mcp.zovo.one/mcp/estimate-template"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.zovo.one/mcp/estimate-template認証が必要ツール
12| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| items | array | はい | 見積もり対象の明細項目 |
| notes | string | いいえ | 合計の下に印字する自由記述。作業範囲や除外事項など。10000 文字以内 |
| client | string | はい | クライアント名または ID。請求書サーバーに登録済みの名前を指定すると、住所、メールアドレス、VAT ID が見積書に追加されます |
| currency | string | いいえ | 既定では、ビジネスのデフォルト通貨が使用されます |
| tax_rate | number | いいえ | 個別の税率が指定されていない明細行に適用する VAT の割合です。既定ではビジネスのデフォルト値が使用されます |
| issue_date | string | いいえ | YYYY-MM-DD。デフォルトはビジネスプロフィールのタイムゾーンでの今日の日付です |
| valid_until | string | いいえ | YYYY-MM-DD 形式の明示的な有効最終日。validity_days より優先されます |
| client_email | string | いいえ | ユーザーから提供された場合のみ使用します。そうでなければ、保存済みの顧客メールアドレスが使用されます |
| client_vat_id | string | いいえ | クライアントの VAT/税務登録 ID |
| validity_days | integer | いいえ | 見積書の有効日数。見積日から起算し、初日と最終日を含みます。デフォルトは 30 日です |
| client_address | string | いいえ | QUOTE FOR ブロックに記載する郵送先住所。改行を含められます |
| discount_percent | number | いいえ | 各明細行に適用する割引率 |
詳細
mcp-quotes
「Acme に 12 時間、90 EUR に加えて 300 EUR のセットアップ料金、VAT 23%、有効期間 14 日で見積もりを作成して」と言うだけで、今日送れる番号付きの見積書が作成されます。税率ごとの VAT を記載した明細表、整数の最小通貨単位での合計、ご利用のタイムゾーンで計算された有効期限、メールにそのまま貼り付けられるプレーンテキスト版が含まれ、Pro では請求書と同じ A4 PDF レイアウトも利用できます。クライアントが承諾したら、quote_accept が見積書を mcp-invoice ストア内の実際の請求書に変換します。同じクライアント一覧と同じ番号体系を使い、金額を再計算せず見積書から引き継ぎます。すべてお使いのマシン上のプレーンな JSON ファイルに保存され、外部にアップロードされることはありません。
公式 MCP Registry に掲載されています(io.github.theluckystrike/quotes-estimates-proposals-vat-win-rate)。
AI Product Index に掲載されています - mcp.zovo.one/s/quotes で利用できるライブのリモートエンドポイント、無料プラン、登録不要です。

チャットから価格と VAT が正確な見積書を送り、1 回の呼び出しで承諾を請求書に変換できます。
60 秒でインストール
@theluckystrike/mcp-quotes の npm 公開は保留中です。それまでは、ワンクリックの .mcpb バンドルまたは
クローンしてビルドする方法をご利用ください。
ワンクリック(.mcpb):最新リリースから quotes.mcpb をダウンロードし、Claude Desktop でダブルクリックします:
https://github.com/theluckystrike/mcp-servers/releases/latest
(claude_desktop_config.json):
{
"mcpServers": {
"quotes": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-quotes"]
}
}
}
Claude Code:
claude mcp add quotes -- npx -y @theluckystrike/mcp-quotes
(.cursor/mcp.json):Claude Desktop と同じエントリーです。
ソースから:
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/invoice -w servers/quotes
先に servers/invoice をビルドしてください。金額、VAT、クライアント、番号付けのエンジンは、ここからインポートされます。その後、クライアントの command を node に設定し、引数として servers/quotes/dist/index.js の絶対パスを指定します。
Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを使って一度 license_activate を呼び出してください。
ツール
| ツール | 機能 |
|---|---|
quote_create | クライアントの見積書を作成します。数量と最小通貨単位での単価を指定する明細項目、項目ごとの VAT または事業者のデフォルト VAT、任意の割引、有効期間を設定します。Q-YYYY-NNNN を割り当てます |
quote_list | クライアント、合計、有効期限、状態(未処理、期限切れ、承諾済み、辞退済み)を含むすべての見積書を表示します。状態、クライアント、見積日で絞り込めます |
quote_get | 1 件の見積書について、変換後の請求書を含む保存済みレコード全体を取得します |
quote_update | まだ未処理の見積書を修正します。合計は再計算されます。承諾済みまたは辞退済みの見積書は編集されません |
quote_send_text | 明細表、VAT の明細、合計、有効期限を含むプレーンテキストの見積書を作成します。メールにそのまま貼り付けられます。無料 |
quote_accept | 見積書を承諾済みとしてマークし、請求書に変換します。ストアが存在する場合は請求書サーバーで直接作成し、それ以外の場合は invoice_create ですぐに使える項目として返します |
quote_decline | 理由を添えて失注としてマークします。未処理の見積書に数えられなくなり、受注率に反映されます |
quote_delete | まだ誰にも見せていない下書きの見積書を削除し、空いた未処理見積書の枠を取り戻します。送信済み、承諾済み、請求書化済み、またはエクスポート済みの場合は、依存する対象を明示して削除を拒否します。無料 |
quote_pdf | A4 PDF を作成し、パスを返します。Pro |
quote_report | 通貨ごとの未処理、承諾済み、辞退済み、期限切れの合計、未処理のままの金額、受注率を表示します。現在の暦年の年初から今日までの期間は無料です |
license_status | 無料モードまたは Pro モードを表示します |
license_activate | Pro キーを有効化します(オフラインで検証) |
リソース:quotes://open は、有効期間内のすべての見積書を JSON として返します。
プロンプト:quote_followup は未処理の見積書、まもなく期限が切れる見積書、すでに期限切れの見積書を確認し、フォローアップ文を作成します。
できること
| 指示 | ツール |
|---|---|
| 「Acme に、12 時間、90 EUR に加えてセットアップ費用 300 EUR、VAT 23%、有効期間 14 日間で見積もりを作成して。」 | quote_create |
| 「送信できるように、メールの文面にして。」 | quote_send_text |
| 「Q-2026-0003 を 20 時間に変更して、有効期間をさらに 2 週間延ばして。」 | quote_update |
| 「Acme が承諾しました。請求書を作成して。」 | quote_accept |
| 「Beta はもっと安いところに決めました。」 | quote_decline |
| 「誤って Acme に 2 回見積もりを出したので、2 件目を削除して。」 | quote_delete |
| 「まだ保留中のものと、受注率を教えて。」 | quote_report |
| 「返答がないまま期限切れになった見積もりはどれですか?」 | state: "expired" を指定した quote_list |
使用例
You: Quote Acme for 12 hours of API work at 90 EUR plus a 300 EUR setup fee,
23% VAT, good for 14 days.
quote_create {
client: "Acme", currency: "EUR", validity_days: 14,
items: [
{ description: "API work", quantity: 12, unit_price_minor: 9000, tax_rate: 23 },
{ description: "Setup fee", quantity: 1, unit_price_minor: 30000, tax_rate: 23 }
]
}
-> Q-2026-0001, valid until 2026-09-18
Assistant:
API work 12 x EUR 90.00 = EUR 1080.00
Setup fee 1 x EUR 300.00 = EUR 300.00
Subtotal EUR 1380.00
VAT 23% on EUR 1380.00 EUR 317.40
TOTAL EUR 1697.40
Valid until 2026-09-18.
You: They said yes.
quote_accept { id: "Q-2026-0001" }
-> accepted, invoice INV-2026-0004, due 2026-09-18, total EUR 1697.40
価格は最小通貨単位で入力します。9000 は EUR 90.00、150000 は JPY 150,000 です。入力値に小数は一切含まれないため、価格が 10 分の 1 の値で入力されることはありません。
Free と Pro
| Free | Pro | |
|---|---|---|
| オープンな見積もり | 同時に 5 件 | 無制限 |
quote_send_text(メール送信用テキスト) | はい、無制限 | はい、無制限 |
| 承諾、辞退、修正、VAT、割引、多通貨 | はい | はい |
quote_delete(下書きのみ)と重複防止機能 | はい | はい |
quote_pdf | いいえ | はい |
quote_report(案件の進捗と受注率) | 今年の年初から現在まで | 任意の日付範囲 |
| PDF のブランディング | 該当なし | フッターのクレジット表記なし。ロゴも使用可能 |
上限の対象は、まだ OPEN 状態の見積もりです。承諾、辞退、または期限切れになると枠が空くため、見積もりをきちんと完了させるフリーランサーが上限に達することはありません。枠の無駄を防ぐ機能がほかに 2 つあり、どちらも無料です。quote_create は、すでにオープンな見積もりと同一の見積もりを拒否し、該当する見積もりを示します。また、quote_delete は誰にも見られていない下書きを削除し、枠をすぐに空けます。
Pro は 1 回限りの $19、またはコレクション内のすべてのサーバーで利用できる $39 の生涯ライセンスです。
実測に基づく説明:承諾された見積もりを再計算せず、コピーする理由
quote_accept は、保存済みの見積もり明細から請求書を作成します。承諾時点の価格から合計額を再計算する方法も考えられますが、実測の結果、採用しませんでした。この方法では、共有ビジネスプロフィールに現在設定されている VAT 税率が使われ、クライアントに提示した時点の税率が使われないためです。
実測(test/adversarial.test.mjs、「見積もりから承諾までの間に VAT 税率が変更されても、合意した合計額は変わらない」):プロフィールの既定税率 23%で、税抜 EUR 1,000.00 の見積もりを発行すると、クライアントに提示される金額は EUR 1,230.00 です。クライアントから返答がある前に、プロフィールの default_tax_rate が 8%に変更されます。これは税率の変更、新しいクライアント区分、設定の修正などによって起こり得ます。承諾時に再計算すると、合意した書類の金額より EUR 150.00 少ない金額で請求書が作成されます。しかも、その見積もりでは、どちらのレコードにも金額が異なる理由が記録されません。保存済みの明細をコピーすれば EUR 1,230.00 で請求書が作成され、tax_lines[0].rate === 23 というアサーションも成立します。
見積もりの価格を最小通貨単位で受け取り、小数を拒否するのも、同じルールに基づいています。見積もり上の数値と請求書上の数値は、最後まで同じ整数です。
数値、金額、日付
見積書 ID は Q-YYYY-NNNN です。カウンターは年ごとに管理され、見積書を保存する前に書き込まれるため、クラッシュが発生すると ID は消費され、再利用されません。また、既存の ID もスキャンするため、復元した quotes.json から、クライアントがすでに受け取った書類に記載されている ID が再び払い出されることはありません。年は意図的に ID の一部になっています。年初に単純な Q-0001 へリセットすると、昨年 1 月の見積書と衝突するためです。
金額は最初から最後まで整数の補助通貨単位で扱い、1 通貨単位に相当する補助通貨単位の数は、mcp-invoice の ISO 4217 テーブルに基づきます。ほとんどの通貨では 2、JPY、KRW、ISK などでは 0、KWD や湾岸のディナールでは 3、CLF と UYW では 4 です。VAT の計算や金額フォーマッターをここに二重に実装しているわけではありません。computeTotals、currencyDecimals、formatMoney は @theluckystrike/mcp-invoice/lib からインポートされるため、見積書と、それをもとに作成される請求書は、明細ごとに計算した後に合算する場合も、同じ丸め結果になります。1 つの見積書で使える通貨は 1 種類です。明細間で通貨が混在している場合、最初に登場した見出しの通貨で合算するのではなく、処理を拒否します。
日付は ISO 形式の YYYY-MM-DD です。「今日」の日付、したがって見積書の有効期限が切れているかどうかは、共有ビジネスプロファイルで timezone が設定されている場合、そのタイムゾーンで計算されます。そうでないと、まだ米国時間のままのノートパソコンからワルシャワ時間の 00:30 に発行した見積書が前日付になり、1 日早く期限切れになってしまうためです。
データの保存方法
見積書と ID カウンターは ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/quotes/ の下に、それぞれ quotes.json と counter.json として保存されます。生成したファイル用に pdf/ サブフォルダーもあります。quote_accept で作成された請求書は請求書サーバーのディレクトリ .../mcp-servers/invoice/ に書き込まれるため、そこで invoice_list を実行すると一覧に表示され、番号の連番とクライアント一覧も共有されます。
状態を変更するすべての呼び出しは、.../quotes/.lock のアドバイザリロックディレクトリ内で実行されます。請求書を書き込む処理は必ず .../invoice/.lock も取得します。常に見積書、次に請求書の順で取得し、servers/recurring と同じ順序にすることで、2 つのプロセスがデッドロックしないようにしています。保存時はプロセスごとの一時ファイルに書き込み、配置先のファイル名に変更します。実測では、1 つのデータディレクトリに対して 2 つのプロセスが見積書を 40 件作成すると、見積書 40 件と重複のない ID 40 件が残ります(test/concurrency.test.mjs)。
保存ファイルが有効な JSON でない場合、「見積書なし」として扱うことはありません。ファイルはバイト単位でそのまま quotes.json.corrupt-<timestamp> に移動され、隣に .corrupt マーカーが書き込まれます。その後のすべての呼び出しは、読み取りを含めて、人が問題を解決するまで失敗します。解決するには、restore a good copy ... then delete the marker の手順に従ってください。
制限事項と正直な注意点
- 無料プランでは、同時に保持できる未完了の見積書は 5 件です。テキストのエクスポート、承諾、辞退、修正は無料プランでも無制限に利用でき、パイプラインレポートは現在の暦年の年初から今日までの結果を無料で表示します。PDF と、より長い期間を指定したレポートは Pro の機能です。
- 承諾時には共有エンジンを通じて請求書が作成されるため、請求書サーバー独自の無料プランの上限である「暦月あたり 3 件の請求書」は適用されません。ここでは見積書の上限が適用され、その旨がレスポンスに示されます。
- 見積書の有効期限が切れている場合、有効期限を延長する(
quote_update {valid_until})か、allow_expired: trueを指定するまで、quote_acceptは拒否されます。これは意図的な制約です。有効期限が切れた価格は、再確認する必要があるためです。 - メールは送信されません。
quote_send_textでテキストを取得し、quote_pdfでファイルを取得できます。クライアントへの送付はご自身で行ってください。 - 通貨換算には対応していません。見積書の通貨は作成時に固定され、すべての明細がその通貨で記載されている必要があります。
- 承諾は取り消せません。作成された請求書は番号の付いた書類であるため、承諾を取り消すことはできません。代わりに、請求書サーバーでその請求書をキャンセルしてください。
プライバシー
すべてのデータはローカルに保存されます。お使いのデータディレクトリ内のプレーンな JSON ファイルです。アカウントも API キーも必要なく、いかなるネットワーク通信も行いません。ライセンスキーはオフラインで検証されます。
theluckystrike が開発しました。サポート:[email protected]
MCP サーバーとしてこれらのドキュメントを使用する
任意の MCP クライアント(Claude、Cursor、Windsurf、VS Code)から、GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます。インストールは不要です。
- Docs MCP URL: https://gitmcp.io/theluckystrike/mcp-quotes
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。