终于学会了在cherry studio调用MCP的高级技巧

技巧一:
不要在一次对话中让AI多次调用MCP,而是在一次对话中让AI调用一次MCP,但MCP内部批量执行多步任务——即给MCP编写一些能批量处理的工具函数

技巧二:
指定调用函数:事实上cherry并不识别通过MCP代码的函数名来识别函数,而是有自己的命名规则(一个随机字符串)但命名十分混乱,而且反复加载MCP后,同一个函数的字符串名称还会变化。
如何解决该问题?
给MCP编写工具函数的时候增加注释。prompt指令可以通过函数的注释,让LLM调用对应的函数

29 Likes

佬说一下pip和uv,npm和bun的区别呗,没研究明白

2 Likes

本质上没啥区别,优化的包管理器

1 Like

如图,这是我自己写的一个mcp服务(pubmed_awesome_mcp_server)
里面的工具函数search_pubmed在cherry studio中有一个独特的字符串标识

cherry studio通过该标识识别函数,但是这个标识并不固定,比如你重新加载一下这个MCP,字符串标识就会改变。

那么如何解决该问题?
在代码处,定义该函数的时候直接加入注释,如图:


这样cherry studio也会读取该工具函数的注释

调用的时候,如果你的prompt能够指向该工具函数的注释,那么cherry studio就会调用该函数!

等于说,代码的注释部分和AI的prompt完全桥接了——这真是prompt engineering的魅力

4 Likes

但是一个函数执行多个任务,必须提供的参数就变多了。我使用下来感觉更好的方案是使用思考模型和更好的任务拆解提示词。

现在这个随机字符串甚至显示MCP设置里了,不知道有什么作用,摸不着头脑。不过实际调用确实和名称无关,就是根据描述。

1 Like

多个参数我觉得也没事情?因为LLM可以读懂函数的参数类型,你用提示词给LLM指令,LLM会自己写成MCP函数对需要的参数类型

1 Like

我觉得随机字符串就是没用的,可能就是让其内部获得独特性标识吧

有的时候你直接通过字符串指定函数,也不一定能调用

1 Like

学习了佬,支持一下

这个搜索pubmed的mcp不错

要不是用过我就信了

和模型能力有关的辣,实际上是原生Claude理解起来非常到位
毕竟Anthropic推进的规范

cherry studio的随机ID非常恐怖,我用7B模型几乎不能使用中文调用成功英文描述的MCP
gemini 1.5都很困难,gemini 2.0才能比较好的理解cherry studio提供的上下文

哇哦 好硬核的分享 学废了!

MCP到底是干啥用的

MCP相当于向大模型提供"你想要的方面的数据"的能力, 比如MCP连上mysql, 大模型通过MCP可以通过MCP获取mysql中的数据

就类似于Java的JDBC?通过这个协议就能直接获取到mysql里的数据是吧,那这后端的活也干了啊,直接失业了属于是:rofl:

我觉得定位还是不一样, 比如说还可以通过微信的MCP, 让AI能够感知微信好友/微信消息等等

就是说他这个JDBC不止链接的MySQL,还能连接微信?是直接通过微信的端口实现的吗?那这感觉很庞大了啊,什么百度B站小红书全都可以通过ai访问了

请问mcp怎么去写呀,有说明文档嘛

注释的作用凸显出来了 :joy: