上个文章中,我们自己用ts实现了一个MCP服务,添加了Resources,Prompts,Tools这个功能。并且接入了Cursor。但是Cursor只支持Tools功能的调用。
本文通过claude客户端,完整看一下,这3个功能的具体使用。
上一篇文章看这:
如何搭建一个 MCP 服务,然后在Cursor中调用,半小时,彻底掌握MCP mp.weixin.qq.com/s/b-zZqOHHZ…
MCP的基本概念
MCP 可以被理解为AI 应用程序的“USB-C 接口”。就像USB-C标准化了设备与各种外设的连接方式一样,MCP则标准化了AI模型如何连接到不同的数据源和工具。
Resources(资源):资源允许服务器公开数据和内容,供客户端读取并用作大型语言模型(LLM)的上下文。就类似你给大模型提供的文件。
Prompts(提示):定义可重用的提示模板和工作流,客户端可以轻松地将这些模板呈现给用户和LLM19。就好比一个提示词库,方面在客户端使用。
Tools(工具):最常用的功能。Tools公开可执行的功能给客户端。它们被设计为 “模型控制”的, 这意味着AI模型可以根据其上下文理解和用户提示自动调用这些工具(通常需要用户的批准)
Roots(根): 根定义了MCP服务器可以操作的边界。它们主要用于文件系统路径,控制大模型可以操作的文件范围。
Sampling和Discovery基本只有个定义,实际应用不多,也不好理解,就先跳过了。
常见的支持MCP的客户端有下面这些。可以看到大家一致支持的是tools功能,其他功能支持度一般。
所以当下我们也可以将MCP当作一个工具集合。
完整的客户端支持情况见:modelcontextprotocol.io/clients
一、下载安装Claude
下载安装 claude.ai/download
访问需要魔法、需要登陆,claude每天有一定的免费次数。
二、配置MCP
右上角点击Setting -> Developer -> Edit Config
然后用编辑器打开配置文件:claude_desktop_config.json
添加mcpServers,配置我们自己开发的服务mcp-demo。这个类似上篇文章的Cursor配置。配置怎么生成,可以去上篇文章看下。
{ "mcpServers": { "mcp-demo": { "command": "node", "args": [ "--experimental-specifier-resolution=node", "/Users/chen/Desktop/workspace/demo-projects/mcp/mcp-demo/build/index.js" ] } }}
注意⚠️⚠️:配置完成后,需要重启claude
三、调用tools功能
然后点击第二个图标按钮,可以看到mcp-demo添加成功了。
里面有我们开发的2个工具。
执行命令:
执行echo_message, 用户输入为:你好👏
看下代码实现:
总结一下:
Tools工具就是提供一些工具,让大模型执行,可以是文件操作,任务执行等等。
四、调用Prompts功能
对话框第一个按钮,点击Add
进去之后会有2个选项:
我们选择generate_slogan功能,这个我们开发的提示词功能。
输入环保,点击Add prompt
可以看到对话框底部有个TXT的文件,打开之后,可以看到这是我们的MCP服务返回的提示词。
到这里就可以直接执行了。
最后再看下我们的代码实现:
总结一下:
Prompts功能,可以根据用户的输入生成一个定制的提示词,然后返回供大模型执行。相当于与搭建提示词库,这对团队中共享提示词很有帮助。
五、调用Resource功能
类似上一步的Prompts,这次我们选择status,这是我们开发的Resource功能。
输入框下面就会有一个附件,内容是我们返回的内容,他会被当作附件给到大模型处理。
总结一下:
Resource可以当作一个知识库,或者文件、文章等,让大模型,根据这些知识进行任务处理。
六、Roots功能
这一步我们找一个其他的MCP服务来演示。
在mcpServers增加一个服务filesystem,用来操作计算机上的文件。这里我添加了我的Downloads目录。
这样就会限制这个MCP服务只会操作修改我的Downloads文件夹下的文件,不会改其他的。
{ "mcpServers": { "mcp-demo": { "command": "node", "args": [ "--experimental-specifier-resolution=node", "/Users/chen/Desktop/workspace/demo-projects/mcp/mcp-demo/build/index.js" ] }, "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/chen/Downloads" ] } }, "globalShortcut": ""}
添加之后,重启Claude
现在问问Claude我的Downloads目录有哪些文件?
点击允许
后面会让你授权文件夹的访问权限,点击允许:
可以看到Claude执行了2个命令,然后读取到了我的本地文件。
再来让他帮我改下文件名:
执行了move_file命令,将文件名修改了。
再来试试让他访问授权外的文件。成功拦截住了,还不错。
总结一下:
Roots功能用来限制文件的操作范围。避免MCP越界。不过这个需要MCP服务自己实现范围的限制。我们上面的案例,就是通过在配置中的环境变量做的限制。
到这里我们就把MCP的几个基本功能演示完了。
Tools:提供工具调用
Prompts:提供提示词
Resource: 提供附加知识等
Roots:限制文件的操作范围
希望通过这个演示,你也对MCP的开发和使用有了一些理解。有兴趣的,不妨尝试自己开发一些小工具。
我是柒崽,就酱紫,下课。