ブログ一覧に戻る

Build in Public Day41 - MCP の経営者向け Tool を 1 日で 8 個拡張した話 (Phase 2B 完備宣言)

tasteck MCP の経営者向け Tool 拡張 8 step pipeline を Day41 (2026-06-20) に完備宣言。 update_order / update_guest / nomination heuristic / payment + course duration / Levenshtein fuzzy / course.name LIKE / ambiguous integration を 1 日で全 PR raise + 連続 deploy cadence 構築。

ご機嫌よう、tasteck 運営です。

このシリーズは tasteck のサービス開発を build in public で記録する DEV log です。 今回は Day41 (2026-06-20) の話。

TL;DR

tasteck MCP の経営者向け Tool を 1 日で 8 個拡張 + 7 PR raise + 連続 deploy cadence 構築まで完遂しました。

経営者が ChatGPT / Claude にコピペした「LINE で来た予約自由文」 を、 tasteck の受注画面に自動登録するときの 自動推定 hit 率を大幅向上 する仕組みです。

具体的には:

  • 「本でお願いします」 → 本指名と自動推定 (略語)
  • 「彩花ちゃん希望」 → 該当キャストを照合 + 本指名と推定 (文脈推定)
  • 「VIP コース」 → コース名 LIKE 検索でヒット
  • 「90 分」「1.5 時間」 → duration 抽出 + course 自動絞り込み
  • 「PayPay」「auPay」「Suica」 → 電子マネー自動 mapping
  • 「本指明」「Webm 指名」 → Levenshtein fuzzy で typo 1-2 文字許容

複数候補ヒット時は 構造化された ambiguous response で経営者に選択 dialog として返す設計です。

なぜ 1 日で 8 個拡張したのか

理由は単純で、 ★ ★ 業界経営者の LINE/メール自由文表現は 想像以上に多様 だからです。

これまで tasteck MCP の経営者向け Tool は「フォーマット通りの予約自由文」 にしか対応していませんでした:

6/22 21:00 60 分 サクラ (本指名) 山田様 080-1234-5678 現金

これは Phase 2A までの実装で問題なく動いていました。

しかし実際の業界経営者の LINE/メール 自由文は:

21時に本でお願い・サクラちゃん希望、彩花でお願い・現金で・VIP コース、80分くらい・PayPay

…のような口語・略語・タイポ・コース名指定・支払い方法多様化が日常的に混じります。

これを 1 件ずつ tasteck 側で手入力していると、 結局スタッフが「LINE 予約を受注画面に書き写す手間」 から解放されません。

経営者本人が ChatGPT に LINE 予約をコピペして「これを受注に」 と言うだけで完了する という体験を実現するには、 自動推定 hit 率を 80% 以上 に持っていく必要があります。

Phase 2B 8 step pipeline

そこで Day41 で一気に着手した 8 step:

PhaseTool 拡張Day deploy candidate
2B-2update_order に 4 field 追加 (payment_type / order_address / order_address2 / course_id)Day42
2B-3update_guest に guest_category_id 追加 (VIP/常連/新規 segment 変更)Day43
2B-4nomination heuristic 拡張 (「本」 単独 + cast name 文脈推定)Day44
2B-5payment + course duration 自動抽出 (口語 + 国際ブランド + 交通系)Day45
2B-6Levenshtein fuzzy match (typo 1-2 文字許容)Day46
2B-7course.name LIKE 検索 (VIP/特別/プレミアム/人気)Day47
2B-8ambiguous caller 統合 (structured response)Day48
2B-9 (設計 prep)search_order tool (経営者の照会対応)Day49+

PR は #10〜#16 まで raise 済。 全 tsc clean 確認済み。 連続 7 days 本番 deploy cadence の道筋ができました。

細かい工夫

nomination 拡張で気をつけたこと

「本指名」 を「本」 単独でも推定したいけれど、 「本番」「本気」「本当」「本日」「本店」 を誤検出するわけにはいきません。 正規表現は lookahead + lookbehind で:

{
  pattern: /(?<![一-龠々ぁ-んァ-ヴ])本(?!.{0,3}(?:番|気|当|日|店))/,
  mode: "nominate",
  targetName: "本指名"
}

