mcpField
F
Fresha by Cotlet

Fresha by Cotlet

リモート
cotlet.devビジネス・マーケティング51 日前に更新
リポジトリ公式サイト

Fresha by Cotlet について

Fresha by Cotlet は、Fresha 連携を自分で運用したい技術者向けの Python 製 MCP サーバーと REST API です。ローカルの Chrome セッションを使い、予約、顧客、売上、レビューを扱います。

主な機能

  1. 01予約の検索・作成・変更
  2. 02空き時間とブロック時間の管理
  3. 03顧客、メモ、サービス、チームの参照
  4. 04売上サマリーと一覧の取得
  5. 05レビューの確認と返信
  6. 06REST API と Python インターフェース

活用シーン

  1. 01空き枠を調べて顧客を予約
  2. 02スタッフの時間をブロックし予約を調整
  3. 03顧客データや売上データをエクスポート
  4. 04未返信レビューを探して返信案を作成

MCP 対応

stdio または Streamable HTTP 経由で MCP クライアントに Fresha のツールを公開します。読み取り専用操作と確認が必要な変更操作が示されます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://cotlet.dev/mcp/v1/fresha/connect
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://cotlet.dev/mcp/v1/fresha/connect
Streamable HTTPhttps://cotlet.dev/mcp/v1/fresha認証が必要
パッケージ
pypifresha-api-mcp1.0.3

ツール

詳細

Fresha API とセルフホスト型 MCP サーバー

ご自身のコンピューターで、ご自身の Google Chrome のセッションを使って Python で動かす Fresha API と Fresha MCP サーバーです。Cotletで本番運用している Fresha の全 17 ツールを利用できます。予約、空き時間、予約の作成・変更・キャンセル、ブロック時間、クライアントとクライアントメモ、サービスとチーム、Sales の概要レポートと一覧レポート、返信付きレビューに対応しています。

Fresha には公開 API も公式 MCP サーバーもありません。唯一のデータ接続方法は、有料の Data Connector アドオンです。このアドオンはデータを Snowflake データベースにコピーするもので、予約の作成には対応していません。このリポジトリでは、以下を利用できます。

  • Claude Code、Claude Desktop、Cursor、Codex、その他すべての MCP クライアント向けの MCP サーバー。stdio または HTTP 経由で接続できます。セットアップ
  • http://127.0.0.1:8787/api/v1/fresha の REST API。OpenAPI ドキュメントは /docs で確認できます。セットアップ
  • Python:call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"}) のほか、すぐに実行できる 9 個のスクリプトを examples/ に用意しています。

自分で実行したい技術者向けであり、非商用利用に限られます(ライセンス)。サーバー上で 24 時間 365 日稼働させたい場合、Fresha の管理画面が変更されても動作するように保守したい場合、チームやビジネスで利用したい場合は、cotlet.dev のホステッド版をご利用ください。

Fresha MCP サーバー Python 3.11+ ライセンス:PolyForm Noncommercial 1.0.0

git clone https://github.com/cotletdev/fresha-api-mcp-server.git && cd fresha-api-mcp-server
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
fresha-mcp connect                                 # reads your Fresha session from Chrome
fresha-mcp call list_services
claude mcp add fresha -- "$PWD/.venv/bin/fresha-mcp" mcp

目次

仕組み

AI agent (MCP) / script (REST, Python) ──▶ fresha-mcp on your computer ──your cookies──▶ *.fresha.com
                                                  ▲
                         fresha-mcp connect ──────┘ reads them once from your Chrome (DevTools Protocol)
  1. ご自身の Chrome で partners.fresha.com にアクセスし、いつもと同じ方法で Fresha for business にサインインします。メールに届くコードを入力した後、テキストメッセージに届くコードを入力します。このデバイスを信頼するにチェックを入れてください。
  2. fresha-mcp connect は Chrome DevTools Protocol 経由でその Chrome に接続し、fresha.com の Cookie を読み取って ~/.config/fresha-api-mcp/session.json に保存します。このファイルを読み取れるのはご自身のユーザーだけです。パスワードやコードを参照したり、保存したりすることはありません。
  3. 各ツールの呼び出しでは、Chrome の TLS フィンガープリントを再現する curl_cffi を使って、Fresha のパートナーパネル自体が呼び出す API(partners-api、partners-api-gateway GraphQL、customers-api、reports.fresha.com、その他いくつかの *.fresha.com ホスト)に Cookie を送信します。ヘッドレスブラウザーは実行されません。

