Connector guide9-minute read42 MCP tools7 languages

How to Connect Dynamics 365 Sales to Meta Muse via MCP

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

HCBy HelpCode teamUpdated 9 min read Open-source on GitHub

No credit card · 7-day trial · Self-host alternative available

Microsoft Dynamics 365 Sales (Dataverse)

Microsoft Dynamics 365 Sales (Dataverse)

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

tools

42

Region

INTL

Category

CRM

Authentication

OAuth 2.0

Required env vars

MICROSOFT_CLIENT_IDMICROSOFT_CLIENT_SECRETMICROSOFT_TENANT_IDDYNAMICS_ORG_HOST
Install in one click on Cloud

7-day free trial · No credit card

  • 7-day free trial
    No credit card required
  • GDPR & SOC 2 ready
    EU data residency, audit logs
  • Open-source on GitHub
    Open source · AGPL-3.0
  • Works with ChatGPT, Claude, Gemini
    Any MCP-compatible client

Skip the install. Get this working in under 2 minutes.

Start a free trial on cloud.anythingmcp.com, add the Microsoft Dynamics 365 Sales (Dataverse) in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.

Start free trial

Summary

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Try asking

Example prompts for Microsoft Dynamics 365 Sales (Dataverse)

Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.

Microsoft Dynamics 365 Sales (Dataverse) · live via MCP
Share
Opus 4.7

Claude is AI and can make mistakes. Please double-check responses.

💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Microsoft Dynamics 365 Sales (Dataverse), paste your credentials, mint an MCP API key and you're done. No Docker, no git clone, no local server.

Dynamics 365 Sales + Meta Muse

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Prerequisites

See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:

MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID, DYNAMICS_ORG_HOST

Step 1 — Get credentials

  1. Find your environment's address: in Dynamics open Settings (the gear) → Advanced settings, or in the Power Platform admin center open Environments → your environment → Environment URL. It looks like contoso.crm4.dynamics.com. Enter the host name, without https:// and without a path, in DYNAMICS_ORG_HOST.
  2. Open the Microsoft Entra admin center at https://entra.microsoft.com → Applications → App registrations → New registration, or reuse the app you created for the Outlook, OneDrive or SharePoint connector. Accounts in this organizational directory only is the usual choice.
  3. Add a redirect URI with the platform Web: https://cloud.anythingmcp.com/api/mcp-oauth/callback (if you host AnythingMCP yourself: <your AnythingMCP URL>/api/mcp-oauth/callback). It has to match exactly, or Microsoft answers AADSTS50011.
  4. Under API permissions → Add a permission → Dynamics CRM → Delegated permissions, tick user_impersonation. Click Grant admin consent if your organisation does not let users consent themselves.
  5. Under Certificates & secrets → New client secret, copy the secret Value. It is shown once.
  6. Fill in MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID (your Directory (tenant) ID or domain, or organizations for a multi-tenant app) and DYNAMICS_ORG_HOST, then install the connector.
  7. Click Authorize with Provider and sign in with a user of that environment, then run d365_who_am_i as a quick check.

The region is in the host name: the number after crm is the datacenter region, for example crm for North America, crm4 for Europe, the Middle East and Africa, crm11 for the United Kingdom or crm16 for Germany. Copy it from the environment URL rather than guessing. Changing DYNAMICS_ORG_HOST later needs a new sign-in, because the authorization belongs to one environment.

Same permissions as the user: the user who signs in needs a Dynamics 365 or Power Apps licence in that environment and a security role such as Salesperson or Sales Manager. The AI sees and changes exactly what that role allows.

What it does: find, create and update accounts, contacts, leads and opportunities, log tasks, phone calls and notes on their timeline, qualify or disqualify leads, and close opportunities as won or lost. For everything else, such as quotes, orders, products or your own custom tables, d365_query runs OData queries and d365_fetchxml_query handles joins and totals. d365_list_tables and d365_describe_table show which tables and columns exist.

Confirm first: the AI confirms every create and update with you. Qualifying a lead and winning or losing an opportunity change your pipeline and can only be undone by hand in Dynamics, so it asks before each one.

Switched off at install: the delete tools d365_delete_account, d365_delete_contact, d365_delete_lead, d365_delete_opportunity and d365_delete_record. A deletion can remove related rows too, so switch them on per tool only if you need them.

Limits: Dataverse allows 6,000 requests per user in 5 minutes; beyond that it asks the connector to wait.

Common errors: 401 means the authorization was revoked, the client secret expired, or DYNAMICS_ORG_HOST changed since you signed in, so authorize again. 403 with "principal user is missing privilege": the user's security role lacks that permission. 401 or 403 on every call right after signing in: the user is not a member of this environment or has no licence there. 412: the row changed since it was read, so the AI reads it again.

The connector also works with other Dataverse environments, such as Customer Service or Power Apps with your own tables.

Step 2 — Install the adapter

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

Step 3 — Add the connector in Muse

Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide shows YOUR_SERVER_ID.

Muse adds remote MCP servers as custom connectors and signs in to them with OAuth.

  1. In Muse, open Settings → Connectors and choose Add custom connector.
  2. Paste the MCP server URL https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID.
  3. Muse opens the AnythingMCP sign-in page: sign in and approve access.
  4. In a chat, ask Muse for something that needs the Dynamics 365 Sales tools.

You can also set it up from a chat, on the web, in the iOS and Android apps or in WhatsApp. Send Muse this message:

Create a Custom Connector for a new remote MCP server, then connect to it:
Name: AnythingMCP
Transport: remote streamable HTTP
URL: https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID
Auth: OAuth

Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Muse connects from Meta's cloud, so localhost does not work.

Available tools

ToolWhat it does
d365_who_am_iReturn the signed-in user's id (UserId), business unit and organization id
d365_list_accountsList or search accounts (companies): name, number, phone, email, website, city, country, primary contact, owner, status
d365_get_accountRead one account with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag
d365_create_accountCreate an account
d365_update_accountChange columns of one account; columns left out keep their values
d365_delete_accountDelete one account
d365_list_contactsList or search contacts (people): full name, job title, email, phones, company (parentcustomerid), city, owner, status
d365_get_contactRead one contact with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag
d365_create_contactCreate a contact, optionally linked to its account
d365_update_contactChange columns of one contact; columns left out keep their values
d365_delete_contactDelete one contact
d365_list_leadsList or search leads: topic, name, company, email, phone, source, rating, estimated value, owner, status (open, qualified, disqualified)
d365_get_leadRead one lead with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag
d365_create_leadCreate a lead
d365_update_leadChange columns of one open lead; columns left out keep their values
d365_qualify_leadQualify an open lead: Dynamics closes it as qualified and creates the chosen records (account, contact, opportunity) from it, linked to the…
d365_disqualify_leadClose an open lead as disqualified with a reason: 4 Lost, 5 Cannot Contact, 6 No Longer Interested (default), 7 Canceled
d365_delete_leadDelete one lead
d365_list_opportunitiesList or search opportunities: topic, customer (account or contact), estimated value and close date, probability, pipeline phase, owner…
d365_get_opportunityRead one opportunity with every column (or the selected ones), with labels for choice and lookup columns and its @odata.etag
d365_create_opportunityCreate an opportunity for an account or a contact
d365_update_opportunityChange columns of one open opportunity (value, close date, probability, description); columns left out keep their values
d365_win_opportunityClose an open opportunity as won, with the actual revenue and close date
d365_lose_opportunityClose an open opportunity as lost (canceled or out-sold), with an optional comment
d365_delete_opportunityDelete one opportunity
d365_list_activitiesList activities of every type (tasks, phone calls, emails, appointments) with subject, type, dates, status and the row they are about
d365_get_emailRead one email activity: subject, body (HTML in description), sender, recipients, direction, sent date, status and the row it is about
d365_create_taskCreate a task for the signed-in user, about an account, contact, lead or opportunity
d365_create_phone_callLog a phone call activity about an account, contact, lead or opportunity, with notes
d365_create_noteAdd a note to the timeline of an account, contact, lead or opportunity
d365_complete_taskMark an open task as completed
d365_queryQuery any table by its entity set name with OData: quotes, salesorders, invoices, products, pricelevels, campaigns, competitors…
d365_next_pageRead the next page of any list, query or FetchXML answer that carried @odata.nextLink
d365_fetchxml_queryRun a FetchXML query: joins across tables (link-entity), aggregates (count, sum, avg with groupby) and filters the OData syntax cannot…
d365_get_recordRead one row of any table by entity set and id, with labels for choice and lookup columns and its @odata.etag
d365_create_recordCreate a row in any table that has no dedicated tool (a quote, a product, a custom table)
d365_update_recordChange columns of one row in any table; columns left out keep their values
d365_delete_recordDelete one row of any table
d365_list_tablesList tables with their logical name, entity set name (what the query tools take) and primary name column
d365_describe_tableDescribe 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_lookupsList the lookup columns of a table with the table each points to and the navigation property name a write needs ("<navigation…
d365_get_choice_optionsList the values and labels of a choice column (option set), e.g. industrycode of account or statuscode of opportunity, so filters and…

Example prompts

  • "Show my open opportunities closing this quarter, sorted by estimated value."
  • "Find Anna Meyer at Contoso and log a call: she wants a quote by Friday."
  • "Which leads from the last 30 days are still open and have no activity yet?"
  • "Mark the Fabrikam renewal as won at 48,000 and create a follow-up task for next Monday."

FAQ

Where is Muse available? Meta currently offers Muse in the US and Canada, on the web, in the iOS and Android apps and in WhatsApp.

Does Meta review this connector? No. Meta doesn't review custom connectors. Muse sees only the tools you switched on for this MCP server in AnythingMCP, and you can disconnect it anytime under Settings → Connectors.

Next steps

Was this guide helpful?

Your Microsoft Dynamics 365 Sales agent is one click away.

Install the connector, paste the key, prompt Meta Muse. Free for 7 days, no credit card.

Related guides

Connectors

How to Connect Dynamics 365 Sales to ChatGPT via MCP

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Connectors

How to Connect Dynamics 365 Sales to Claude via MCP

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Connectors

How to Connect Dynamics 365 Sales to Cursor via MCP

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Connectors

How to Connect Dynamics 365 Sales to Gemini via MCP

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Connectors

Dynamics 365 Sales to MCP: Drive Dynamics 365 Sales from any AI Agent

Let your AI work in Dynamics 365 Sales: find and update accounts, contacts, leads and opportunities, log tasks, calls and notes, qualify leads and close deals, and query any Dataverse table with OData or FetchXML. Signed in with your Microsoft account through the Dataverse Web API.

Connectors

How to Connect Canva to Meta Muse via MCP

Let your AI work in Canva: find and read designs, create new ones, export them to PDF, PNG, PowerPoint or video with download links, organise folders, upload images from a link, read brand templates and comment on designs.