关于 MCP Tutorials
MCP Tutorials 是一个围绕 MCP Python SDK 的教程示例项目,面向学习 MCP 服务实现的开发者。内容涵盖工具、资源、提示词和图像返回,并记录了通过 Cline 测试服务器的过程。
主要功能
- 01MCP 服务工具示例
- 02资源发现与读取示例
- 03提示词发现与调用示例
- 04图像返回示例
适用场景
- 01学习 MCP Python SDK 的资源定义
- 02了解客户端如何发现并读取资源
- 03研究可复用提示词的服务端实现
MCP 相关
项目介绍 MCP 服务端的工具、资源和提示词接口,并记录了使用 Cline 连接示例服务的测试过程。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 教程
参考
https://modelcontextprotocol.io/quickstart/server
- [v] 通过 cline 使用教程提供的 MCP 服务
- cline 报告了错误。我猜测 cline 在输出 debug 级别的日志时,可能连成功的日志也输出到了 stderr;将 loglevel 设为 error 后,问题解决了(链接)。
- [] Tools 中没有正确显示 argument 的说明,需要确认这是否是个问题
- [v] 重新安装 Python linter 和 formatter(-> 使用 ruff 安装)
并非完全没有使用 API 请求。(我的请求 + MCP 服务提供的 tools)会由大模型查看并判断,然后自动执行;这个过程中会产生 2 次 API 请求,费用为 $0.05、$0.03。无论如何,可以看出它能很好地利用 tools 获取内容。
- 查看示例
- filesystem:使用 tools
- drive:使用 resources。-> resources 能实现的所有操作也都能通过 tools 实现,但两者提供了不同的抽象(可以理解为类似于 REST API 中 GET 和 POst 的区别)
添加示例
理解 Python SDK 中的内容
https://github.com/modelcontextprotocol/python-sdk
- Resource 的定义
https://modelcontextprotocol.io/docs/concepts/resources#resource-templates
MCP 服务希望向 MCP 客户端提供的任何类型的数据。
- Resource discovery(MCP 客户端如何获知 MCP 服务提供了哪些资源)
- 直接资源:通过
resources/list端点,以如下格式公开资源
- 直接资源:通过
{
uri: string; // Unique identifier of the resource
name: string; // human-readable name of resource
description?: string; // optional description
mimeType?: string; // optionam mimetype
}
- resource templates:通过
uritemplate公开所提供的资源
{
uriTemplate: string; // URI template following RFC 6570
name: string; // Human-readable name for this type
description?: string; // Optional description
mimeType?: string; // Optional MIME type for all matching resources
}
- 如果 MCP 客户端通过 resource discovery 从 MCP 服务获取了可用资源,该如何调用这些资源?
- 定义 resource read handler 有两种方法
- 通过
@mcp.resource()装饰接收uri的函数来定义 - 或者通过
@mcp.resource(uri_template)来定义
- 通过
- 定义 resource read handler 有两种方法
总而言之,mcpserver 会直接或通过模板公开资源的 URI,以便进行 resource discovery。mcpclients 发现可用资源后,可以通过 URI 请求相应资源。
- 定义 Prompts
提供符合目的的 prompts:向服务提供可复用的 prompts template,从而为 LLM interactions 提供标准化的方法(意图是由用户控制,用户可以明确选择 prmopts)。
需要实现的 API
-
prompts discovery
- 返回值:(name、description、arguments)
-
prompts usage
- 参数:(name、prompts 中声明的 arguments)
- 返回值:prompts(动态的,基于 resource 的 prmopts,也可以有多个)
- 返回 Image
支持返回 Image
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。