セッションは fresha_partners_session という 1 つの Cookie に保存されます。Fresha はこれを 25 日間保持し、パネルまたはツールを使用している間は更新します。Fresha からサインアウトされた場合、Chrome が開いていてリモートデバッグが有効であれば、サーバーは Chrome から Cookie を再読み込みします。

要件

  • Python 3.11 以降。
  • Google Chrome 144 以降。partners.fresha.com にサインインしている必要があります。デバッグポートを使用すれば、任意の Chrome または Chromium を利用できます。
  • macOS、Linux、または Windows。
  • Fresha for business アカウント。ワークスペースの所有者アカウントを使って開発とテストを行っています。チームメンバーのログインでは、Fresha 上でそのメンバーに表示される情報を確認できます。また、Sales 関連の 2 つのツールには、そのアカウントにレポート権限が必要です。

インストール

git clone https://github.com/cotletdev/fresha-api-mcp-server.git
cd fresha-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate              # Windows: .venv\Scripts\activate
pip install -e .
fresha-mcp --version

uv を使う場合:uv venv && uv pip install -e . を実行し、その後 uv run fresha-mcp ... を実行します。

AI エージェント(Claude Code、Codex、Cursor)を使ってセットアップしますか? このフォルダーで開き、リポジトリをセットアップするよう依頼してください。AGENTS.md にすべての手順が記載されており、Chrome で必要な操作だけを尋ねます。

更新するには、git pull && pip install -e . を実行します。ホスト型 Fresha ツールへの変更はすべて、このリポジトリにコピーします。

Chrome に接続する

オプション A:普段使っている Chrome(推奨)
  1. Chrome で chrome://inspect/#remote-debugging を開き、リモートデバッグをオンにします。すると Chrome は、このコンピューター上のプログラムからの DevTools 接続を受け付け、接続ごとに確認を求めます。

  2. partners.fresha.com にサインインしていることを確認します。

  3. 次を実行します。

    fresha-mcp connect
    
  4. Chrome が接続を許可するか確認します。許可をクリックします。

Saved 24 Fresha cookies to /Users/you/.config/fresha-api-mcp/session.json
Signed in to Fresha as Daniel Hughes ([email protected])

その後、リモートデバッグをオフに戻してもかまいません。Fresha からサインアウトされた後、サーバーが新しいセッションを自動で取得するようにしたい場合は、オンのままにしてください。

connect は、Chrome の既定のプロファイルフォルダーにある DevToolsActivePort ファイルを探します。Chrome Beta、Canary、またはカスタムのプロファイルフォルダーを使う場合は、--profile-dir "<folder>" を指定してください。

オプション B:デバッグポートを使う Chrome

Chrome は既定のプロファイルでデバッグポートを開かないため、別のプロファイルを起動し、そこで一度 Fresha にサインインしてから接続します。

# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-fresha"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-fresha"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-fresha"

fresha-mcp connect --cdp http://127.0.0.1:9222

--cdp には ws:// DevTools URL も指定できます。たとえば、SSH トンネル経由で接続した別のマシン上の Chrome の URL を指定できます。

オプション C:Cookie を手動で貼り付ける

Chrome のないサーバーの場合:Chrome で partners.fresha.com の DevTools を開き、Application > Cookies > https://partners.fresha.com から fresha_partners_session の値をコピーし、次を実行します。

fresha-mcp connect --token          # paste it, input is hidden
# or, without a session file:
export FRESHA_AUTH_TOKEN=...

貼り付けた Cookie は Chrome から再読み込みされません。Fresha からサインアウトされたら、新しい Cookie を貼り付けてください。

セッションはいつでも次の方法で確認できます。

fresha-mcp status

MCP サーバー

MCP サーバーには、各ツールの入力スキーマ、エージェント向けに書かれた説明、ヒントが記載されています。読み取りツールには読み取り専用のマークが付いています。また、クライアントに影響を及ぼす可能性のあるツール(予約、日時変更、キャンセル、レビューへの返信)には、実行前にクライアントが確認を求めるようマークが付いています。

Claude Code
claude mcp add fresha -- /path/to/fresha-api-mcp-server/.venv/bin/fresha-mcp mcp
# read only:
claude mcp add fresha -- /path/to/fresha-api-mcp-server/.venv/bin/fresha-mcp mcp --read-only
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "fresha": {
      "command": "/path/to/fresha-api-mcp-server/.venv/bin/fresha-mcp",
      "args": ["mcp"]
    }
  }
}
Cursor

~/.cursor/mcp.json に、Claude Desktop と同じブロックを追加します。すぐに使えるコピーは mcp.json にあります。

Codex

~/.codex/config.toml:

[mcp_servers.fresha]
command = "/path/to/fresha-api-mcp-server/.venv/bin/fresha-mcp"
args = ["mcp"]
HTTP 経由

fresha-mcp serve は、URL を受け取るクライアント向けに、http://127.0.0.1:8787/mcp でストリーミング可能な HTTP 経由の MCP も提供します。

fresha-mcp serve
claude mcp add --transport http fresha http://127.0.0.1:8787/mcp

次のような依頼をエージェントにしてみましょう。

Anna Smith から、金曜の午後に Sam にカットとカラーを予約したいとメールがありました。彼女を見つけ、両方のサービスの空き時間を確認し、私の了承後に最初の時間で予約してください。

Sam は明日、病気で休みます。Sam のその日の予定をブロックし、同じ時間に同僚が対応できるクライアントを表示してください。

昨日の売上を販売種別ごとに、先週の同じ曜日と比較してください。£50 を超える返金には印を付けてください。

返信のないレビューを一覧表示し、それぞれに短い返信案を作成してください。

REST API

fresha-mcp serve                   # http://127.0.0.1:8787, MCP at /mcp, docs at /docs

各ツールには /api/v1/fresha 以下に専用のルートがあり、cotlet.dev のホスト型 API と同じパスを使います。そのため、一方を対象に書いたコードはもう一方でも動作します。パスの各部分とクエリ文字列が引数になり、JSON ボディで残りの引数を渡します。

curl 'http://127.0.0.1:8787/api/v1/fresha/services'
curl 'http://127.0.0.1:8787/api/v1/fresha/appointments?from=2026-10-27&to=2026-10-31'
curl 'http://127.0.0.1:8787/api/v1/fresha/sales-summary?from=2026-10-01&to=2026-10-31'
curl -X POST http://127.0.0.1:8787/api/v1/fresha/blocked-times \
  -H 'Content-Type: application/json' \
  -d '{"team_member_id": "5652945", "start_at": "2026-11-03T13:00", "end_at": "2026-11-03T14:00", "title": "Lunch"}'

名前でツールを指定し、ボディを引数として渡します。

curl -X POST http://127.0.0.1:8787/api/v1/fresha/tools/list_clients -d '{"search": "smith"}'
  • GET /api/v1/fresha/tools:ルート、入力スキーマ、回答例を含むすべてのツールを返します。
  • GET /docs:対話型の OpenAPI ドキュメントです。n8n、Postman、または生成したクライアント向けに、GET /openapi.json からスキーマを取得できます。
  • 回答は JSON 形式です。一覧を返すツールは next_cursor を返すため、次のページを取得するには、それを cursor として渡します。

サーバーは 127.0.0.1 のみで待ち受けます。別のデバイスからアクセスするには、トークンを設定してください。その場合、すべてのリクエストに Authorization: Bearer <token> が必要です。

FRESHA_MCP_TOKEN=$(openssl rand -hex 24) fresha-mcp serve --host 0.0.0.0

Python とサンプルスクリプト

Python から直接実行できます。サーバーは不要です。

from fresha_api_mcp import call
from fresha_api_mcp.scripting import paginate, write_rows

services = call("list_services")["services"]
day = call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"})["appointments"]
clients = list(paginate("list_clients", {"sort": "name"}, "clients"))
write_rows(clients, "clients.csv")
call("add_blocked_time", team_member_id="5652945", start_at="2026-11-03T13:00", end_at="2026-11-03T14:00")

または、シェルから次のように 1 つのツールを実行できます:fresha-mcp call find_available_slots service_ids='["25979401"]' date=2026-10-27 days=3。JSON オブジェクトを使うこともできます。ツールがテキストを受け取る場合、ID はテキストのまま扱われます。

時刻はビジネスのタイムゾーンでの現地時刻です。2026-11-03T14:30 は、サロンの 14:30 を意味します。オフセット付きの時刻はそのタイムゾーンに変換され、応答には time_zone が含まれます。

すぐに使えるスクリプトは examples/ にあります。各スクリプトは JSON または短いリストを出力し、適切な場合は --out file.csv または --out file.json と --help を受け付けます。

スクリプト機能
tomorrows_appointments.py明日の予約をチームメンバー別にまとめて表示します。--date、キャンセル分も含める場合は --all を指定します。
book_from_message.py名前、メールアドレス、電話番号でクライアントを照合し、時間帯の範囲内で複数のサービスの空き開始時刻を検索します。--book を指定すると、確認後に最初の枠を予約します。
team_member_out.pyチームメンバーが不在の場合、そのメンバーの時間をブロックし、各クライアントを同じ時間に空いている同僚へ移動します。予定を表示し、--apply を指定すると、変更ごとに確認を求めます。
cancel_day.py指定したチームメンバーの 1 日分の予約を、指定したキャンセル理由でキャンセルします。予約を一覧表示し、--apply を指定すると、予約ごとに確認を求めます。
daily_sales.py1 日分の売上を販売種別ごとに、1 週間前の同じ曜日と比較してまとめ、上限を超える返金にフラグを付けます。
lapsed_clients.pyN 日間予約がなく、今後の予約もないクライアントを、マーケティングへの同意状況とともに表示します。--email-consent-only を指定できます。
export_clients.pyすべてのクライアントを CSV または JSON に出力します。--search、--sort を指定できます。
export_sales.py指定した期間の売上一覧を CSV または JSON に出力します。
unanswered_reviews.py返信のないレビューを評価の低い順に表示します。--reply-to を指定すると返信を投稿します。
python examples/tomorrows_appointments.py
python examples/team_member_out.py --team-member-id 5652945 --date 2026-10-30 --block 09:00-18:00
python examples/lapsed_clients.py --days 90 --out lapsed.csv

スケジュール実行には、自分のコンピューターが起動している間であれば cron を使えます:0 8 * * * cd ~/fresha-api-mcp-server && .venv/bin/python examples/daily_sales.py。

17 個のツールすべて

ID はツール一覧から取得します:list_services の service_id、list_team_members の team_member_id、list_clients の client_id、list_appointments の appointment_id、list_reviews の review_id です。fresha-mcp tools はこの一覧を表示し、fresha-mcp tools --json は入力スキーマも追加で表示します。

