インストール不要。2分以内に動きます。
cloud.anythingmcp.com で無料トライアルを開始し、Microsoft Dynamics 365 Sales (Dataverse) をワンクリックで追加して、AI クライアント(Claude、ChatGPT、Copilot、Cursor)を生成された MCP エンドポイントに向けるだけ。Docker も git clone も、開発経験も不要です。
概要
AI に Dynamics 365 Sales で作業させます。取引先企業、取引先担当者、リード、営業案件の検索と更新、タスク、電話、メモの記録、リードの評価、案件のクローズ、OData や FetchXML による任意の Dataverse テーブルへのクエリができます。Dataverse Web API 経由で、Microsoft アカウントでサインインします。
こう聞いてみよう
Microsoft Dynamics 365 Sales (Dataverse) のサンプルプロンプト
プロンプトをクリックでコピー。Claude / ChatGPT / Cursor / Gemini / Copilot / OpenClaw に貼り付けて、このコネクターで実行できます。
Claude は AI のため誤ることがあります。回答をご確認ください。
💡 インストール不要? cloud.anythingmcp.com を直接利用してください。 サインインし、Connectors → Microsoft Dynamics 365 Sales (Dataverse) をクリック、認証情報を貼り付け、MCP API キーを発行すれば完了です。Docker も
git cloneもローカルサーバーも不要。
Dynamics 365 Sales
AI に Dynamics 365 Sales で作業させます。取引先企業、取引先担当者、リード、営業案件の検索と更新、タスク、電話、メモの記録、リードの評価、案件のクローズ、OData や FetchXML による任意の Dataverse テーブルへのクエリができます。Dataverse Web API 経由で、Microsoft アカウントでサインインします。
セットアップ
- 環境のアドレスを確認します。Dynamics で Settings(歯車アイコン)→ Advanced settings を開くか、Power Platform 管理センターで Environments → 対象の環境 → Environment URL を開きます。
contoso.crm4.dynamics.comのような形式です。https://とパスを除いたホスト名をDYNAMICS_ORG_HOSTに入力します。 - Microsoft Entra 管理センター(
https://entra.microsoft.com)を開き、Applications → App registrations → New registration に進みます。Outlook、OneDrive、SharePoint のコネクター用に作成したアプリを使い回してもかまいません。通常は Accounts in this organizational directory only を選びます。 - プラットフォーム Web を選び、リダイレクト URI として
https://cloud.anythingmcp.com/api/mcp-oauth/callbackを追加します(AnythingMCP をセルフホストしている場合は<your AnythingMCP URL>/api/mcp-oauth/callback)。完全に一致している必要があり、一致しないと Microsoft はAADSTS50011を返します。 - API permissions → Add a permission → Dynamics CRM → Delegated permissions で
user_impersonationにチェックを入れます。組織でユーザー自身による同意が許可されていない場合は、Grant admin consent をクリックします。 - Certificates & secrets → New client secret で、シークレットの Value をコピーします。表示されるのは一度だけです。
MICROSOFT_CLIENT_ID、MICROSOFT_CLIENT_SECRET、MICROSOFT_TENANT_ID(Directory (tenant) ID かドメイン、マルチテナントアプリの場合はorganizations)、DYNAMICS_ORG_HOSTを入力し、コネクターをインストールします。- Authorize with Provider をクリックしてその環境のユーザーでサインインし、簡単な確認として
d365_who_am_iを実行します。
リージョンはホスト名でわかります: crm の後の数字がデータセンターのリージョンです。たとえば crm は北米、crm4 はヨーロッパ、中東、アフリカ、crm11 は英国、crm16 はドイツです。推測せず、環境の URL からコピーしてください。承認は 1 つの環境に結び付いているため、後で DYNAMICS_ORG_HOST を変更した場合は、もう一度サインインする必要があります。
ユーザーと同じ権限: サインインするユーザーには、その環境での Dynamics 365 または Power Apps のライセンスと、Salesperson や Sales Manager などのセキュリティロールが必要です。AI が参照、変更できるのは、そのロールで許可されている範囲とまったく同じです。
できること: 取引先企業、取引先担当者、リード、営業案件の検索、作成、更新、それぞれのタイムラインへのタスク、電話、メモの記録、リードの評価または失格処理、営業案件の成立または不成立としてのクローズができます。見積もり、受注、製品、独自のカスタムテーブルなど、それ以外のデータについては、d365_query が OData クエリを実行し、d365_fetchxml_query が結合や集計を処理します。d365_list_tables と d365_describe_table で、どのテーブルと列があるかを確認できます。
まず確認: AI は作成と更新のたびにあなたに確認します。リードの評価や営業案件の成立、不成立はパイプラインを変え、Dynamics で手作業でしか元に戻せないため、毎回実行前に確認します。
インストール時はオフ: 削除ツール d365_delete_account、d365_delete_contact、d365_delete_lead、d365_delete_opportunity、d365_delete_record。削除すると関連する行も消えることがあるため、必要な場合だけツールごとにオンにしてください。
制限: Dataverse では、ユーザーごとに 5 分間で 6,000 リクエストまで利用できます。それを超えると、コネクターに待機するよう求めます。
よくあるエラー: 401 は、承認が取り消された、クライアントシークレットの期限が切れた、またはサインイン後に DYNAMICS_ORG_HOST が変更されたことを示します。もう一度承認してください。403 で「principal user is missing privilege」と表示される場合は、ユーザーのセキュリティロールにその権限がありません。サインイン直後からすべての呼び出しが 401 または 403 になる場合は、ユーザーがこの環境のメンバーではないか、その環境のライセンスを持っていません。412 は、読み取った後に行が変更されたことを示します。AI がもう一度読み取ります。
このコネクターは、Customer Service や独自のテーブルを持つ Power Apps など、他の Dataverse 環境でも使えます。
前提条件: MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID, DYNAMICS_ORG_HOST
ローカルでコネクタをインストール
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
http://localhost:3000/connectors/store を開き、 Microsoft Dynamics 365 Sales (Dataverse) を選択し、前提条件に記載された環境変数を入力します。
利用可能なツール
| Tool | What it does |
|---|---|
d365_who_am_i | Return the signed-in user's id (UserId), business unit and organization id |
d365_list_accounts | List or search accounts (companies): name, number, phone, email, website, city, country, primary contact, owner, status |
d365_get_account | Read one account with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag |
d365_create_account | Create an account |
d365_update_account | Change columns of one account; columns left out keep their values |
d365_delete_account | Delete one account |
d365_list_contacts | List or search contacts (people): full name, job title, email, phones, company (parentcustomerid), city, owner, status |
d365_get_contact | Read one contact with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag |
d365_create_contact | Create a contact, optionally linked to its account |
d365_update_contact | Change columns of one contact; columns left out keep their values |
d365_delete_contact | Delete one contact |
d365_list_leads | List or search leads: topic, name, company, email, phone, source, rating, estimated value, owner, status (open, qualified, disqualified) |
d365_get_lead | Read one lead with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag |
d365_create_lead | Create a lead |
d365_update_lead | Change columns of one open lead; columns left out keep their values |
d365_qualify_lead | Qualify an open lead: Dynamics closes it as qualified and creates the chosen records (account, contact, opportunity) from it, linked to the… |
d365_disqualify_lead | Close an open lead as disqualified with a reason: 4 Lost, 5 Cannot Contact, 6 No Longer Interested (default), 7 Canceled |
d365_delete_lead | Delete one lead |
d365_list_opportunities | List or search opportunities: topic, customer (account or contact), estimated value and close date, probability, pipeline phase, owner… |
d365_get_opportunity | Read one opportunity with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag |
d365_create_opportunity | Create an opportunity for an account or a contact |
d365_update_opportunity | Change columns of one open opportunity (value, close date, probability, description); columns left out keep their values |
d365_win_opportunity | Close an open opportunity as won, with the actual revenue and close date |
d365_lose_opportunity | Close an open opportunity as lost (canceled or out-sold), with an optional comment |
d365_delete_opportunity | Delete one opportunity |
d365_list_activities | List activities of every type (tasks, phone calls, emails, appointments) with subject, type, dates, status and the row they are about |
d365_get_email | Read one email activity: subject, body (HTML in description), sender, recipients, direction, sent date, status and the row it is about |
d365_create_task | Create a task for the signed-in user, about an account, contact, lead or opportunity |
d365_create_phone_call | Log a phone call activity about an account, contact, lead or opportunity, with notes |
d365_create_note | Add a note to the timeline of an account, contact, lead or opportunity |
d365_complete_task | Mark an open task as completed |
d365_query | Query any table by its entity set name with OData: quotes, salesorders, invoices, products, pricelevels, campaigns, competitors… |
d365_next_page | Read the next page of any list, query or FetchXML answer that carried @odata.nextLink |
d365_fetchxml_query | Run a FetchXML query: joins across tables (link-entity), aggregates (count, sum, avg with groupby) and filters the OData syntax cannot… |
d365_get_record | Read one row of any table by entity set and id, with labels for choice and lookup columns and its @odata.etag |
d365_create_record | Create a row in any table that has no dedicated tool (a quote, a product, a custom table) |
d365_update_record | Change columns of one row in any table; columns left out keep their values |
d365_delete_record | Delete one row of any table |
d365_list_tables | List tables with their logical name, entity set name (what the query tools take) and primary name column |
d365_describe_table | Describe one table: entity set name, primary id and name columns, and every column with its type, whether it is required and whether it can… |
d365_list_lookups | List the lookup columns of a table with the table each points to and the navigation property name a write needs ("<navigation… |
d365_get_choice_options | List the values and labels of a choice column (option set), e.g. industrycode of account or statuscode of opportunity, so filters and… |
プロンプトの例
- 「今四半期にクローズ予定の未完了の営業案件を、見込み収益の順に並べて表示して。」
- 「Contoso の Anna Meyer を探して、電話を記録して。金曜日までに見積もりが欲しいとのこと。」
- 「過去 30 日間のリードのうち、まだオープンでアクティビティが 1 件もないものは?」
- 「Fabrikam の更新案件を 48,000 で成立としてクローズし、来週月曜日のフォローアップタスクを作成して。」
次のステップ
このガイドは役に立ちましたか?