今回やること:TeamsのMicrosoft CopilotからSalesforceにアクセスする
Salesforceのデータを入力したり、必要な情報を探したりする作業が面倒、時間がかかるといった課題を抱えていませんか?
たとえば、別システムから送られてきたデータと同じ内容をSalesforceに入力し直す。過去の案件を1件確認したいだけなのに、ログインして画面を探す。
こうした手間が積み重なると入力は後回しになりがちですが、データが十分に入っていなければ集計も分析もできません。入力や検索のしやすさは、Salesforceを活用できるかどうかに影響します。
一方で最近は、人が画面を操作する代わりに、AIエージェントがシステムの機能を直接呼び出して処理する使い方が広がってきました。操作画面(ヘッド)を必要としないことから、ヘッドレスと呼ばれます。Salesforceもこの方向に動いており、あらゆる機能をAPIやMCPから呼び出せるようにする「Headless 360」という構想を打ち出しています。
そこで今回は、Microsoft CopilotとSalesforceをMCPで連携し、TeamsやCopilotチャットからSalesforceを操作してみました。
この記事で得られること
- Microsoft Copilot(TeamsやCopilotチャット)からSalesforceに直接アクセスできる、という選択肢があることが分かります
- 実際にどんな使い方ができるのか、ユースケースの具体例が分かります
想定読者
- Salesforceを業務で使用している方
- Salesforceの運用・開発にかかわる方(エンジニア含む)
- 業務・開発へのAIエージェント導入に関心がある方
- AIエージェントに不安をお持ちの方
- Microsoft 365を全社導入していて、Copilotの活用先を探している方
Microsoft Copilotとは
Microsoftの「Copilot」は名前の似た製品が多く、どれが何を指すのか分かりにくいところがあります。今回の話に必要なものは3つだけなので、それだけ整理しておきます。
Copilotチャット — 現場が触る入口
Microsoft 365のAIチャット画面です。ブラウザやデスクトップアプリのほか、TeamsやOutlookの中からも使えます。今回、現場の人が実際に話しかける場所がここになります。
Copilot Studio — エージェントを作る場所
自社用のAIエージェントを作るための開発画面です。ここで「どんな外部システムにつなぐか」「どう振る舞うか」を設定します。触るのは作る人だけで、現場の人は開きません。
カスタムエージェント — 作ったもの
Copilot Studioで作ったエージェント本体です。作ったあと「公開」すると、Copilotチャットの中に現れます。現場から見ると、いつものチャット画面に相談相手が1人増える感覚に近いです。
つまり、Copilot Studioで作ったものが、Copilotチャットの中に現れるという関係です。

なお、Copilot Studioを使わずに作る方法(宣言型エージェント)や、長時間タスクを任せるCopilot Coworkといった選択肢もありますが、今回は使っていないため触れません。
今回の構成
先ほどの図はMicrosoft Copilotの一般的な整理でした。ここでは、今回実際に組んだ構成を示します。
TeamsやCopilotチャットから話しかけると、Copilot Studioで作ったカスタムエージェントが受け取り、MCPという仕組みを経由してSalesforceのデータを読み書きします。

MCP(Model Context Protocol)は、AIエージェントと外部システムをつなぐ共通の接続規格です。規格が共通なので、つなぐAIエージェントが変わっても、Salesforce側が用意しているMCPサーバーをそのまま使えます。 認証まわりの設定は接続する相手に合わせて調整が必要ですが、AIエージェントごとに専用の連携プログラムを作る必要はありません。
連携の流れ
つなぎ方にはいくつか選択肢がありますが、今回は使い慣れているMCPを選びました。流れは大きく4ステップです。
1. SalesforceでMCPサーバーを有効にする
レコードの参照・作成・更新・削除が一通りできる「SObject All」を有効化し、接続用の外部クライアントアプリケーションを作成します。

この手順は前回の記事で詳しく解説しているので、そちらもあわせてご覧ください。ただしコールバックURLは接続するAIエージェントごとに異なります。 今回は後ほど行うCopilot Studio側の設定後に発行されるリダイレクトURLを、Salesforce側に登録します。
参考記事:Claude CodeからMCPでSalesforceを操作してみた話
2. Copilot Studioでエージェントを作り、MCPにつなぐ
エージェントを新規作成したら、「ツール」タブから「ツールを追加する」を選びます。