予約
ツールアクセスREST ルート機能
list_appointments読み取りGET /appointments日付範囲内の予約を、クライアント、サービス、チームメンバー、価格、ステータスとともに表示します。
get_appointment読み取りGET /appointments/{appointment_id}1 件の予約について、クライアント、サービス、チームメンバー、時刻、ステータス、価格、メモを表示します。
find_available_slots読み取りGET /available-slots1 つ以上のサービスについて、チームメンバーごとに日別の空き開始時刻を検索します。
create_appointment書き込みPOST /appointmentsサービス、チームメンバー、開始時刻を指定して、クライアントの予約を作成します。
reschedule_appointment書き込みPOST /appointments/{appointment_id}/reschedule予約を新しい開始時刻に変更します。別のチームメンバーへの変更も指定できます。
cancel_appointment書き込みPOST /appointments/{appointment_id}/cancel料金を請求せずに予約をキャンセルします。クライアントへの通知も指定できます。
add_blocked_time書き込みPOST /blocked-timesチームメンバーのカレンダーで時間枠をブロックし、誰も予約できないようにします。
クライアント
ツールアクセスREST ルート内容
list_clients読み取りGET /clients名前、メールアドレス、電話番号で検索できる、ビジネスのクライアント一覧です。
get_client読み取りGET /clients/{client_id}1 人のクライアントの連絡先、通知設定、予約統計、今後の予約、メモです。
add_client書き込みPOST /clientsビジネスのクライアントリストにクライアントを追加します。
add_client_note書き込みPOST /clients/{client_id}/notesクライアントのプロフィールに、チームのみが閲覧できるメモを追加します。
カタログとチーム
ツールアクセスREST ルート内容
list_services読み取りGET /servicesカテゴリ、所要時間、価格を含むビジネスのサービス一覧です。
list_team_members読み取りGET /team-members役割、連絡先、担当サービス、予約を受け付けるかどうかを含むチームメンバー一覧です。
売上
ツールアクセスREST ルート内容
get_sales_summary読み取りGET /sales-summary期間ごとの売上サマリーです。売上、返金、割引、税金、支払い方法別の支払いが含まれます。
list_sales読み取りGET /sales日付範囲内の売上(請求書)一覧です。番号、日付、クライアント、ステータス、合計が含まれます。
レビュー
ツールアクセスREST ルート内容
list_reviews読み取りGET /reviews評価、本文、返信を含む、ビジネスに対するクライアントのレビュー一覧です。
reply_to_review書き込みPOST /reviews/{review_id}/repliesクライアントのレビューに公開返信を投稿します。

create_appointment を使うと、Fresha はクライアントの通知設定に従って予約確認を送信します。このツールには通知を切り替えるオプションはありません。reschedule_appointment と cancel_appointment は、notify_client: false を渡さない限り、クライアントに通知します。レビューへの返信は公開され、レビュー投稿者にも通知されます。クライアント、メモ、またはブロック時間を追加しても、通知は送信されません。list_appointments では、ステータス、チームメンバー、クライアントのフィルターは日付範囲内の最初の 100 件に適用されます。そのため、予約の多いサロンでは日付範囲を狭めてください。

このバージョンには、支払いの振り込みとウォレット(Fresha Payments)、チェックアウトと返金、商品、ギフトカード、会員プラン、ウェイトリスト、マーケティングキャンペーン、シフトは含まれていません。create_appointment では予約メモを指定できません。add_blocked_time は繰り返しなしで 1 日をブロックします。また、cancel_appointment はキャンセル料が発生する予約、またはデポジットが支払い済みの予約のキャンセルを拒否します。

意図的に実装していないもの:Fresha のサインイン、メールアドレス、パスワード、ユーザーアカウント、および金銭を移動させる操作(サブスクリプション、請求、支払いの振り込み、支払い方法)。すべてのリクエストはガードを通過し、これらの Fresha パスへの変更は拒否されます。

設定

