最近在做一些MCP的实践,做到一半对于做出的东西产生了怀疑
疑问1:真的需要工具吗?不用工具行不行?
疑问2:工具不就是接口吗?那我用Swagger不就可以了吗?
疑问3:MCP的概念无非就是注册表套个壳,和Nacos、Eureka本质上是差不多的,那我有必要去搞客户端、服务端、资源端这么复杂吗?
要么说要多上网,总会有人跟你遇到同样的问题,有网友的回答就解决了上述我的疑问,或者是产生了一些共鸣
说白了MCP就是一个设计思想而已,跟设计模式一样,是一种经验之谈,不用也不会影响业务运行,用了也不一定能降本增效(因为要看具体场景)。
对于MCP协议,不管如何设计,底层其实都是去开发适配不同模型function call的传参/返回,相比来说,Swagger规范比MCP更为实用。
Swagger中已经包含了接口的描述、入参、出参等信息,将这些信息直接交给大模型,做下接口选择就可以直接被使用了,如果需要大模型处理的接口比较多,那么Swagger还可以提供可视化界面进行管理,是不是方便很多
而MCP需要满足客户端、服务端、资源端三个要素,客户端、资源端一般就是天然的
如果你的客户端和资源端是在一起的,那就没必要用MCP。
如果是拆开的,普通的微服务调用也是可以的。
如果必须要用MCP,就要建立一个服务端来保存、匹配、执行工具,你可以单独建个工程或者像我一样使用dify来充当MCP Server《DeepSeek手搓了一个MCP实现了工具调用" data-itemshowtype="0" target="_blank" linktype="text" data-linktype="2">我用Dfiy+DeepSeek手搓了一个MCP实现了工具调用》,但是这些工具的执行逻辑和接口没有什么本质区别,基本都是通过Http服务、Java反射或者其他编程语言的特有属性来调用。这个时候,MCP看起来好像真的没啥用。

说到这里,其实应该再理解下MCP是干什么的,MCP是提供了一种大模型调用本地工具、数据库、服务的一种协议,拿工具来说,目前市场上的MCP调用的基本都是搜索引擎、小红书、微信公众号、支付宝支付页面,这些工具的应用场景都是很普遍,很通用的。
然后企业应用中一个简单的、独一无二的流程采用工具化,就显得比较蠢了(没错,我现在就是这么做的,所以感觉自己很蠢)。
后来跟公司一位大佬沟通了下,其实我们少了一步。
那就是对业务系统中可工具化内容的梳理,比如数据治理中的数据库连接是通用的,在多个环节都需要的,那么它就可以工具化。
但是如果是一个在数据采集中才有的逻辑,就不能被工具化,因为除了数据采集没地方用了。做成工具反而很鸡肋,还会让大模型提高产生幻觉的概率
说了这么多,感觉MCP没有什么用,为什么还要使用呢
(1)AI技术更迭很快,快速了解并应用这些技术,才能在这个赛道保证不掉队
(2)AI既是概念又是驱动力,对于客户来说能够解决实际问题是重中之重,j即使不能解决,AI也是现在这个时代一个产品不可获取的亮点
(3)使用这些AI技术都有前置条件,比如丢个文档给知识库直接查询,不准确的可能性会很大,但如果对数据加以处理,或极大增强可靠性;比如未作业务功能的梳理,直接使用MCP,就会产生自我怀疑
(4)AI在业务过程中都是辅助,即使我的业务流程完全没有改变,但是使用大模型的逻辑推理和MCP的工具调用能力来驱动执行这些业务流程,也算是为产品找到一个新的交互方式。
所以用或不用MCP以及其他AI技术,完全取决于你的业务场景
(1)需要AI作为产品应用的噱头、亮点,无脑上
(2)用户或客户提出了对话交互的需求,或者产品需要一种新的驱动方式,选择性上
(3)既有业务系统老旧且运行顺畅,不要上,除非你要做重构