跳过安装。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 key,即可完成。无 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。将主机名填入DYNAMICS_ORG_HOST,不带https://,也不带路径。 - 打开 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 中复制,不要猜测。之后更改 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 会重新读取。
该连接器也适用于其他 Dataverse 环境,例如 Customer Service,或带有你自己的表的 Power Apps。
前提条件: 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 天的潜在客户中,哪些仍未关闭且还没有任何活动?”
- “将 Fabrikam 续约商机以 48,000 关闭为赢单,并创建一个下周一的跟进任务。”
下一步
这份指南对你有帮助吗?