tend-mcp について
tend-mcp は、Tend のウェブアプリが利用する内部エンドポイントを通じて、単一の Tend アカウントで歯科予約を行う非公式 MCP サーバーです。クリニック、サービス、予約、空き枠の確認と予約に対応しますが、非公開のエンドポイントは予告なく変わる可能性があります。
主な機能
- 01クリニックとサービス種別の一覧
- 02アカウントの予約確認
- 03予約可能な時間枠の検索
- 04歯科予約の登録
- 05パスワードまたはリフレッシュトークンでセッション更新
活用シーン
- 01個人の歯科予約の確認
- 02空き枠の検索と予約
- 03MCP クライアントから単一の Tend アカウントを操作
MCP 対応
MCP サーバーとして、Tend アカウントのクリニック、サービス種別、予約、空き枠検索、予約登録のツールを提供します。各インスタンスがアクセスするのは単一アカウント自身のデータのみで、Tend のウェブアプリが使う非公開エンドポイントに依存します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y tend-mcpTEND_EMAILYour Tend account email.TEND_PASSWORDシークレットYour Tend account password. Set this OR TEND_REFRESH_TOKEN, not both required.TEND_REFRESH_TOKENシークレットA Cognito refresh token obtained by hand from DevTools (see README). Alternative to TEND_PASSWORD.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
tend-mcp
Tend dental 向けの非公式 MCP(Model Context Protocol)サーバーです。Tend とは提携関係になく、承認やサポートも受けていません。公開・文書化されていない API ではなく、ブラウザーの開発者ツールで特定した、Tend 自身の Web アプリが呼び出す内部 API エンドポイントにアクセスします。Tend がフロントエンドを変更した場合、予告なく動作しなくなる可能性があります。
自己責任でご利用ください。 Tend の利用規約に照らしたレビューは行っていません。実行する前にご自身で利用規約を確認し、Tend から異議があった場合は利用を中止してください。各インスタンスは 1 つの Tend アカウントとして認証し、そのアカウント自身のデータにのみアクセスします。他の患者の記録にアクセスするための設計ではなく、そのような目的もありません。
ステータス
実際のログイン → スタジオの選択 → サービスの選択 → 時間の選択 → 予約のフローを記録した HAR(2026-08-01)に照らして検証済みで、認証も実環境でテスト済みです。list_studios、list_service_types(静的な参照データ。下記を参照)、list_appointments、search_available_slots、book_appointment(実環境での動作を確認済み。記録には、実際の Dentrix external_id が発行された予約が含まれています)。
認証は現在、完全に実環境で動作します。認証方法は 2 つあります。 Tend は、identity.hellotend.com にある独自の軽量プロキシ経由で AWS Cognito を使って認証します。次のいずれかを使用できます。
TEND_PASSWORD— メールアドレスとパスワードによる実際のログイン(POST identity.hellotend.com/login、実環境で確認済み)です。実際の Web アプリと同じリクエストで、クライアント側で Cognito SRP のやり取りをする必要はありません。Tend のバックエンドが処理します。TEND_REFRESH_TOKEN— ログインを省略できます。DevTools から一度手動で取得します(下記を参照)。
どちらの方法でも、TendClient は自動的にサインイン状態を維持します。Cognito の REFRESH_TOKEN_AUTH(Authorization: Bearer <idToken>、トークンの有効期間は約 24 時間。実環境で確認済み)でセッションを更新します。リフレッシュトークンの期限が切れた場合や失効した場合に TEND_PASSWORD が設定されていれば、新たにパスワードでログインします。
セットアップ
npm install
cp .env.example .env # fill in TEND_EMAIL and (TEND_PASSWORD or TEND_REFRESH_TOKEN)
npm run dev # or: npm run build && npm start
Claude Desktop などの MCP クライアントから利用するには、MCP 設定に追加します。例として、Claude Desktop の claude_desktop_config.json の場合は次のとおりです。
{
"mcpServers": {
"tend": {
"command": "node",
"args": ["/absolute/path/to/tend-mcp/dist/index.js"],
"env": { "TEND_EMAIL": "[email protected]", "TEND_PASSWORD": "..." }
}
}
}
リフレッシュトークンの取得(TEND_PASSWORD を使用しない場合)
- Chrome で hellotend.com にログインします。
- DevTools → Application → Cookies →
hellotend.comを開きます。 refreshTokenCookie の値をコピーし、TEND_REFRESH_TOKENに設定します。
TEND_PASSWORD と TEND_REFRESH_TOKEN はどちらも継続的に使える認証情報です。API キーではなく、パスワードと同じように扱ってください。 特にリフレッシュトークンは、情報を再入力しなくても長期間にわたって新しいセッションを発行できます。どちらも絶対にコミットせず、ログに記録される可能性のある場所(AI チャットへの入力も含む)には貼り付けないでください。これは仮定の話ではありません。この連携の構築中に、実際に有効なトークンをチャットセッションに誤って 2 回公開しました(1 回は Cookie の値をそのまま貼り付け、もう 1 回は機密フィールド名として token を含め忘れた不完全なマスキングスクリプトが原因です)。HAR の「サニタイズ」やその場しのぎのマスキングスクリプトを当てにしてはいけません。どちらかが漏洩した疑いがある場合は、Tend のすべての環境からログアウトするか、パスワードを変更してください。
別のエンドポイントを追加する
hellotend.com にログインし、DevTools → Network → Fetch/XHR を開いて操作を行い、リクエストを確認します。その後、既存のメソッドの形式(生の snake_case API フィールドを camelCase の TS インターフェースにマッピングする形式)に従って TendClient にメソッドを追加し、tools.ts に対応するツールを追加します。
作業用に HAR をエクスポートする場合、レスポンスの本文にも(ヘッダーだけではなく)実際の個人情報(PII)が含まれています。共有する前に、個人情報(氏名、メールアドレス、電話番号、保険情報、生年月日)を本文からマスキングし、エクスポートツールが自動で削除するかどうかにかかわらず、Cookie やトークンの値は絶対に共有しないでください。ここでは .gitignore によりすでに *.har が除外されているため、Git に含まれることはありません。
設計上の制約(このまま維持してください)
- インスタンスごとにアカウントは1つです。 マルチテナントの認証情報ストアや、複数ユーザーのログイン情報を保持するサーバー側プロキシは使用しません。
- ボット対策の回避は行いません。 Tend のログインに MFA やボット検知がある場合は、ユーザーにその旨を伝えるか、明確にエラーを返します。自動化で回避しようとしてはいけません。
- 実際の患者ポータルがその患者に公開している範囲を超えるエンドポイントは追加しません。 他の患者のデータにアクセスするものは追加しないでください。
tendClient.ts内のSTUDIOS/SERVICE_TYPESは固定スナップショットであり、ライブデータではありません。 これらの安定した API は見つかっていません(STUDIOSの上にあるコメントを参照してください)。そのため、Tend がスタジオを追加・閉鎖したり、サービスを変更したりすると、気づかないうちに古くなります。最新の状態だと思い込まず、定期的に新しいキャプチャと照合することをお勧めします。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。