Fresha by Cotlet について
Fresha by Cotlet は、Fresha 連携を自分で運用したい技術者向けの Python 製 MCP サーバーと REST API です。ローカルの Chrome セッションを使い、予約、顧客、売上、レビューを扱います。
主な機能
- 01予約の検索・作成・変更
- 02空き時間とブロック時間の管理
- 03顧客、メモ、サービス、チームの参照
- 04売上サマリーと一覧の取得
- 05レビューの確認と返信
- 06REST API と Python インターフェース
活用シーン
- 01空き枠を調べて顧客を予約
- 02スタッフの時間をブロックし予約を調整
- 03顧客データや売上データをエクスポート
- 04未返信レビューを探して返信案を作成
MCP 対応
stdio または Streamable HTTP 経由で MCP クライアントに Fresha のツールを公開します。読み取り専用操作と確認が必要な変更操作が示されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://cotlet.dev/mcp/v1/fresha/connectclaude mcp add --transport http dev-cotlet-fresha https://cotlet.dev/mcp/v1/fresha/connect{"mcpServers":{"dev-cotlet-fresha":{"type":"http","url":"https://cotlet.dev/mcp/v1/fresha/connect"}}}Cursor で開く{"servers":{"dev-cotlet-fresha":{"type":"http","url":"https://cotlet.dev/mcp/v1/fresha/connect"}}}VS Code で開く{"mcpServers":{"dev-cotlet-fresha":{"type":"http","url":"https://cotlet.dev/mcp/v1/fresha/connect"}}}{"mcpServers":{"dev-cotlet-fresha":{"serverUrl":"https://cotlet.dev/mcp/v1/fresha/connect"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://cotlet.dev/mcp/v1/fresha/connecthttps://cotlet.dev/mcp/v1/fresha認証が必要ツール
詳細
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 のホステッド版をご利用ください。
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
目次
- 仕組み
- 要件
- インストール
- Chrome の接続
- MCP サーバー
- REST API
- Python とサンプルスクリプト
- 全 17 ツール
- 設定
- セキュリティと Fresha アカウント
- エラー
- セルフホスト版とホステッド版
- よくある質問
- ライセンス
仕組み
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)
- ご自身の Chrome で partners.fresha.com にアクセスし、いつもと同じ方法で Fresha for business にサインインします。メールに届くコードを入力した後、テキストメッセージに届くコードを入力します。このデバイスを信頼するにチェックを入れてください。
fresha-mcp connectは Chrome DevTools Protocol 経由でその Chrome に接続し、fresha.com の Cookie を読み取って~/.config/fresha-api-mcp/session.jsonに保存します。このファイルを読み取れるのはご自身のユーザーだけです。パスワードやコードを参照したり、保存したりすることはありません。- 各ツールの呼び出しでは、Chrome の TLS フィンガープリントを再現する curl_cffi を使って、Fresha のパートナーパネル自体が呼び出す API(
partners-api、partners-api-gatewayGraphQL、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(推奨)
-
Chrome で
chrome://inspect/#remote-debuggingを開き、リモートデバッグをオンにします。すると Chrome は、このコンピューター上のプログラムからの DevTools 接続を受け付け、接続ごとに確認を求めます。 -
partners.fresha.com にサインインしていることを確認します。
-
次を実行します。
fresha-mcp connect -
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.py | 1 日分の売上を販売種別ごとに、1 週間前の同じ曜日と比較してまとめ、上限を超える返金にフラグを付けます。 |
lapsed_clients.py | N 日間予約がなく、今後の予約もないクライアントを、マーケティングへの同意状況とともに表示します。--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-slots | 1 つ以上のサービスについて、チームメンバーごとに日別の空き開始時刻を検索します。 |
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-mcp | session.json の保存先フォルダーです。 |
FRESHA_AUTH_TOKEN | session.json の代わりに使用する、fresha_partners_session Cookie の値です。 | |
FRESHA_PROXY | Fresha へのすべてのリクエストに使用するプロキシです(例:http://user:pass@host:port)。 | |
FRESHA_MCP_READ_ONLY | 1 を指定すると、Fresha を変更するすべてのツールが非表示になり、実行も拒否されます(--read-only と同じです)。 | |
FRESHA_MCP_TOKEN | serve で必要なベアラートークンです。127.0.0.1 以外でリッスンする場合に必要です。 | |
FRESHA_MCP_HOST、FRESHA_MCP_PORT | 127.0.0.1、8787 | serve のアドレスです。 |
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 サーバーは同じコードとメッセージをツールエラーとして返します。
| ステータス | コード | 対処方法 |
|---|---|---|
| 401 | auth_required, auth_expired | セッションがないか、Fresha からサインアウトされています。Chrome で partners.fresha.com にサインインし、fresha-mcp connect を実行してください。 |
| 403 | app_permission_denied | Fresha のロールではこの操作を実行できません。たとえば、レポート権限がない状態でレポートを参照しようとした場合です。 |
| 403 | scope_denied | サーバーが読み取り専用で動作しているか、リクエストによって Fresha アカウント自体が変更される場合です。 |
| 403 | target_blocked | Fresha がリクエストを拒否したか、ボットチェックを表示しました。Chrome でパネルを一度開いてから、再試行してください。 |
| 409 | captcha_required | Fresha が CAPTCHA を要求しています。Chrome で解決してください。 |
| 422 | invalid_input | 引数が不足しているか、正しくありません。メッセージに該当の引数が示されます。 |
| 429 | rate_limited | Fresha がアカウントへのリクエストを制限しています。数分待ってください。 |
| 502 | target_error | Fresha がエラーを返しました(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(@cotletdev)がメンテナンスしています。Fresha はその所有者の商標です。このプロジェクトは非公式であり、Fresha との提携、承認、後援を受けていません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。