必須項目を入力し、認証方式として「OAuth 2.0」の「手動」を選びます。サーバーURLには、有効化したMCPサーバーのエンドポイントを指定します。

続けて、Salesforceで発行したクライアントIDとシークレット、そして各種URLを入力します。

今回入力した値は次の通りです。
| 項目 | 設定値 |
|---|---|
| サーバー名 | Salesforce SObject All(任意の名前で構いません) |
| サーバーの記述 | Salesforceのレコード作成・更新・削除、その他の操作を行うMCP(こちらも任意です) |
| サーバーURL | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all |
| 認証 | OAuth 2.0 |
| 種類 | 手動 |
| クライアントID | Salesforceの外部クライアントアプリケーションで発行したコンシューマー鍵 |
| クライアントシークレット | 同じく、コンシューマーの秘密 |
| 認証URL | https://login.salesforce.com/services/oauth2/authorize |
| トークンURLテンプレート | https://login.salesforce.com/services/oauth2/token |
| 更新URL | https://login.salesforce.com/services/oauth2/token |
| スコープ | api sfap_api refresh_token |
| リダイレクトURL | 保存すると自動で発行されます(入力は不要です) |
認証URLに指定するのは組織固有のURLではなく、共通のログインドメインです。Sandboxの場合はtest.salesforce.comになります。
「作成」を押すとリダイレクトURLが発行されます。これをコピーして、手順1で作成したSalesforce側の外部クライアントアプリケーションのコールバックURLに登録します。

続いて、実際にSalesforceへつなぐ接続を作ります。「ツール」タブに追加したMCPが並んでいるので、これを開きます。

「接続」の欄が「未接続」になっているので、「新しい接続を作成する」を押します。

表示名を入力して「作成」を押すと、Salesforceへのログイン画面が開きます。認証が終われば接続の完成です。

あわせて「追加情報」を開き、「使用する資格情報」を「作成者提供の資格情報」にしておきます。こうすると、利用する人がそれぞれSalesforceに接続する必要がなくなります。

初期値の「エンドユーザー資格情報」のままだと、使う人ごとに自分でSalesforceへの接続を作ってもらうことになります。社内に広く配るのであれば、作成者側の資格情報にまとめておく方が現実的だと思います。
ここまで設定できたら、「有効」になっていることを確認して「保存」します。

最後に、エージェントにどう振る舞ってほしいかを日本語の指示文で書いておきます。

今回入れたのは、レコードを作る前に必ず内容を提示して確認を取る、というルールです。
# Salesforce操作
## レコード作成
- レコード作成時はどの項目にどのような値を設定するかをユーザに表示する。ただし項目マッピングで確認済みの場合はスキップする。
- ユーザの確認後問題なければ作成をする
## 項目マッピング
- オブジェクト項目に値をマッピングする際、どの項目にどのような値を設定するかをユーザに表示する
- ユーザの確認後問題なければマッピングをする
プログラムではなく、日本語の箇条書きで書くだけです。この指示があることで、後ほど紹介するExcelからのレコード作成でも、作成前に項目マッピングの確認が入るようになります。
3. 公開して、チャットから使えるようにする
まず「公開」を押します。


「最新バージョンを強制する」にチェックを入れると、Teamsで会話中の人にもその場で最新版が反映されます。チェックしない場合は、会話がいったん終わって次に話しかけたときに切り替わります。すぐ反映したいときは入れておくとよいですが、進行中の会話が中断される可能性はあります。
公開したら、どこで使えるようにするかを設定します。「チャネル」タブを開き、「Microsoft 365 と Microsoft Teams」を選びます。


追加が終わると「Teams でエージェントを表示する」が押せるようになります。


これでTeamsの左側にエージェントが並び、チャットから呼び出せるようになります。

4. 他の人にも使ってもらう
公開しただけでは、まだ自分しか使えません。他の人に使ってもらうには、右上の「…」から「共有する」を選びます。

共有したい相手を追加し、権限を選んで「共有」を押します。エージェントとチャットするだけなら「エンドユーザーアクセス」で十分です。

共有された相手は、エージェントストアから検索できるようになります。

エージェントを開いて「追加」を押すと、自分のCopilotから使えるようになります。

