curb-cut-mcp について
curb-cut-mcpは、職場で配慮を求める従業員向けに、選択肢の検索や申請文の作成を支援します。診断情報を収集せず、メッセージも送信せず、人の対応が必要な依頼は担当者に引き継ぎます。
主な機能
- 01配慮案と費用根拠の検索
- 02送信しない申請文の作成
- 03複数の申請チャネルに対応
- 04診断情報の項目なし
- 05人による対応キュー
活用シーン
- 01職場で利用できる配慮案の確認
- 02配慮にかかる費用根拠の確認
- 03配慮申請の下書き作成
- 04人の支援が必要な依頼の引き継ぎ
MCP 対応
MCP サーバーは検索と下書き作成のための5つのツールを公開します。いずれのツールもメッセージを送信できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y curb-cut-mcpSF_ORG_ALIASSalesforce CLI alias of the Curb Cut org. Defaults to curbcut.CURB_CUT_SITEPublic URL of this installation's Curb Cut site, quoted when a draft tells the person where they can send it themselves.TWILIO_NUMBERSMS number of this installation, offered next to the site as another way the person can send for themselves.CURB_CUT_SUPPORT_EMAILAddress given when a human handoff cannot be completed.SF_CLI_MODULESOverride for the Salesforce CLI's node_modules/@salesforce directory when the CLI is installed somewhere unusual.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Curb Cut
Curb Cut を使えば、どの従業員も診断名を明かすことなく、自分の言葉で職場での配慮を求められます。ログイン不要のウェブ、基本的な電話からのテキストメッセージや通話、メール、Slack の DM、または自分のアシスタントを通じて利用できます。Agentforce エージェントが会話を進め、保存・送信する内容は Apex が決定し、アクセスデスクの担当者が応答します。Dreamforce 2026 の Agentforce for Good ハッカソン、Builder Track で最優秀賞を受賞しました。
git clone https://github.com/parthsevak2/curb-cut
cd curb-cut
python3 tests/invariants.py # 521 structural checks, offline, about a second
読む前に体験してください: parthsevak2.github.io/curb-cut/try.html で一文入力すると、製品独自のランキングによる回答がすべてブラウザー内で表示されます。映像を掲載したランディングページはこちらです:parthsevak2.github.io/curb-cut。印刷して休憩室に掲示できるポスターはこちらです:poster.html。
背景にあるストーリーを10分でご覧いただけます:https://parthsevak2.github.io/curb-cut/story.html
ご自身の Salesforce 組織にインストールするには、DEPLOY.md の手順に従ってください。Agentforce が有効になっている必要があります。テキストと音声の利用には、ご自身の Twilio 番号と小規模なリレー(channels/)も必要です。また、Slack を利用するには、マニフェストからワークスペースにアプリを作成する必要があります。4つのカスタム表示ラベルに、デプロイ先の電話番号、サイト URL、サポート窓口のアドレスを設定します。
開発の背景
障害に関する配慮を申請する手続きそのものが、アクセシビリティの障壁になっています。
支援を受けるには、まず自分の障害がない人たちが、その人たちのために設計したシステムを使いこなさなければなりません。ポリシーを探し、その用語を理解し、会社のログイン情報を用意し、フォームに記入する。さらに、開示することに不安を感じるかもしれない情報を、見知らぬ人に、書面で、母語ではないかもしれない言語で伝えなければなりません。
通常、費用が障壁なのではありません。
4分59秒の映像では、すべてのチャネルを実際にご覧いただけます:https://youtu.be/yleHLiwWRKA。申請ページを試す26秒の録画はこちらです:https://drive.google.com/file/d/13NApu8rq3MpJjuGG2yzKuJ2P02tKWwGx/view。3分版はこちらです:https://drive.google.com/file/d/1Loqum6Kbk1noQazJDKrrVEnHzoU3biMD/view
| 根拠 | 出典 |
|---|---|
| 2025年、大企業655社において、障害について雇用主に伝えた従業員の割合の中央値は**3.5%で、上昇していません。2026年には、そのうち98%**が配慮プログラムを実施していると回答しています。 | Disability:IN 2025 Disability Index および 2026 results |
| 2025年、障害のあるアメリカ人の22.8%が雇用されていたのに対し、障害のない人では65.2%でした。また、就労者のうちパートタイムで働いていた割合は、障害のある人では30%、障害のない人では17%でした。 | US BLS, People with a Disability 2025、2026年3月3日発表 |
| 配慮の100件中61件は雇用主に費用がかかりません。それ以外の配慮にかかる一時費用の中央値は300ドルです。 | JAN employer survey、2019年1月から2024年12月までに5,406の雇用主を調査 |
| 2022年、障害のあるカナダの就労者の3分の1以上が、必要な配慮を受けられませんでした。 | Statistics Canada、Canadian Survey on Disability |
| GC Workplace Accessibility Passportは、すでに「一度申請すれば、その後は何度も申請しなくてよい」という仕組みを導入しています。ただし、対象は連邦公務員に限られます。 | Government of Canada |
Curb Cut は、雇用主ではなく従業員を第一に考えるAgentforce エージェントです。
デモ環境のデプロイ、2026年9月
以下のハッカソン環境のデプロイは、審査員がテストした内容の記録として残しています。 デモ用の組織とその番号はハッカソン終了とともに廃止されます。各行のアドレスは、ご自身のインストール環境に固有のものです。
| 接続先 | アドレス | 状態 |
|---|---|---|
| Web | https://curbcut-dev-ed.develop.my.salesforce-sites.com/curbcut | 稼働中 |
| 質問(電話を使わない、一連のフロー全体) | /curbcut/ask | 稼働中 |
| プライバシー | /curbcut/privacy | 稼働中 |
| 利用規約 | /curbcut/terms | 稼働中 |
| SMS | デプロイ環境が所有するTwilio番号 | 稼働中。組織の隣で稼働するリレーを経由 |
| 音声 | 同じTwilio番号 | 実装済み。音声の入出力に対応 |
| メール | インバウンドサービス CurbCutInbound。アドレスはSetup → Email Servicesにあります | 稼働中 |
| Slack | node channels/slack-app.mjs、Socket Mode、DMのみ、送信は一切しません | 実際のワークスペースで稼働中。マニフェストは channels/slack-manifest.json にあります |
| エージェント | Curb_Cut v7、Curb_Cut_Desk v5 | どちらも有効 |
| コンソール(内部用) | /lightning/app/Curb_Cut_Console、ホームタブ /lightning/n/Curb_Cut_Home。組織へのログインが必要 | 稼働中 |
| 今、その理由 | /curbcut/why | 稼働中 |
| メッセージングプログラム | /curbcut/messaging | 稼働中 |
| MCP サーバー | node channels/mcp-server.mjs | 5つのツール。送信できるものはありません |
| 任意のリレーまたはアシスタント | POST /services/apexrest/curbcut/v1/message/ | 上記のすべてのチャネルが共有する唯一の窓口 |
コンソールは、誰もデモで紹介しないこの仕組みのもう半分です。アシスタントが、人と人がつながると約束しても、人が対応できる場所がなければ何の意味もありません。Human_Handoff__c は「担当者が対応中」と示すレコードを作成していましたが、その担当者が使える画面はありませんでした。
| コンソール画面 | 用途 |
|---|---|
| 対応中(アプリのホーム) | 対応すべき順に並んだ3つのキューと、その上に表示される常設指示 |
| 担当者の対応待ち | 人間の担当者を希望した人が、現在返事をもらえずに待っている状態 |
| 判断待ち | 雇用主の回答を待っている承認済みの申請。期限が近い順 |
| 通訳者が必要 | 署名付き動画が届いており、人の対応を待っている状態。機械翻訳は行いません |
| Curb Cutの概要(ダッシュボード) | 5つのパネルで、人々への対応がシステム上どこでうまくいっていないかを表示 |
| レコードフィード | 1件の依頼に2人で対応することも多いため、会話はレコード上で確認できます |
コンソールには診断情報は表示されません。そのためのフィールドがないからです。ある人がどんな症状を抱えているのか尋ねられたオペレーターは、「誰にもわからず、調べる方法もありません」としか答えられません。
4つの原則
- **エージェントが第一に仕えるのは労働者です。**本人が自ら承認していない情報は、何も外部に送信されません。
- **特定のチャネルだけが本物ということはありません。**テキスト、音声、メール、Webはすべて対等な窓口です。
- **開示する前に尋ねます。**身元を明かしたり、身体について何かを伝えたりせずに、きちんと答えを得られます。
- **尋ねるのは一度だけ。何度も尋ねません。**常設の希望設定が、あなたより先に伝わります。
意図的に実装していないもの
- **手話の自動化はありません。**ASLは完全な言語であり、認識技術はまだ解決されていません。手話動画は人間の担当者に引き継ぎ、誰も返事のないまま待たされないよう、すぐにテキストで受領を知らせます。
- **診断フィールドはありません。**暗号化もアクセス制限もされないため、フィールド自体を設けていません。誰かが追加すれば、CIがビルドを失敗させます。
- 電話への切り替えは一切ありません。
Reachable_By__cが受け付けるのはメッセージチャネルまたはメールだけで、コードは電話番号を拒否します。 - **推測は行いません。**プロファイリングも予測も行いません。シグナルはすべて、本人が設定したものです。
検証
以下の内容は、記憶に基づいて断言しているものではありません。各数値は隣に記載されたコマンドの出力であり、tests/sync_counts.py は不変条件テストスイート自体の出力から公開されている数値を書き換えるため、数値がずれることはありません。
147 Apex tests sf apex run test -o curbcut -l RunLocalTests
554 structural invariants python3 tests/invariants.py ~1s, no org
517 accessibility checks python3 tests/a11y_audit.py against the live pages
122 Sa11y checks npm run test:a11y Salesforce's own axe-core matcher
34 accessibility-tree checks node tests/ax_tree_audit.mjs what a screen reader is handed
34 controls by keyboard node tests/keyboard_walk.mjs real Tab presses; set CURB_CUT_SITE
21 responsible-AI checks python3 tests/rai_self_check.py against Salesforce's five guidelines
28 contrast checks python3 tests/contrast_audit.py both themes, from the tokens
16 reading-level checks python3 tests/reading_level_audit.py
76 link and copy checks python3 tests/link_and_copy_audit.py
23/23 adversarial assertions node tests/headless_agent_api.mjs && python3 tests/score_adversarial.py
これらのテストスイートのうち2つは、意図的に自身のチェックを失敗させ、それぞれが失敗状態になることをアサートします(--selftest)。失敗できないテストスイートでは、対象のコードについて何も証明できません。敵対的テストスイートのスコアはかつて23件中21件でした。失敗した2件は平均値に埋もれさせず、トランスクリプトとともに公開しました。その後、エージェントの拒否表現と採点器の判定が一致し、テストスイート全体に合格するようになりました。この方針は変わりません。見落としは報告し、取り繕うことはしません。
リポジトリ構成
| パス | 内容 |
|---|---|
force-app/main/default/objects/ | 9個のオブジェクト、61個のフィールド、31個のリストビュー。診断用のフィールドはありません |
force-app/main/default/classes/ | 19個のApexクラスと15個のテストクラス |
force-app/main/default/lwc/ | 5個のLightning Web Components。それぞれの隣にSa11yテストスイートがあります |
force-app/main/default/aiAuthoringBundles/ | 2つのAgent Scripts:公開用のCurb_Cut、内部用のCurb_Cut_Desk |
force-app/main/default/pages/ components/ sites/ | 公開サイト、6つのページ、匿名 |
force-app/main/default/emailservices/ | インバウンドメールチャネル |
force-app/main/default/applications/ tabs/ flexipages/ | 内部コンソール |
force-app/main/default/reports/ dashboards/ | 5つのレポートと概要ダッシュボード。名前は一切ありません |
channels/ | SMSと音声のリレー、Slackアプリ(Socket Mode)、MCP サーバー、Twilioの設定 |
tests/ | 上記の12個のテストスイートと、docs/SCREEN-READER-WALK.mdを書き出すscreen_reader_walk.mjs |
deck/ | ソースとしてのデッキ。ビルド済みコピーはdocs/hackathon/にあります |
docs/hackathon/ | 2026年9月のハッカソン記録:審査員向けガイド、振り返り、デッキ、静止画 |
legal/ | プライバシーと利用規約のソース |
docs/ | アーキテクチャ、BRD、エビデンス、対象ユーザー、意思決定、2つの監査レポート |
まずdocs/ARCHITECTURE.mdを読み、次に、まだ弱い点を率直にまとめたCRITIQUE.mdを読んでください。
ドキュメント
| ドキュメント | 目的 |
|---|---|
docs/ARCHITECTURE.md | 構成の説明と図 |
docs/BRD.md | ビジネス要件とトレーサビリティ |
docs/ROADMAP.md | 次に取り組むことと、却下した案 |
docs/DECISIONS.md | 重要な判断とその理由すべて |
docs/EVIDENCE.md | 公開されている数値すべてと、その出典、分母、注意事項 |
docs/AGENT-INTERFACES.md | ヘッドレス、MCP、エージェント間連携、構築しないプロファイル |
CRITIQUE.md | まだ問題がある点 |
FINDINGS.md | 敵対的テストの実行結果 |
CI.md | パイプラインと不変条件 |
DEPLOY.md | デプロイ |
Parth Sevak制作。カナダ、オンタリオ州ウェランド。 Agentforce for Good、Dreamforce 2026 · Builder Track · Abilityforce。
ライセンス
Apache 2.0。アクセシビリティ対応ライブラリは、各行に出典を記載したうえでリポジトリに同梱されています。ご利用、ご自身のフォークの作成、ご自身の組織での実行が可能です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。