AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


技术视角理解MCP: 基于mcphost+Ollama+Qwen实战

发布日期:2025-03-15 07:21:59 浏览次数: 1522 来源:技术真相
推荐语

深入解读MCP技术架构,探索大模型软件开发新范式。

核心内容:
1. MCP技术背景与开源项目mcphost实例分析
2. 大模型软件架构设计及微软Omniparser案例
3. MCP协议对大模型软件架构的影响与未来展望

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家
1.背景
最近MCP很火相关的文章也很多, 但从技术角度看总感觉没有把MCP讲透。 “终知此事要躬行”,本文以开源项目mcphost为例,来看看MCP到底是什么,希望可以帮助您理解“当别人在说MCP的时候到底在说什么”。
2.基于大模型的软件架构方式
大模型可以很好理解自然语言,也就可以比较准确的提取出用户输入的意图。只要有了这个意图, 剩下的实现这个意图就是普通的软件开发任务了。
比如:用户输入是“创建文件a.txt”, 大模型理解这个意图,知道应该调用创建文件的能力创建文件,开发人员只要实现创建文件的能力给大模型用就好了。
下图是一个比较经典的基于大模型的软件架构:
软件收到用户用自然语言给出的需求后:
  • 第一步是将其组装成一个给到大模型的prompt,比如:告诉大模型你的回答只能是在Action1和Action2中选择一个,并且告诉他Action1是完成任务1,Action2是完成任务2。用户的指令是“完成任务2”。有了这样一个严格的prompt后, 大模型分析用户输入,推理出回答应该是Action1.
  • 第二步软件收到回答是Action1的时候, 就会去调用Action1 Server完成任务1. Action 2同理。
  • 至于Software和Action Server是怎么通信起来的,随意你怎么实现。
这个架构的典型案例可以参考微软的Omniparser工程,就是这个实现思路, 它的通信方式用的普通的HTTP协议。
这里所说的基于大模型的软件其实已经类似当前很火的AI Agent概念了。 
3.理解MCP
理解了上述软件架构方式后,再去理解MCP就容易多了。下图是MCP官方给的软件架构图, 其实从软件架构的角度来看, 这个图漏掉了非常重要的LLM模块。
从软件架构角度来说, MCP的架构图应该是下图所示:
核心是LLM的function call能力, 比如DeepSeek R1没有function能力也就不能用到MCP的架构中来了,而openai,Qwen这种具备function call能力是可以的。也可以看到MCP最大的贡献是把基于LLM的大模型软件架构里面的Action Server的实现方式给标准化了, 它提了一个标准化的MCP协议出来,就不再是各家自己通过HTTP,RPC之类的方式随意实现的了。
这个和gRPC很像,如果每个Action Server都遵循相同的标准,那复用确实会方便很多。
到这里就理解了MCP的核心贡献, 它将基于大模型的软件开发中用到的外部Action Server能力标准化了。这也意味着这, MCP要想成为未来大模型软件开发的事实标准的话,需要各家服务提供商都实现MCP服务才行。
如果MCP可以和HTTP一样简洁的话,是很有希望成为大模型软件开发的事实标准的。不过要注意的是, 没有MCP也不影响我们开发基于大模型的软件,即开发各种AI Agent。
4.大模型在软件架构中的价值
到这里面,MCP在基于大模型的软件架构发挥的作用相信已经明朗的。其实,不要被所谓的MCP误导了重点,MCP并不是什么重点,重点是大模型。正是大模型理解了用户的自然语言输入,推理出了下一步的动作,才使得整个软件可以运转起来,至于是不是MCP并不重要。在理解MCP的时候不要忘记这一点。
5.实战
看到很多文章说的是用Claude for desktop, 不知道他们是否有实际跑通Claude的例子。 我用科学上网方式也没有成功注册Claude。因此我找了一个golang版本的支持mcp的开源项目, 这个开源项目的实现非常简洁,可以很好的帮助我们理解MCP的运转方式。
5.1 安装
以Windows为例:
  • 通过浏览器安装nodejs, 然后执行命令
npx -y @modelcontextprotocol/server-filesystem D:\\temp
  • clone mcphost工程
git clone https://github.com/mark3labs/mcphost.git
  • 在工程目录下添加名为mcp.json的文件,内容如下:
{    "mcpServers": {      "filesystem": {        "command""npx",        "args": [          "-y",          "@modelcontextprotocol/server-filesystem",          "D:\\temp"        ]      }    }  }
  • 以Qwen 2.5 7B大模型为例,用Ollama启动这个模型:
ollama run qwen2.5:7b
如果没有Ollama的话,自己通过浏览器安装下。 首次启动需要将4.7G的模型文件下载下来,可能比较耗时。
  • 编译工程
go build -o mcphost.exe main.go
一定要加上exe后缀, 不然Windows上执行不了。
5.2 和Qwen的交互过程
用如下命令启动mcphost:
.\mcphost.exe -m ollama:qwen2.5:7--config .\mcp.json
用户输入
创建文件a.txt
mcphost实际向Ollama发的请求内容是如下的json。可以看到实际上是一个定制化的prompt,即function call。 基于AI Agent依赖的核心就是大模型的function call能力。
注意, DeepSeek R1是不支持function call的,因此如果你将上面的模型改成DeepSeek会报错:
Error: registry.ollama.ai/library/deepseek-r1:7B does not support tools
Ollama的输出如下
告诉Agent应该调用的函数和参数。 根据收到的toolName和参数完成接下来的mcp服务调用:
最终的运行效果如图所示,可以看到它还有纠错的能力
至于MCP协议格式、Client和Server的实现是比较普通的软件开发了,mcphost工程挺简洁,建议可以去看下它的实现。
6.总结
到这里, 所谓MCP就不神秘了。 希望本文对您有所帮助,如有错误的地方欢迎分享指正。谢谢!

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询