できるようになったこと
ここからが本題です。実際にTeams・Copilotチャットから使ってみます。
チャットから商談を聞く
まずは「探す手間」の方から。Salesforceを開かずに、いつものチャット画面で商談について聞いてみます。今回は動作確認用に、架空の商談データを用意した組織で試しています。
その1:条件を指定して探す
Salesforceの直近一か月に完了した商談を表示して該当する商談が11件、表で返ってきました。最後には「受注のみ、失注のみ、または合計金額の集計も表示できます」と提案まで添えられています。「直近一か月」という曖昧な言い方でも、こちらで日付を計算して指定する必要はありません。

その2:件数と金額を集計する
そのまま続けて集計を頼みます。
合計金額(全体、受注、失注)と失注の傾向を教えて。頼んだ合計金額に加えて、件数・比率・平均単価まで整理されて返ってきました。ただし失注の傾向については「このデータだけでは分かりません」という回答です。 金額やフェーズは取得していても、失注理由が書かれた説明欄までは読みに行っていませんでした。

ここまでは、レポートやリストビューでも時間をかければ作れる内容かもしれません。
その3:失注理由の傾向を分析させる
実は各商談の説明欄に、失注理由を文章で書いてあります。どこを見ればよいかを伝えて、もう一度頼んでみます。
各商談の説明欄に失注理由が記載されています。それを読んで傾向を分析して失注理由が「価格・予算」「機能・要件不足」「顧客都合・組織変更」の3つに分類され、最大の要因は価格・予算だと示されました。

さらに、営業として何から手を付けるべきか、という改善の提案まで返ってきました。

自由記述の文章を読んで分類し、傾向としてまとめる。これはレポート機能では作れないアウトプットです。 ただし、集計も分析もAIが行っています。数字が必ず正しいとは限りませんし、示された傾向もあくまで一つの見方です。そのまま鵜呑みにせず、判断材料として扱うのが良いと思います。
Excelの帳票からレコードを作る
次は「入力の手間」の方です。サンプルとして作成したExcelの報告書をそのまま渡して、レコードを作らせてみます。
今回用意したのは、こういった帳票形式のヒヤリハット報告書です。表計算というよりは、紙の様式をExcelで作ったような形になっています。

このファイルをチャットに添付して、以下を入力します。
Excelをもとにヒヤリハットレコードを作成して。
するとエージェントがExcelの中身を読み取り、Salesforceのどの項目にどの値を入れるつもりかを表にして提示してきました。「報告日」「発生日」「所属部署」といった帳票側の項目名と、Salesforce側の項目が対応づけられています。項目のマッピングは一切設定しておらず、エージェントがSalesforceの項目定義を自分で調べて突き合わせています。

内容を確認して「作成して。」と返すと、レコードが作成されました。

Salesforce側を見ると、確かにレコードができています。

ポイントは、作成前に必ず確認が入るようにしている点です。読み取りの精度は完璧ではないので、AIが下書きを作り、人が目視で確認してから確定する、という半自動の運用が現実的だと感じました。現場の負担は「ゼロから入力する」から「内容を確認する」に変わります。
注意点
実際に使ってみて気づいた点をいくつか挙げておきます。
- MCPの接続は時間の経過で切れることがあります。 その場合は接続をやり直す必要があります
- 添付したExcelは文字として読まれます。 今回試した範囲では、Excelはテキストに変換された状態でエージェントに渡っており、セルに埋め込まれた画像や見た目の情報はそのままでは扱えませんでした。
- AIの回答は毎回まったく同じになるとは限らず、間違うこともあります。 そのため最終的な判断は人が行う前提で使う必要があります
まとめ
今回は、次のことを行いました。
- Copilot Studioでカスタムエージェントを作り、MCP経由でSalesforceにつないだ
- 作ったエージェントをTeams・Copilotチャットから使えるように公開した
- チャットから商談を検索し、集計と失注理由の傾向分析まで行った
- Excelの帳票を添付するだけで、Salesforceのレコードを作成した
やってみて感じたのは、連携用のコードを一行も書いていないことです。Salesforce側でMCPサーバーを有効にし、Copilot Studioでエージェントを作ってつなぐ。やったのは設定画面での操作だけで、ここまで動きました。
もう一つは、Teamsの画面から出ずに完結したことです。今回試した操作は、すべていつものチャット画面の中で終わりました。Salesforceの画面の使い方を新しく覚えてもらう必要がないというのは、現場に広げるうえで大きいと感じました。
Salesforceの伴走支援・内製化支援に関するご相談をお待ちしております。
Salesforce導入支援 – 株式会社エヌデーデー(NDD)