漢字直前は除外 + 「本」 の後 3 文字以内に「番/気/当/日/店」 があれば除外。 「本で」「本指名」「本指」 は通過、 「本番」「本気で」「本日」 はブロックします。

Levenshtein fuzzy で typo を吸収する

npm dep を増やしたくないので、 自前で 40 LOC ほど書きました。

private computeLevenshteinDistance(s1: string, s2: string): number {
  if (s1.length === 0) return s2.length;
  if (s2.length === 0) return s1.length;
  const matrix: number[][] = [];
  for (let i = 0; i <= s1.length; i++) matrix[i] = [i];
  for (let j = 0; j <= s2.length; j++) matrix[0][j] = j;
  for (let i = 1; i <= s1.length; i++) {
    for (let j = 1; j <= s2.length; j++) {
      const cost = s1[i - 1] === s2[j - 1] ? 0 : 1;
      matrix[i][j] = Math.min(
        matrix[i - 1][j] + 1,
        matrix[i][j - 1] + 1,
        matrix[i - 1][j - 1] + cost
      );
    }
  }
  return matrix[s1.length][s2.length];
}

しきい値 0.8 (5 文字中 1 文字 typo 許容) で「本指明」 → 本指名 hit、 「Webm 指名」 → Web 指名 hit が動くようになりました。

ambiguous return を構造化する

複数候補ヒットした場合、 経営者の手元 ChatGPT / Claude に そのまま選択 dialog として表示できる形 で返したい。 そこで:

return this.textContent({
  dry_run: dryRun,
  applied: false,
  ambiguous: {
    type: "course_selection_required",
    reason: "コース時間 hint から複数候補が一致しました。 どのコースですか?",
    course_candidates: courseResolution.candidates.map((c) => ({
      course_id: c.course_id,
      name: c.name,
      time: c.time,
    })),
  },
  note: "コース ID を明示して再度 create_order を呼び出してください。",
});

これで ChatGPT / Claude が「以下のコースが候補です: 1) スタンダード 60 分 / 2) VIP 60 分 / 3) プレミアム 60 分」 という選択肢を経営者に提示します。

Day42-48 で連続 7 days 本番 deploy

Day41 終了時点で全 PR raise 済 + 全 tsc clean + 全 QA E2E case 設計済。 Day42 から Day48 までの 7 days で 1 PR ずつ本番 deploy する cadence になっています。

本番 deploy 枠は朝 04-07 時を厳守 (業務時間中の deploy 禁止)。 各 deploy には完全 backup + cold restart を組み込みます。

連続 7 days 本番 deploy という cadence は社内的にも初めての挑戦です。 失敗パターンを想定して各 PR は 独立して動く ように設計しました (連結 deploy が必要なのは Day43 の 2B-2+2B-3 連結のみ)。

次の話: Phase 2B 完備後の経営者体験

Day48 で Phase 2B 8/8 完備宣言した後、 経営者の実感としては:

  • LINE 予約自由文 → 自動推定 hit 率 80%+
  • typo / 略語 / 口語 / 名前指定 / コース名指定 全部吸収
  • 複数候補時は経営者選択 dialog として返却

この状態で「経営者本人 × ChatGPT × tasteck」 の最小チーム編成が完成します。

スタッフ多人数権限ではなく、 経営者の AI 使いをスーパーパワー化するという tasteck のスタンスを最も体現する形になります。

関連リンク


tasteck について

ナイトレジャー業界 (出張型メンエス / 来店型 / キャバ / ホスト) に特化した顧客管理 SaaS。 LINE / 電話予約 → 受注登録 → 配車 → 精算まで業態別 column 込みで対応。 MCP 連携で経営者の AI 使いをスーパーパワー化。

tasteck.tech

30日無料トライアル実施中

現場を、もっと軽やかに。
tasteck で始めましょう。

お申込みは 3 分で完了。カード登録なし、電話番号認証のみ。

  • カード登録なしで開始
  • データ移行サポート無料
  • 全機能 30 日間お試し