Skip to content
AI + MCP

AI + MCP 如何落地 CRM:从自然语言到受控业务工具调用

AI 不应绕过业务系统直接操作数据。本文解析蝉鸣 CRM 如何通过 MCP 将模型推理、工具调用与企业权限连接起来。

约 2728 字大约 9 分钟
蝉鸣 CRM AI + MCP 企业业务助手

“给 CRM 增加一个聊天框”并不等于完成智能化。如果模型只能生成文本,它无法判断客户的真实状态,也无法参与跟进、商机和服务流程;如果让模型直接访问数据库,又会破坏租户、权限和业务规则。

蝉鸣 CRM 4.1.0 采用另一条路线:AI 服务负责模型、会话和工具编排,CRM 服务继续负责客户数据、领域规则与权限,二者通过 MCP(Model Context Protocol)连接。

设计原则

模型负责理解自然语言,MCP 负责描述和调用工具,CRM 领域服务继续守住租户、权限与业务规则。

AI 模块不是某一家模型的包装层

services/mesh-ai 分为公共 API 与业务实现:

text
services/mesh-ai
├── mesh-ai-api   # MCP 工具定义、调用对象和远程服务契约
└── mesh-ai-biz   # 模型、会话、MCP Server、工具、Access Key

当前模型枚举覆盖 OpenAI、Azure OpenAI、Ollama、DeepSeek、通义千问、文心一言、豆包和腾讯混元。AiModelFactory 根据模型标识选择实现,统一提供聊天、图像、Embedding、语音合成和语音转写等模型能力。业务代码不需要绑定单一厂商。

从用户问题到 CRM 工具

AI 通过 MCP 调用 CRM 业务工具的链路

页面会话的核心链路如下:

  1. 用户通过网关和平台认证进入 AI 会话;
  2. AiChatServiceImpl 读取会话选择的模型和参数;
  3. McpServerToolService 将启用的业务工具装配到 ChatClient;
  4. 模型根据工具名称、描述和参数结构选择 Tool;
  5. AiMcpToolDispatchermcpModule 查找业务 Provider;
  6. Feign 契约 RemoteMcpToolProviderService 将调用转发给 CRM;
  7. CRM 校验参数、身份、租户和数据权限后执行业务逻辑;
  8. 工具结果返回模型,模型再生成面向用户的答案。

公共契约只保留两类调用:

java
public interface RemoteMcpToolProviderService {
    Result<String> invoke(McpToolInvokeRO dto);
    Result<String> invokeFromSession(McpToolInvokeRO dto);
}

invokeFromSession 复用页面当前登录身份;invoke 服务于 Access Key 的内部签名链路。业务服务只依赖公共 API,不需要了解模型如何创建,也不会依赖 AI Biz 的内部实现。

CRM 工具如何被发现和执行

CRM 侧通过 CrmMcpToolFactory 发现并注册工具方法,CrmMcpToolProviderController 实现统一远程契约,CrmMcpToolProviderService 完成校验和业务转发。当前工具方向覆盖客户、跟进和商机等查询与处理场景。

蝉鸣 CRM AI 模块中的 MCP 服务管理页面

这不是概念效果图,而是当前系统的 MCP 服务管理页面。管理员可以查看服务归属、请求方式、服务地址、超时配置和启用状态,使“模型能调用哪些工具”成为可配置、可核查的系统能力。截图未包含 Access Key 或会话中的客户数据。

新增一个工具时,需要同时处理五件事:明确工具名称与描述、定义输入参数、绑定业务模块、执行权限校验、验证模型调用闭环。工具描述决定模型能否选对能力,业务校验决定它即使选对工具,也只能在授权范围内工作。

外部 MCP Client 如何接入

AI 服务以 Streamable HTTP 暴露 MCP Server,默认端点为 /mcp。外部客户端使用平台生成的 MCP Access Key 接入。验证器会恢复账号、用户和租户身份,并检查密钥有效性、绑定状态和频率限制。

蝉鸣 CRM MCP 接入凭证生成与第三方客户端配置页面

