mcpField
M
MCP Tutorials

MCP Tutorials

本地服务
github.com/kwonci开发工具080 周前更新

关于 MCP Tutorials

MCP Tutorials 是一个围绕 MCP Python SDK 的教程示例项目,面向学习 MCP 服务实现的开发者。内容涵盖工具、资源、提示词和图像返回,并记录了通过 Cline 测试服务器的过程。

主要功能

  1. 01MCP 服务工具示例
  2. 02资源发现与读取示例
  3. 03提示词发现与调用示例
  4. 04图像返回示例

适用场景

  1. 01学习 MCP Python SDK 的资源定义
  2. 02了解客户端如何发现并读取资源
  3. 03研究可复用提示词的服务端实现

MCP 相关

项目介绍 MCP 服务端的工具、资源和提示词接口,并记录了使用 Cline 连接示例服务的测试过程。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 教程

参考

https://modelcontextprotocol.io/quickstart/server

  • [v] 通过 cline 使用教程提供的 MCP 服务
  1. cline 报告了错误。我猜测 cline 在输出 debug 级别的日志时,可能连成功的日志也输出到了 stderr;将 loglevel 设为 error 后,问题解决了(链接)。
  • [] Tools 中没有正确显示 argument 的说明,需要确认这是否是个问题
  • [v] 重新安装 Python linter 和 formatter(-> 使用 ruff 安装)

并非完全没有使用 API 请求。(我的请求 + MCP 服务提供的 tools)会由大模型查看并判断,然后自动执行;这个过程中会产生 2 次 API 请求,费用为 $0.05、$0.03。无论如何,可以看出它能很好地利用 tools 获取内容。

  1. 查看示例
  • filesystem:使用 tools
  • drive:使用 resources。-> resources 能实现的所有操作也都能通过 tools 实现,但两者提供了不同的抽象(可以理解为类似于 REST API 中 GET 和 POst 的区别)

添加示例

理解 Python SDK 中的内容

https://github.com/modelcontextprotocol/python-sdk

  1. 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) 来定义

总而言之,mcpserver 会直接或通过模板公开资源的 URI,以便进行 resource discovery。mcpclients 发现可用资源后,可以通过 URI 请求相应资源。

  1. 定义 Prompts

提供符合目的的 prompts:向服务提供可复用的 prompts template,从而为 LLM interactions 提供标准化的方法(意图是由用户控制,用户可以明确选择 prmopts)。

需要实现的 API

  • prompts discovery

    • 返回值:(name、description、arguments)
  • prompts usage

    • 参数:(name、prompts 中声明的 arguments)
    • 返回值:prompts(动态的,基于 resource 的 prmopts,也可以有多个)
  1. 返回 Image

支持返回 Image

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。