Salta l'installazione. Attivo in meno di 2 minuti.
Avvia una prova gratuita su cloud.anythingmcp.com, aggiungi Microsoft Dynamics 365 Sales (Dataverse) con un clic, poi punta il tuo client AI (Claude, ChatGPT, Copilot o Cursor) all'endpoint MCP generato. Niente Docker, niente git clone, nessuna esperienza di sviluppo richiesta.
In breve
Fai lavorare la tua AI in Dynamics 365 Sales: trova e aggiorna account, contatti, lead e opportunità, registra attività, chiamate e note, qualifica i lead e chiudi le trattative, e interroga qualsiasi tabella Dataverse con OData o FetchXML. Con il tuo account Microsoft, tramite la Dataverse Web API.
Prova a chiedere
Prompt di esempio per Microsoft Dynamics 365 Sales (Dataverse)
Clicca su un prompt per copiarlo. Incollalo in Claude, ChatGPT, Cursor, Gemini, Copilot o OpenClaw per eseguirlo contro questo connettore.
Claude è un'AI e può sbagliare. Verifica sempre le risposte.
💡 Niente installazione? Vai direttamente su cloud.anythingmcp.com. Accedi, clicca Connectors → Microsoft Dynamics 365 Sales (Dataverse), inserisci le credenziali, genera una MCP API key e hai finito. Niente Docker, niente
git clone, niente server locale.
Dynamics 365 Sales + Cursor
Fai lavorare la tua AI in Dynamics 365 Sales: trova e aggiorna account, contatti, lead e opportunità, registra attività, chiamate e note, qualifica i lead e chiudi le trattative, e interroga qualsiasi tabella Dataverse con OData o FetchXML. Con il tuo account Microsoft, tramite la Dataverse Web API.
Prerequisiti
Le istruzioni di setup complete sono incluse nel connettore stesso (visibili nello store quando lo selezioni). Le variabili d'ambiente richieste sono:
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID, DYNAMICS_ORG_HOST
Step 1 — Ottieni le credenziali
- Trova l'indirizzo del tuo ambiente: in Dynamics apri Settings (l'ingranaggio) → Advanced settings, oppure nell'interfaccia di amministrazione di Power Platform apri Environments → il tuo ambiente → Environment URL. Ha una forma come
contoso.crm4.dynamics.com. Inserisci il nome host, senzahttps://e senza percorso, inDYNAMICS_ORG_HOST. - Apri l'interfaccia di amministrazione di Microsoft Entra su
https://entra.microsoft.com→ Applications → App registrations → New registration, oppure riusa l'app che hai creato per il connettore Outlook, OneDrive o SharePoint. Di solito si sceglie Accounts in this organizational directory only. - Aggiungi un URI di reindirizzamento con la piattaforma Web:
https://cloud.anythingmcp.com/api/mcp-oauth/callback(se ospiti AnythingMCP in proprio:<your AnythingMCP URL>/api/mcp-oauth/callback). Deve corrispondere esattamente, altrimenti Microsoft rispondeAADSTS50011. - In API permissions → Add a permission → Dynamics CRM → Delegated permissions seleziona
user_impersonation. Clicca su Grant admin consent se la tua organizzazione non permette agli utenti di dare il consenso da soli. - In Certificates & secrets → New client secret copia il Value del secret. Viene mostrato una sola volta.
- Compila
MICROSOFT_CLIENT_ID,MICROSOFT_CLIENT_SECRET,MICROSOFT_TENANT_ID(la tua Directory (tenant) ID o il tuo dominio, oppureorganizationsper un'app multi-tenant) eDYNAMICS_ORG_HOST, poi installa il connettore. - Clicca su Authorize with Provider e accedi con un utente di quell'ambiente, poi esegui
d365_who_am_icome verifica rapida.
La regione è nel nome host: il numero dopo crm indica la regione del datacenter, per esempio crm per il Nord America, crm4 per Europa, Medio Oriente e Africa, crm11 per il Regno Unito o crm16 per la Germania. Copialo dall'URL dell'ambiente invece di tirare a indovinare. Se in seguito cambi DYNAMICS_ORG_HOST serve un nuovo accesso, perché l'autorizzazione vale per un solo ambiente.
Gli stessi permessi dell'utente: l'utente che accede deve avere in quell'ambiente una licenza Dynamics 365 o Power Apps e un ruolo di sicurezza come Salesperson o Sales Manager. L'AI vede e modifica esattamente ciò che quel ruolo consente.
Cosa fa: trova, crea e aggiorna account, contatti, lead e opportunità, registra attività, telefonate e note nella loro sequenza temporale, qualifica o squalifica i lead e chiude le opportunità come vinte o perse. Per tutto il resto, come offerte, ordini, prodotti o le tue tabelle personalizzate, d365_query esegue query OData e d365_fetchxml_query gestisce join e totali. d365_list_tables e d365_describe_table mostrano quali tabelle e colonne esistono.
Prima la conferma: l'AI conferma con te ogni creazione e ogni modifica. Qualificare un lead o chiudere un'opportunità come vinta o persa cambia la tua pipeline e si può annullare solo a mano in Dynamics, quindi chiede prima di ciascuna di queste azioni.
Disattivati all'installazione: i tool di eliminazione d365_delete_account, d365_delete_contact, d365_delete_lead, d365_delete_opportunity e d365_delete_record. Un'eliminazione può rimuovere anche le righe collegate, quindi attivali uno per uno solo se ti servono.
Limiti: Dataverse consente 6.000 richieste per utente in 5 minuti; oltre questa soglia chiede al connettore di attendere.
Errori comuni: 401 significa che l'autorizzazione è stata revocata, che il client secret è scaduto o che DYNAMICS_ORG_HOST è cambiato dopo l'accesso, quindi autorizza di nuovo. 403 con "principal user is missing privilege": al ruolo di sicurezza dell'utente manca quel permesso. 401 o 403 su ogni chiamata subito dopo l'accesso: l'utente non è membro di questo ambiente o non vi ha una licenza. 412: la riga è cambiata da quando è stata letta, quindi l'AI la rilegge.
Il connettore funziona anche con altri ambienti Dataverse, come Customer Service o Power Apps con le tue tabelle.
Step 2 — Installa l'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 — Aggiungi il connettore in Cursor
L'URL del tuo server: in AnythingMCP apri MCP Servers → il server su cui si trova questo connettore e copia il suo URL (
https://cloud.anythingmcp.com/mcp/…). Usalo ovunque questa guida mostraYOUR_SERVER_ID.
Cursor legge i server MCP da ~/.cursor/mcp.json. Aggiungi questa voce:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Crea una chiave API MCP in AnythingMCP da MCP Servers → il tuo server → API keys e incollala al posto di
YOUR_MCP_API_KEY. - Salva il file e riavvia Cursor.
- Apri Cursor → Settings → MCP e verifica che
anythingmcpsia elencato e connesso. - Inizia a chattare: l'agente ora può usare i tool di
Dynamics 365 Sales.
Tool disponibili
| 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… |
Esempi di prompt
- "Mostrami le mie opportunità aperte con chiusura prevista in questo trimestre, ordinate per valore stimato."
- "Trova Anna Meyer di Contoso e registra una chiamata: vuole un'offerta entro venerdì."
- "Quali lead degli ultimi 30 giorni sono ancora aperti e non hanno ancora nessuna attività?"
- "Chiudi il rinnovo Fabrikam come vinto a 48.000 e crea un'attività di follow-up per lunedì prossimo."
FAQ
Cursor supporta server MCP personalizzati nel piano gratuito? Sì, MCP è disponibile nei piani Hobby, Pro e Business.
Prossimi passi
Questa guida ti è stata utile?