创建凭证后,系统只展示一次完整密钥,并根据当前 MCP 服务地址自动生成第三方工具 JSON、Windows PowerShell、macOS/Linux 和 Node.js 配置。用户不需要手工拼接 Streamable HTTP 地址与认证头,可以直接选择目标环境复制完整配置。公开文档中的截图已遮挡访问密钥、服务地址与 Authorization 值。

蝉鸣 CRM MCP 接入凭证列表展示有效期、状态和吊销操作

凭证列表用于管理密钥名称、有效期、创建时间、到期时间、最后使用时间和当前状态。管理员可以按使用对象分别创建凭证,发现泄露、人员变化或客户端停用时立即吊销;过期和已吊销凭证不能再恢复业务身份。界面同时显示传输协议、只读限制和频率上限,使接入能力与安全边界可以在一个页面核查。

完整密钥只在创建时展示,数据库保存摘要,日志中不得记录密钥明文。这让外部 AI 客户端可以使用业务工具,同时仍然进入平台身份体系。

安全不是附加项

工具被模型选中不代表操作可以直接执行。所有调用仍需经过身份恢复、参数校验、数据权限与业务规则,敏感写操作还应增加用户确认。

销售行业案例:AI 分析商机但不越权

假设销售负责人提出:“列出我负责团队中 30 天未跟进、预计金额较高的商机,并给出本周行动建议。”

模型首先理解筛选条件,然后选择商机查询与跟进查询工具。CRM 按当前租户、组织与数据权限返回结果;模型对结构化结果归纳,生成优先级和行动建议。负责人看到的是自己有权访问的数据,模型也不能通过修改提示词获得其他团队客户。

如果下一步需要写入跟进记录,系统还应要求用户确认,并继续执行 CRM 校验。AI 可以降低操作成本,但不应成为绕过审批和权限的捷径。

从“能聊天”到“能协作”

AI + MCP 的价值,不是让 CRM 多一个新入口,而是建立可治理的业务协作方式:模型负责自然语言推理,工具契约定义可用能力,领域服务守住规则和数据,平台身份体系提供安全边界。

蝉鸣 CRM 已经将这条链路落到独立模块、接口和调度代码中。

一次业务问题如何穿过完整调用链

销售负责人提出“查询长期未跟进的高价值客户”后,ChatClient 组合模型配置、会话和当前身份。模型不读取数据库,只从已注册工具的名称、描述与参数中选择能力。McpServerToolService 管理工具暴露,Dispatcher 定位 Provider,RemoteMcpToolProviderService 通过 Feign 统一契约把请求交还 CRM。

CRM 侧的 Customer360McpToolCustomerVisitMcpToolCustomerPriorityMcpToolBusinessMcpToolContractMcpTool 不是通用 SQL,而是边界明确的领域工具。它们复用客户归属、租户、组织和数据权限。结果返回后模型负责归纳;若用户要求创建记录,则调用写工具并再次校验权限与业务状态。

参数不完整时应补充询问,工具不可用时明确返回能力状态,越权时以业务错误结束,不能靠改提示词重试。日志需要关联会话、模型、工具、用户、租户与结果,才能审计回答使用了哪些事实。

工具治理比模型选择更重要

高质量工具只完成一件可解释任务,参数区分必填、枚举和时间范围,返回最小必要字段。写操作应具备幂等标识、确认语义和审计结果。Access Key 支持外部 MCP Client 接入,但仍需绑定允许使用的工具与访问范围,它不是超级权限。

mesh-ai 可以适配不同模型、Agent 和向量存储;模型会变化,客户、商机和合同契约不能变化。稳定的 MCP 工具与 Feign 接口把模型选择和领域实现隔离,让升级 AI 时不必重写 CRM。

边界

检索、归纳、拜访提纲适合 AI;批量删除、无确认合同变更和跨租户查询不应直接开放。更多访问判定见多租户与数据权限

让 AI 成为受控的业务协作者

了解蝉鸣 CRM 的 AI + MCP 架构,以及企业场景中的模型接入与工具治理方案。

了解 AI + MCP体验蝉鸣 CRM

郑州蝉鸣数字科技有限公司出品