変数デフォルト内容
FRESHA_MCP_HOME~/.config/fresha-api-mcpsession.json の保存先フォルダーです。
FRESHA_AUTH_TOKENsession.json の代わりに使用する、fresha_partners_session Cookie の値です。
FRESHA_PROXYFresha へのすべてのリクエストに使用するプロキシです(例:http://user:pass@host:port)。
FRESHA_MCP_READ_ONLY1 を指定すると、Fresha を変更するすべてのツールが非表示になり、実行も拒否されます(--read-only と同じです)。
FRESHA_MCP_TOKENserve で必要なベアラートークンです。127.0.0.1 以外でリッスンする場合に必要です。
FRESHA_MCP_HOST、FRESHA_MCP_PORT127.0.0.1、8787serve のアドレスです。

Fresha アカウントのセキュリティ

  • パスワードがこのコードに渡ることはありません。 読み取るのは、Chrome がすでに保持している Cookie のうち、fresha.com のものだけです。
  • セッションファイルはご自身で管理してください。 session.json はモード 0600 で作成されます。このファイルを持つ人は、Fresha for business であなたになりすますことができるため、Git や共有フォルダーに置かないでください。
  • デフォルトではローカルで動作します。 serve は 127.0.0.1 にバインドし、FRESHA_MCP_TOKEN が設定されていない場合は別のアドレスを拒否します。
  • fresha.com のみを対象とします。 fresha.com 以外へのリクエストとリダイレクトは拒否されます。
  • 読み取り専用モード。 --read-only または FRESHA_MCP_READ_ONLY=1 を指定すると、読み取りツール 10 個のみが公開されます。
  • アクションは実際の人に影響します。 予約、日時の変更、キャンセルはクライアントにメッセージを送信する場合があり、レビューへの返信は公開されます。MCP クライアントはこれらのツールの実行前に確認を求めますが、スクリプトは確認しません。まずはご自身のテスト用クライアントで試してください。

エラー

REST API は {"error": "<code>", "message": "..."} を返します。MCP サーバーは同じコードとメッセージをツールエラーとして返します。

ステータスコード対処方法
401auth_required, auth_expiredセッションがないか、Fresha からサインアウトされています。Chrome で partners.fresha.com にサインインし、fresha-mcp connect を実行してください。
403app_permission_deniedFresha のロールではこの操作を実行できません。たとえば、レポート権限がない状態でレポートを参照しようとした場合です。
403scope_deniedサーバーが読み取り専用で動作しているか、リクエストによって Fresha アカウント自体が変更される場合です。
403target_blockedFresha がリクエストを拒否したか、ボットチェックを表示しました。Chrome でパネルを一度開いてから、再試行してください。
409captcha_requiredFresha が CAPTCHA を要求しています。Chrome で解決してください。
422invalid_input引数が不足しているか、正しくありません。メッセージに該当の引数が示されます。
429rate_limitedFresha がアカウントへのリクエストを制限しています。数分待ってください。
502target_errorFresha がエラーを返しました(Fresha 独自のメッセージは message に含まれます)。または、パネルの仕様が変更されました。最新のツールを取得するには git pull を実行するか、issue を作成してください。

セルフホストまたはホスティング版

このリポジトリCotlet(ホスティング版)
ツール同じ 17 個同じ 17 個
実行場所コンピューター上(起動中のみ)クラウド上(24 時間 365 日)
Fresha セッションChrome のセッションをローカルファイルに保存EU 内の専用 Cloud Browser を使用。プロファイルは AES-256-GCM で暗号化
Fresha のパネルが変更された場合修正後に一度 git pull を実行お客様に代わって修正。各ツールを毎日テスト
承認MCP クライアントが呼び出しごとに確認予約、日時の変更、キャンセル、レビューへの返信は承認を待機。ツールごとに切り替え可能
対応環境ご利用のマシン上の MCP クライアント、ローカルスクリプトClaude.ai と ChatGPT のコネクター、n8n、Make、Zapier、任意の HTTP クライアント
利用できるユーザー非商用目的での個人利用チーム、企業、代理店
料金無料2,000 クレジット付きの 7 日間無料トライアル(カード不要)。その後は 5,000 クレジットで $29 からの一回限りのパック

ホスティング版では、成功した呼び出しごとに 10 クレジットを使用し、失敗した呼び出しは無料です。エージェント向けアプリが有効な間、Cloud Browser は 1 日あたり 50 クレジットを使用します。料金の詳細。

よくある質問

Fresha に公式 API はありますか? 公開されているものはありません。Fresha は API も開発者向けドキュメントも公開していません(2026 年 10 月 11 日確認)。有料の拠点ごとに利用できる Data Connector アドオンは、Snowflake 接続を通じてレポートツールにデータを同期しますが、予約の作成、変更、キャンセルはできません。詳細はこちら:cotlet.dev/integrations/fresha-api-mcp-server。

Claude、ChatGPT、Cursor 向けの Fresha MCP サーバーはありますか? はい。この MCP サーバーはお使いのマシン上で動作します。Claude Code、Claude Desktop、Cursor、Codex では fresha-mcp mcp を使用します。ChatGPT と Claude.ai のコネクターには、ホスト型 Fresha MCP サーバーが提供する公開 HTTPS URL が必要です。GitHub のコミュニティ製サーバーは、Snowflake から Data Connector のテーブルを読み込みます。このサーバーにはアドオンが必要で、書き込みは行いません。

Data Connector アドオンは必要ですか? いいえ。ツールは、Fresha のパネルが送信するものと同じリクエストを使い、お使いの partners.fresha.com セッションで動作します。

空き枠を見つけて予約できますか? find_available_slots は、最長 14 日先まで、1 人のスタッフが複数のサービスを連続して行う場合の空き開始時刻を返します。create_appointment でそのうちの 1 つを予約できます。Fresha は依頼すると他の予約に重ねて予約するため、先に空き枠を確認してください。

Fresha の顧客や売上を CSV にエクスポートできますか? はい。python examples/export_clients.py --out clients.csv と python examples/export_sales.py --from 2026-10-01 --to 2026-10-31 --out sales.csv を実行します。

英国以外でも動作しますか? はい。ツールは Fresha からワークスペースのタイムゾーンと通貨を読み取ります。拠点が複数ある場合、カレンダーツールは最初の拠点を使用します。

なぜ Chrome が必要なのですか? パスワードや 2 つのサインインコードを使わずに、Fresha のセッションを読み取るためです。Chrome を使うのはサインインごとに 1 回だけで、呼び出しごとではありません。

Fresha からサインアウトされたらどうなりますか? 呼び出しは auth_expired で失敗します。Chrome のリモートデバッグが有効になっている場合、次の呼び出し時にサーバーが新しいセッションを読み取ります(Chrome の確認画面が表示されたら「許可」をクリックしてください)。それ以外の場合は、もう一度 fresha-mcp connect を実行してください。

VPS や Docker で実行できますか? 技術的には可能です。Cookie を貼り付けるか、お使いのコンピューターからコピーした session.json を使います。その場合、Fresha からはデータセンターの IP アドレス経由でセッションにアクセスしているように見えるため、本人の利用に見えにくくなります。常時稼働させるには、ホスト型バージョンを使うと、セッションは固定 IP の専用 Cloud Browser 内に保管されます。

Fresha アカウントが停止されることはありますか? リクエストには Chrome のフィンガープリントが付与され、クリックするのと同じように 1 件ずつ送信されます。プラットフォームが決して措置を取らないと保証することはできません。通常の利用範囲にとどめてください。

自分のサロンや顧客のために使えますか? いいえ。ライセンスで認められているのは非営利目的での利用のみで、自分の事業の運営も事業利用にあたります。サロン、チーム、顧客の業務には、Cotlet を利用するか、[email protected] までご連絡ください。

コードを好きな用途に使えますか? いいえ。ソースコードは公開されていますが、ライセンスで認められているのは非営利目的での利用のみです。事業利用はできません。

ツールが動かなくなった場合や、別のツールが必要な場合はどうすればよいですか? ツール名とエラーメッセージを添えて、イシューを作成してください。

ライセンス

PolyForm Noncommercial License 1.0.0。要約は次のとおりです。

  • 許可されること: 非営利目的での利用。自分の Fresha アカウントを使った個人的な目的での利用、または慈善団体、学校、公的研究機関、政府機関による利用。コードの変更、および同じライセンスでの共有。
  • 許可されないこと: 自分の事業を含む、あらゆる商用利用。顧客の業務での利用。コードや、それを基にしたサービスの販売または提供。

Cotlet

Cotlet(@cotletdev)がメンテナンスしています。Fresha はその所有者の商標です。このプロジェクトは非公式であり、Fresha との提携、承認、後援を受けていません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。