突然MCP就很火了,这里闲聊一点使用经验(开发经验计划下一篇),面对变化,不变的是什么呢?同时在文末畅想一下未来,这或许是技术人的浪漫吧:)
大模型相关技术真是日新月异,还记得我在2个月前写了一篇关于Cursor的文章,当时对比说Cline的MCP有不错的想象空间。于是稍作研究,年前积累了几篇相关文章因为家事忙都没空整理发出来,感觉再不理出来就过时了呢。但是我们有时并不应该简单看技术本身,而是应该思考技术背后的价值,比如它是什么生态位的?
自从有了function call,给模型的能力赋予了更多的想象空间。但略遗憾的是这个功能并没有很快大红大紫,其原因可能有多种。比如要很好的支持function call,需要模型本身具备一定的能力,咱们很多很火的大模型都不能很好的支持(或者完全不支持),比如说deepseek(注:最新Google开源的Gemma3在很小模型下支持了function call,有空测试一下,成立的话咱能节省不少成本呢,请关注后续文章)。同时function call 的使用门槛挺高,每家公司标准也不一样,OpenAI和Google对于function call的定义就不一样,这导致相关功能可复用性不强。在这种情况下,Claude模型背后的公司Anthropic提出了一种大模型的通用交互标准协议,这就是MCP。
关于MCP已经有很多文章介绍了,我们关注最终能干点啥,这就是今天的主角mcp-server。每天都有不少mcp-server被开发出来,本文主要从使用者角度聊一下如何用好MCP的能力。之后或许会从开发角度聊聊mcp-server的实现原理以及如何开发一些实用的mcp相关工具(不止mcp-server)。
从最早Anthropic自己当家的Claude Desktop开始,目前已经有相当多使用MCP的应用了,比如:
不过多数是在代码编辑器中集成,看起来程序员对自动化、智能化的接受程度果然是更高的呀:) 各种APP对MCP协议支持程度不一,支持最好的当然要数Claude了。详情看这里:MCP Feature Support Matrix[1]
因为国内网络问题,我不是很推荐使用Claude Desktop。而Cursor最近0.46/0.47虽然疯狂修复MCP的支持bug,但到目前为止依然问题多多。如果你是在Cursor中编辑和调试mcp-server,你要准备好随时掉进坑里。依托于VCode的Cline使用会简单方便得多,配置一个模型,然后就可以开始愉快地使用MCP了。特别是现在它有了Marketplace,可以很方便的安装和使用各种mcp-server。从对于MCP支持的稳定性上来说,cline还是合格的,基本能按预期调起。比如以下是我用cline通过perplexity API检索一些信息。
Windsurf在使用MCP的体验也很不错,后文有截图Windsurf的过程呈现(UI)更漂亮易懂。
但有时我们也不是想要写代码,只是用工具找点乐子,我发现一个更纯粹更小巧的工具mcphost(https://github.com/mark3labs/mcphost)。
A CLI host application that enables Large Language Models (LLMs) to interact with external tools through the Model Context Protocol (MCP). Currently supports both Claude 3.5 Sonnet and Ollama models.
关于mcphost,最开始使用它是为了调试mcp-server,后来发现它其实是一个很纯粹的MCP客户端,可以很方便的调用各种mcp-server。它的功能简单描述:
我们可以一个命令搞定mcphost安装(前提是已经安装了go):
goinstallgithub.com/mark3labs/mcphost@latest
之后我们配置一个简单的mcp-server来玩一下,创建一个mcp.json文件,内容如下:
{
"mcpServers":{
"time":{
"command":"uvx",
"args":["mcp-server-time","--local-timezone=Asia/Shanghai"]
}
}
}
这个mcp-server是基于uvx来运行服务的,所以你若本地没安装最好提前安装一下。
uvx 是一个轻量级的工具,主要用于在临时环境中运行 Python 工具和脚本。通过其即用即走的特性和临时虚拟环境的使用,解决了环境管理的复杂性和工具版本管理的问题,特别适合快速试用工具或在 CI/CD 环境中执行临时任务。
然后运行mcphost:
exportOPENAI_API_KEY=sk-xxx
mcphost--openai-api-key=$OPENAI_API_KEY-mopenai:gpt-4o--configmcp.json
成功加载完mcp-server后,就进入了交互模式:
2025/03/1517:33:04INFOModelloadedprovider=openaimodel=gpt-4o
2025/03/1517:33:04INFOInitializingserver...name=time
2025/03/1517:33:11INFOServerconnectedname=time
2025/03/1517:33:11INFOToolsloadedserver=timecount=2
•time
•get_current_time
•Getcurrenttimeinaspecifictimezones
•convert_time
•Converttimebetweentimezones
You:现在几点了
Assistant:
2025/03/1517:33:22INFO?Usingtoolname=time__get_current_time
2025/03/1517:33:22INFOUsagestatisticsinput_tokens=221output_tokens=20total_tokens=241
Assistant:
现在是北京时间 17:33(下午5点33分)。
┃Enteryourprompt(Type/helpforcommands,Ctrl+Ctoquit)
本来没有啥时间概念的大模型,现在很清楚的掌握了当前时间。接下来我多问了一嘴:
You:那当前时间的农历日期是?
Assistant:
当前时间是公历2025年3月15日,我暂时无法直接计算出对应的农历日期。但你可以使用农历转换工具或者查询相关日历来获取对应的农历日期。如果你需要我帮忙查找其他相关信息,请告诉我!
┃Enteryourprompt(Type/helpforcommands,Ctrl+Ctoquit)
工具不够用了,是时候进入下一个环节。
PS:当然你可以使用/help查看到mcphost支持的一些命令如tools/servers等,试用一下呗。
如上面展示,我想知道农历怎么办,可能有某个mcp-server能回答这个问题,不过我相信只要大模型能联网,它或许也能回答。我们继续在上面mcp.json中添加一个mcp-server,我们选择了tavily,一个搜索引擎。需要申请一个tavily的API key[2]
{
"mcpServers":{
"time":{
"command":"uvx",
"args":["mcp-server-time","--local-timezone=Asia/Shanghai"]
},
"tavily":{
"command":"npx",
"args":["-y","@mcptools/mcp-tavily"],
"env":{
"TAVILY_API_KEY":"{{你需要去申请tavily的APIkey,免费的够用}}"
}
}
}
}
接下来再问一次:
You:那当前时间的农历日期是?
Assistant:
2025/03/1517:47:03INFO?Usingtoolname=time__get_current_time
2025/03/1517:47:03INFOUsagestatisticsinput_tokens=945output_tokens=20total_tokens=965
Assistant:
2025/03/1517:47:04INFO?Usingtoolname=tavily__searchQNA
2025/03/1517:47:04INFOUsagestatisticsinput_tokens=1002output_tokens=30total_tokens=1032
Assistant:
当前时间的农历日期是:2025年二月十六,属于乙巳年、己卯月、癸未日。
如果您需要更详细的信息,可以查看相关的黄历和农历查询网站,例如:水墨先生 https://m.smxs.com/hl/nongli_2025-3-15.html。
┃Enteryourprompt(Type/helpforcommands,Ctrl+Ctoquit)
它居然把出处也写上了呢,还真是有效的一个链接,有联网后幻觉的病也好多了。
如果你像我一样平常已经习惯使用Perplexity来搜索信息,那么我们也可以使用Perplexity的MCP-Server来随便调起搜索。只是它这个API是使用Sonar API在线搜索的,或许和官网可用的几种模式略有区别,比如深度研究等估计是没有了,期待未来更完善,当前也能满足日常使用。同样的,我们要注册一个API KEY,但木有免费额度,所以可能要借助信用卡或Google pay等注册充值后才可以调用。这个mcp-server的安装稍麻烦一些,没有上传到官方仓库等,我们可能要手动编译构建一下。
gitclonehttps://github.com/ppl-ai/modelcontextprotocol.git
cdmodelcontextprotocol/perplexity-ask
npminstall
npmrunbuild
之后会在对应dist目录下会有一个index.js文件,我们就可以修改mcp.json让node运行它。
{
"mcpServers":{
"time":{
"command":"uvx",
"args":["mcp-server-time","--local-timezone=Asia/Shanghai"]
},
"perplexity-ask":{
"command":"/opt/homebrew/bin/node",
"args":["{{你本地代码路径}}/modelcontextprotocol/perplexity-ask/dist/index.js"],
"env":{
"
ERPLEXITY_API_KEY":"{{你的PerplexityAPIKEY}}"
}
}
}
}
使用呈现:
•time
•get_current_time
•Getcurrenttimeinaspecifictimezones
•convert_time
•Converttimebetweentimezones
•perplexity-ask
•perplexity_ask
•EngagesinaconversationusingtheSonarAPI.Acceptsanarrayofmessages(eachwitharoleandcontent)andreturnsaaskcompletionresponsefromthePerplexitymodel.
You:用500个字内简单总结一下最近deepseek开源的几个项目及作用
Assistant:
2025/03/1519:27:54INFO?Usingtoolname=perplexity-ask__perplexity_ask
2025/03/1519:27:54INFOUsagestatisticsinput_tokens=348output_tokens=49total_tokens=397
Assistant:
最近,DeepSeek开源了几个重要项目,旨在提升人工智能(AI)模型的训练和推理效率,具体包括:
1. FlashMLA:这是一个针对Hopper GPU优化的高效多头注意力解码内核。它可以显著提高显存利用率和推理速度,让老旧显卡焕发新生,从而提升整个模型的运行效率。
2. DeepEP:专为混合专家(MoE)模型设计的高效通信库。通过优化节点间的通信,它能够加速大型模型的训练和推理,减少了通信延迟,提高了整体性能。
3. DeepGEMM:这是一个轻量级高性能的矩阵乘法库,支持FP8精度,旨在提升大规模矩阵运算的效率。这个库为深度学习模型的计算提供了基础支持,尤其是在处理大规模数据时。
4. DualPipe与EPLB:这两个项目是并行训练的优化方案,包含双向流水线并行算法和专家并行负载均衡,能够大幅提高分布式训练的效率,帮助研究人员更快地进行模型训练。
5. 3FS:这是一个为AI训练和推理设计的高性能分布式文件系统,旨在解决海量数据的高速存取与管理问题。它使得数据管理更加高效,为AI模型提供了快速的数据访问能力。
这些项目覆盖了AI开发的整个链路,从底层硬件优化到模型训练和推理加速,再到数据存储和通信效率的提升。它们的目标是降低AI开发的门槛,提高资源利用率,加速模型的训练与推理,进而推动AI技术的普及和创新。这一系列开源举措被视为AI基础设施领域的重要突破,有望重塑行业格局。
┃Enteryourprompt(Type/helpforcommands,Ctrl+Ctoquit)
我也不知道对不对,但看起来就很厉害。还有一些搜索工具也很推荐:
Brave Search,你可以很方便使用它[3](比上面这个容易用得多)。Firecrawl,你可以在这里查看firecrawl-mcp-server[4],它支持深度研究等搜索。据说网页抓取成功率非常高。免费注册有一些次数可使用。当然这些都需要一个Key,看自己喜好去注册吧,成人也可以不做选择。
过往我们除了手动一个个文件去找东西外,也就能用命令行或一些字符串匹配的方式来找东西。有了这个mcp-server可以让我们很方便智能的和文件系统互动了。同样的添加一个配置就可以玩了:
"filesystem":{
"command":"npx",
"args":[
"-y",
"@modelcontextprotocol/server-filesystem",
"{{你本地文件系统路径1}}",
"{{你本地文件系统路径2}}"
]
}
比如我们可以这样聊
You:我的Source目录有哪些项目
Assistant:
2025/03/1606:47:42INFO?Usingtoolname=filesystem__list_allowed_directories
2025/03/1606:47:42INFOUsagestatisticsinput_tokens=2433output_tokens=16total_tokens=2449
Assistant:
2025/03/1606:47:44INFO?Usingtoolname=filesystem__list_directory
2025/03/1606:47:44INFOUsagestatisticsinput_tokens=2469output_tokens=25total_tokens=2494
Assistant:
在你的 Source 目录下,有以下项目:
1.blog(目录)
2.mcp-test(目录)
3.modelcontextprotocol(目录)
...
You:blog目录中在2024年发表了哪些文章呢
Assistant:
2025/03/1606:48:13INFO?Usingtoolname=filesystem__list_directory
2025/03/1606:48:13INFOUsagestatisticsinput_tokens=2595output_tokens=26total_tokens=2621
Assistant:
2025/03/1606:48:15INFO?Usingtoolname=filesystem__list_directory
2025/03/1606:48:15INFOUsagestatisticsinput_tokens=2734output_tokens=27total_tokens=2761
Assistant:
2025/03/1606:48:16INFO?Usingtoolname=filesystem__list_directory
2025/03/1606:48:16INFOUsagestatisticsinput_tokens=2789output_tokens=28total_tokens=2817
Assistant:
2025/03/1606:48:18INFO?Usingtoolname=filesystem__list_directory
2025/03/1606:48:18INFOUsagestatisticsinput_tokens=2886output_tokens=31total_tokens=2917
Assistant:
在你的 blog 目录中,2024 年发表的文章有:
1.2024-01-08-summarize
2.2024-01-21-using-vscode
3.2024-02-19-tl-r479gp-proxy
4.2024-02-24-speed-up-your-network
5.2024-03-05-using-webhook
6.2024-03-10-monitor-and-alert-traffic
7.2024-03-31-oneapi-for-all-models
8.2024-06-10-oneapi-and-models-tips
9.2024-06-15-ai-with-alfred
10.2024-07-07-secret-watcher
11.2024-07-21-remember-me
12.2024-07-29-talk-with-ai
13.2024-08-25-usg-to-mikrotik
14.2024-09-30-steamdeck-to-ps5
15.2024-10-16-create-union-k8s-cluster
16.2024-11-16-mac-mini-m4
17.2024-11-25-mac-mini-play-games
这些都是在 2024 年发表的文章目录。
呃,一不小心暴露了我月更党的倾向。
Smithery.ai是一个mcp server平台,面向新手使用友好,我们可以用来它配置mcp-server。它还提供了交互式让你填写必要的配置。比如我们看这里:https://smithery.ai/server/obsidian-mcp,在右边可以基于自己的应用选择相应的安装方式。
比如我选择了Windsurf,拷贝命令在本地执行后:
❯npx-y@smithery/cli@latestinstallobsidian-mcp--clientwindsurf
✔Successfullyresolvedobsidian-mcp
?TheabsolutepathtoyourObsidianvault.(required){{你本地ObsidianVault绝对路径}}
obsidian-mcpsuccessfullyinstalledforwindsurf
然后就可以直接在Windsurf中使用它了。我们不妨看一眼配置:
"obsidian-mcp":{
"command":"npx",
"args":[
"-y",
"@smithery/cli@latest",
"run",
"obsidian-mcp",
"--config",
"\"{\\\"vaultPath\\\":\\\"{{你本地ObsidianVault绝对路径}}\\\"}\""
]
}
我们随便问点东西,可以和你的Obsidian知识库互动了。
之后就可以和AI聊聊你的个人知识库了,更多的细节实践未来有空再分享。关于Obsidian结合大模型的使用,最近正考虑另写一篇。
在真实使用上,不论是支持MCP的应用,还是mcp-server本身成熟度,都还有一段路要走。比如:现在似乎正在野蛮生长期,
但是这些不是我们否定MCP的理由,相反,我更愿意相信MCP会是一个趋势,就像他们所描述的,期待它能成为一个类似USB一样的标准,连接、连接、连接。
我们不妨想象一下,未来为了抢夺用户,各个AI应用如元宝、豆包等,它们或许也会支持MCP,让用户可以将智能应用于更多场景。不过大厂也不可能将各种功能都实现,所以还是会调用其它平台能力吧?如何整合到一起,想一想挺有意思。
我们不妨想象一下,未来我们的第二大脑是大模型,我们给的是需求,它自己决定调用哪些工具。作为被调用的工具方,在初期应该会有一波流量,因为大家在建设各自的智能体时(Agent),最终都需要终端能干活的“手”,但最终的发展可能还是看各个工具自己的品质和对需求的洞察与满足情况。
而在认识到MCP及有一些实际体验后,会发现在工作与日常中,目前就有很多场景可以应用。比如:
李开复先生的“所有行业都会被人工智能触及、改变、转型并提效。” 是有见地的,你看过高效而智能的做法,将再也回不去过往的流程了。
这篇文章就开个头,下一篇文章可能会聊聊开发mcp-server的经验,包括一些调试技巧。同时未来有更多AI实践经验觉得有意思有价值的话也会再分享,下回见喽。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |