SwitchBot Control
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SwitchBot Controlturn off the PC plug, I've already shut it down cleanly"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SwitchBot Control
Cloudflare Workersで動く、SwitchBot機器を操作するMCPサーバーです。登録した機器の一覧・状態確認・電源ON/OFFを、OAuthで接続したMCPクライアントから実行できます。実行に自宅PCは必要ありません。
単一所有者向けの構成です。利用する人が自分のCloudflareアカウントに配置し、自分のSwitchBot API情報と管理用パスワードを設定します。
構成と機能
MCPクライアント → Cloudflare Workers → SwitchBot公式API → 登録済み機器
OAuth認証、PKCE、動的クライアント登録、CIMDに対応。
操作対象と許可操作を
DEVICES_JSONで制限。OAuth情報は専用のCloudflare KVに保存。
PC用プラグのOFFには、呼び出し側の正常終了確認が必要。
Related MCP server: Spotify MCP
SwitchBot側の準備
SwitchBotアプリで、使用する機器を同じ所有者アカウントに登録します。プラグミニ(JP)は2.4GHz Wi-Fiに接続し、用途がわかる名前を付けます。
SwitchBotアプリの開発者向けオプションから、公式APIのTokenとSecretを取得します。アプリV9以降の公式手順は「プロフィール → 設定(Preferences)→ About → App Versionを10回タップ → Developer Options → Get Token」です。表示名はアプリの言語・版で異なります。
公式APIの署名付き
GET https://api.switch-bot.com/v1.1/devicesで機器一覧を取得し、名前と機種を照合してdeviceIdを確認します。この値を登録JSONのidに使います。署名方法はSwitchBot公式APIを参照してください。
このMCPの list_devices は、登録済みの機器だけを返します。SwitchBotアカウント内の新しい機器を自動検出する機能ではありません。Token・Secret・機器IDや実際の登録JSONは、公開リポジトリへ追加しないでください。
ビルドと配置
Node.js 24以上、Cloudflare Workers、専用KV namespace、SwitchBot公式API Token・Secretが必要です。
npm ci
npm test
npm run build
WORKER_FILE=./worker.js npm test
npm run test:runtimeCloudflareにWorkerを作成し、公開URLを確認します。
src.mjsのPRODUCTION_ORIGINを、そのWorkerのHTTPS originに変更します。例示値はhttps://switchbot-control.example.comです。末尾の/や/mcpは付けません。npm run buildでworker.jsを生成します。Workerのコード編集画面に、生成した
worker.jsを配置します。JavaScriptモジュール形式のWorkerとして実行してください。下記のSecretsとKV bindingを設定します。
Runtimeのcompatibility flagに
global_fetch_strictly_publicを追加します。元の配置で使用したcompatibility dateは2026-10-21です。自分のWorkerの
/healthでready: trueを確認します。
ready: true はWorker内の設定チェックの結果です。SwitchBotへの接続や実機操作の成功を示すものではありません。MCPへのOAuth接続後、機器一覧と個別の状態取得も確認します。
同梱の worker.js は例示originでビルドしたものです。自分のoriginへ変更して再ビルドしてください。別originへの要求を拒否する設計です。テストも例示originを使うため、origin変更後にテストする場合は test.mjs と runtime-smoke.mjs のoriginも同じ値に合わせます。
SecretsとKV
WorkerのVariables and Secretsに、次の4項目をSecretとして設定します。実際の値をソースやGitへ書き込まないでください。
名前 | 内容 |
| SwitchBot公式API Token |
| SwitchBot公式API Secret |
| このMCP連携専用のパスワード。24文字以上・最大512文字 |
| 操作対象の機器と許可操作を登録するJSON |
OAuth情報専用のKV namespaceを作成し、Workerのbinding名 OAUTH_KV で接続します。他のアプリのKVと共有しないでください。
DEVICES_JSON の例(IDは実際の機器IDへ置換):
{
"pc": {
"name": "PC電源",
"id": "REPLACE_WITH_DEVICE_ID",
"actions": ["status", "on", "off"],
"requiresShutdown": true
},
"desk_lamp": {
"name": "デスクライト",
"id": "REPLACE_WITH_OTHER_DEVICE_ID",
"actions": ["status", "on", "off"]
}
}keyは小文字英数字から始め、小文字英数字・ハイフン・アンダースコアで64文字以内にします。actions は実機が公式APIで対応する操作だけを指定してください。この実装は状態取得と turnOn / turnOff に対応します。調光、温度設定、カーテン開閉などの専用コマンドは実装していません。
既存MCPに機器を追加する
既存の機器と同じSwitchBotアカウントに新しい機器を登録し、公式APIの機器一覧で
deviceIdを確認します。同じアカウントなら既存のAPI Token・Secretを使用できます。非公開で保管している登録JSONに、新しいkeyと設定を追記します。既存のkey・ID・許可操作を残し、登録一覧全体を更新します。 PC用プラグには
requiresShutdown: trueを付けます。CloudflareのWorker設定で、Secret
DEVICES_JSONの値を更新して反映します。手元のJSONやGitHubのサンプルを編集するだけでは、本番の登録は変わりません。MCPから
list_devicesを呼び、新旧両方の機器を確認します。続いてそれぞれのkeyでget_device_statusを呼び、名前・状態・エラーの有無を確認します。
機器追加だけなら、別Workerの作成、Workerコードの再ビルド、MCPの再登録は不要です。既存のOAuth接続をそのまま利用できます。
実際の登録JSONはアクセスを制限した非公開の場所で管理してください。Cloudflareに保存したSecretの値は、APIから再取得できません。このリポジトリには機器登録の例だけを置きます。
MCPクライアントから接続
サーバーURL: 自分のWorkerのHTTPS URLに
/mcpを付けたもの。認証: OAuth(動的クライアント登録に対応)。
許可画面: 自分で設定した
OWNER_PASSWORDを入力して接続を許可。
動的クライアント登録(DCR)を利用する場合、固定のClient ID・Client Secretは設定不要です。状態取得には devices:read、電源操作には加えて devices:control の許可が必要です。
CloudflareやSwitchBotのログインパスワードを入力するものではありません。
ツール
ツール | 内容 |
| 登録済みのkey・名前・許可操作を取得。機器IDは返しません |
|
|
|
|
requiresShutdown: true の機器をOFFにするには、PCのOSを正常終了し、停止を確認してから shutdown_confirmed: true を渡します。この引数は呼び出し側の確認申告であり、Worker自身がOSの停止を自動検証するものではありません。
SwitchBot APIの受付成功と実機の状態変更完了は別です。操作後は get_device_status で確認してください。タイムアウト時も状態を確認してから再操作します。
PCをプラグONで自動起動させる
スマートプラグのONは給電の開始です。PCを自動起動させる場合は、ご利用のPCが通電復帰時の起動に対応し、必要なBIOS/UEFI設定が有効になっていることを各自で確認してください。設定方法は機種によって異なるため、メーカーの案内を参照してください。
実運用の前に、OSの正常シャットダウンと停止を確認したうえでプラグをOFF→ONし、本体ボタンを押さずに起動することを各自の環境で確認してください。OS起動後のリモート接続や必要なサービスの自動復帰も確認します。
このMCPにはOSのシャットダウン機能はありません。 OS側の操作は別の管理手段で行い、正常終了を確認してからプラグをOFFにしてください。ネットワーク応答がないことだけを、正常終了の証拠にしないでください。
認証と運用
Cloudflare公式 @cloudflare/workers-oauth-provider 1.2.3を使用します。権限は devices:read / devices:control / offline_access。アクセストークンは1時間、リフレッシュトークンは30日が上限です。
所有者パスワードを変更しても、発行済みOAuthトークンは即座には失効しません。即時停止は専用KV内のOAuth記録を削除するか、Workerを停止して行います。許可画面はOrigin・Cookie・一度限りの許可情報を検証します。
テスト
npm test は、OAuth・PKCE・許可画面の再利用拒否・権限制御・未登録機器の拒否・PC電源OFFの確認・SwitchBot API署名を確認します。SwitchBot API通信はモックで、実機の電源は変更しません。
npm run test:runtime は、Miniflare/workerdで生成済みWorkerを実行し、OAuthとMCPの流れを確認します。実際のCloudflare環境やSwitchBot実機の動作確認を代替するものではありません。
主なファイル
ファイル | 内容 |
| サーバーのソース |
| 依存ライブラリを含む生成済みWorker |
| ビルド処理 |
| OAuth・MCP・機器操作のテスト |
| workerdでの動作確認 |
| 同梱する第三者コードのライセンス |
ライセンス・参照先
MIT License。第三者コードの条件は THIRD_PARTY_LICENSES.txt を参照してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Cloudflare Workers MCP server: api-composition-gateway
Cloudflare Workers MCP server: ai-gateway
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables deploying a Model Context Protocol (MCP) server on Cloudflare Workers with built-in OAuth authentication. It allows local clients like Claude Desktop to securely connect to and use remote tools through an HTTP/SSE transport.-
- FlicenseNot gradedqualityDmaintenanceEnables remote interaction with Spotify through the Model Context Protocol, allowing users to search tracks, control playback, and manage playlists with per-user OAuth authentication. It is hosted on Cloudflare Workers and supports remote MCP over HTTP for compatible clients.2-
- FlicenseNot gradedqualityDmaintenanceEnables remote MCP connections with OAuth login, running on Cloudflare Workers for secure tool access.-
- FlicenseNot gradedqualityCmaintenanceEnables deploying a stateless remote MCP server on Cloudflare Workers without authentication, supporting the MCP 2026-07-28 spec and legacy client tool calls.-