Customer Thermometer について
Customer Thermometer は、Customer Thermometer API を通じて顧客アンケートを管理し、結果を確認する AI アシスタント向け MCP サーバーです。宛先リストや配信から、NPS、満足度、回答、コメントのレポートまで、調査の主要な流れを扱います。
主な機能
- 01調査テンプレートと宛先リストの表示
- 02宛先の追加と配信停止
- 03メールアンケートの送信
- 04残りの送信クレジットの確認
- 05NPS、満足度、回答、コメントのレポート取得
活用シーン
- 01期間を指定した NPS や満足度の確認
- 02宛先へのアンケート送信
- 03調査コメントと回答内容の確認
MCP 対応
Customer Thermometer API の操作を MCP ツールとして提供し、テンプレートやリストの取得、宛先管理、アンケート送信、レポート閲覧に対応します。stdio と HTTP のトランスポートをサポートします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e CUSTOMERTHERMOMETER_API_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/customer-thermometer-mcp:v1.0.5CUSTOMERTHERMOMETER_API_KEYシークレットCustomer Thermometer API key (Super API key or sub-API key, from account Integration settings)MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-ai/customer-thermometer-mcp:v1.0.5stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Customer Thermometer MCP サーバー
Customer Thermometer の顧客フィードバック/NPS 調査 API(温度計、宛先リスト、送信、レポート)を、AI アシスタントと WYRE Conduit ゲートウェイから利用するための MCP サーバーです。
認証
Customer Thermometer は、アカウントの Integration 設定から生成する静的 API キー 1 つで認証します。このコネクターでは、「Super API key」(アカウントへの完全なアクセス権)と、より限定的な「sub-API key」のどちらも使用できます。
設定
.env.example をコピーし、以下の変数を設定します。
| 環境変数 | 説明 |
|---|---|
CUSTOMERTHERMOMETER_API_KEY | Customer Thermometer が発行した API キーです。stdio と、AUTH_MODE=env の場合の HTTP で使用します。 |
MCP_TRANSPORT | stdio(デフォルト)または http です。 |
AUTH_MODE | env(デフォルト。上記の変数を読み取ります)または gateway(API キーはリクエストごとに X-CustomerThermometer-Api-Key で送信され、環境変数へのフォールバックは行いません)です。Docker イメージと Compose ファイルでは、デフォルトで gateway に設定されています。 |
CONDUIT_S2S_SECRET | HTTP で必須です。/mcp の X-Gateway-S2S と照合する HMAC キーです。openssl rand -hex 32 で生成してください。空の場合や、既知のプレースホルダー(changeme、your-s2s-secret、replace-with-a-real-secret などの公開例)の場合、HTTP サーバーはエラーをログに記録して、ゼロ以外の終了コードで終了します。設定されていない場合、Compose は起動しません。実際の値は決してコミットしないでください。値がログに記録されることはありません。 |
MCP_ALLOW_INSECURE_DEV | CONDUIT_S2S_SECRET なしで HTTP を起動するには、ローカル開発時に限り 1 を正確に設定します。警告がログに記録され、X-Gateway-S2S は強制されず、127.0.0.1 のみでバインドされます。このモードでは、ループバック以外の MCP_HTTP_HOST は無視されます。既知のプレースホルダーのシークレットでは、引き続き起動が拒否されます。 |
MCP_HTTP_HOST | MCP_TRANSPORT=http の場合のバインドアドレスです。デフォルトは 127.0.0.1 です。CONDUIT_S2S_SECRET が設定されている場合に適用されます。コンテナーイメージでは 0.0.0.0 に設定されています。シークレットが設定されていない場合、リスナーは 127.0.0.1 のみで待ち受けます。 |
MCP_HTTP_PORT | HTTP ポートです。デフォルトは 8080 です。 |
LOG_LEVEL | debug | info(デフォルト)| warn | error です。 |
/health は認証なしでアクセスでき、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。
HTTP 認証
MCP_TRANSPORT=http で CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。ヘッダー値は t=<unix seconds>,v1=<hex> です。<hex> は、リテラル文字列 t=<unix seconds>(同じ t= プレフィックスとタイムスタンプを使用)に対する HMAC-SHA256 であり、CONDUIT_S2S_SECRET をキーとして、64 文字の小文字の 16 進数でエンコードします。タイムスタンプはサーバーの時計との差が 300 秒以内でなければなりません。ヘッダーがない場合、または無効な場合は、ベンダーの認証情報を読み取る前に HTTP 401 が返されます。
AUTH_MODE=gateway では、/mcp に X-CustomerThermometer-Api-Key も必要です。このヘッダーだけがリクエストの認証情報として使用されます。ヘッダーがないリクエストには 401 が返され、CUSTOMERTHERMOMETER_API_KEY へのフォールバックは行われません。
リクエスト制限
- HTTP リクエスト本文の上限は 256 KiB(262144 バイト)です。
X-Gateway-S2Sのチェックに合格した後、Content-Lengthが上限を超えている場合は、JSON-RPC エラーとともに 413 が返されます。Content-Lengthがない本文には、MCP SDK トランスポートによる上限が適用されます。認証されていないリクエストには、引き続き先に 401 が返されます。 tools/callの引数は、要素数が 10,000 個までに制限されます(すべての配列項目と、任意の深さにあるオブジェクトキーが対象です)。上限を超える入力にはisErrorを含むツール結果が返され、ディスパッチされることはありません。
これらの制限は、CVE-2026-111768 / GHSA-46jr-4wx8-v453(検証中のメモリ枯渇)および GHSA-f897-62hf-6gxq(リクエスト本文/バッチの上限なし)に対処するものです。
ツール
リスト
customerthermometer_get_thermometers- アカウントにあるすべての調査テンプレート(Thermometers)を一覧表示します。customerthermometer_get_recipient_lists- アカウントにあるすべての宛先リストを一覧表示します。
宛先
customerthermometer_add_recipient_to_list- 宛先をリストに追加します。customerthermometer_unsubscribe_recipient- メールアドレスをアカウントの配信停止リストに追加します。
送信
customerthermometer_send_email- 1 人の宛先に Email Thermometer のアンケートを 1 件送信します。customerthermometer_get_credits- アカウントに残っている Thermometer の送信クレジットを取得します。
レポート
customerthermometer_get_nps_value- ネット・プロモーター・スコア。必要に応じて配信または日付範囲で絞り込めます。customerthermometer_get_happiness_value- ハピネス・ファクターの割合。必要に応じて配信または日付範囲で絞り込めます。customerthermometer_get_blast_results- アンケートの生の回答。必要に応じて温度、配信、日付範囲で絞り込めます。customerthermometer_get_comments- 回答に添えられた自由記述のコメント。必要に応じて温度、配信、日付範囲で絞り込めます。
XML を返す読み取りエンドポイント(getThermometers、getRecipientLists、getBlastResults、getComments)は、手書きのスキーマにマッピングするのではなく、汎用的に解析されます。ベンダーの API ドキュメントではこれらのレスポンスの要素名が公開されていないため、実際のレスポンスと一致しないスキーマを使うリスクを避け、解析した構造をそのまま渡します。
対象範囲
これは、セラーモメーター/リストの一覧表示、宛先の追加と配信停止、アンケートの送信、NPS/ハピネス/回答/コメントのレポート取得という、アンケートの主要なワークフローを対象とする v1 の機能です。現時点では、logResponse と deleteResponse は明示的に対象外です。これらは既存の回答データを変更または破棄する、優先度の低い破壊的なエンドポイントです。要望があれば、後続の対応で追加できます。
開発
npm install
npm run build
npm test
npm run lint # tsc --noEmit
Docker
イメージはコンテナー内で 0.0.0.0(MCP_HTTP_HOST)をリッスンし、デフォルトで AUTH_MODE=gateway を使用します。ポートをループバックに公開し、S2S シークレットを渡してください。ゲートウェイモードでは、API キーはリクエストごとに X-CustomerThermometer-Api-Key として渡され、環境変数からは読み込まれません。すべての /mcp リクエストには、有効な X-Gateway-S2S 署名も含める必要があります(HTTP 認証を参照)。
docker build -t customer-thermometer-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
customer-thermometer-mcp
Compose は CONDUIT_S2S_SECRET が設定されていない場合、起動を拒否します。また、AUTH_MODE のデフォルトは gateway で、127.0.0.1:8080:8080 にポートを公開し、CUSTOMERTHERMOMETER_API_KEY は設定しません。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要で、その後 CUSTOMERTHERMOMETER_API_KEY が使われます。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e CUSTOMERTHERMOMETER_API_KEY="$CUSTOMERTHERMOMETER_API_KEY" \
-p 127.0.0.1:8080:8080 \
customer-thermometer-mcp
HTTP は、CONDUIT_S2S_SECRET が実際のシークレットとして設定されるまで起動を拒否します。シークレットなしでのローカル HTTP は開発専用です。この場合、127.0.0.1 のみをバインドし、警告をログに記録します。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" npm run start:http
MCP_ALLOW_INSECURE_DEV=1 npm run start:http
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。