客户端将每个 Function 的执行结果和用户的提问等信息,一起再次提交给 AI 模型服务器。

发布时间:2026/7/1 17:47:28
客户端将每个 Function 的执行结果和用户的提问等信息,一起再次提交给 AI 模型服务器。 户端将每个 Function 的执行结果和用户的提问等信息一起再次提交给 AI 模型服务器。由于高德接口并发限制有部分接口调用失败那么客户端可能会来回请求多次最后输出 AI 的回答。到这里读者应该明白 MCP Tool、Plugin、Function Call 的关系了吧实现 Mcp Server前面笔者介绍了 MCP Tool但是 MCP Server 还可以提供很多很有用的功能MCP 协议定义了以下核心模块Core architectureResourcesPromptsToolsSamplingRootsTransports作为当前社区中最关注的 Tools本文已经单独介绍接下来将会以继续讲解其它功能模块。实现 Resources示例项目参考ResourceServer、ResourceClient。Resources 定义Resources 是 Model Context Protocol (MCP) 中的一个核心原语它允许服务器暴露可以被 clients 读取并用作 LLM 交互上下文的数据和内容。Resources 代表 MCP server 想要提供给 clients 的任何类型的数据在使用上MCP Server 可以给每种资源定义一个 Uri这个 Uri 的协议格式可以是虚拟的这不重要只要是能够定位资源的一段 Uri 字符串即可。只看定义读者可能不理解什么意思没关系等后面动手做的时候就知道了。Resources 可以包括文件内容数据库记录API 响应实时系统数据屏幕截图和图像日志文件等等每个 resource 都由一个唯一的 URI 标识并且可以包含文本或二进制数据。Resources 使用以下格式的 URIs 进行标识[protocol]://[host]/[path]例如file:///home/user/documents/report.pdfpostgres://database/customers/schemascreen://localhost/display1Resources 的文件类型主要是文本资源和二进制资源。文本资源文本资源包含 UTF-8 编码的文本数据。这些适用于源代码配置文件日志文件JSON/XML 数据纯文本二进制资源二进制资源包含以 base64 编码的原始二进制数据。这些适用于图像PDFs音频文件视频文件其他非文本格式Resources Server、Client 实现客户端使用 Resources 服务时有以下 Api那么在本节的学习中将会围绕这这些接口讲解如何在服务段实现对应的功能。实现 Resources 时主要有两种提供 Resources 的方式一种是通过模板动态提供 Resource Uri 的格式一种是直接提供具体的 Resource Uri。Resource Uri 格式示例test://static/resource/{README.txt}MCP Server 提供的 Resource Uri 格式是可以随意自定义的这些 Uri 并不是直接给 Client 读取的Client 在需要读取 Resource 是把 Uri 发送给 MCP ServerMCP Server 自行解析 Uri 并定位对应的资源然后把资源内容返回给 Client。也就是说该 Uri 的协议其实就是字符串只要在当前 MCP Server 和 Client 之间能用即可。MCP Server 可以通过模板提供某类资源这类资源的的地址是动态的要根据 id 实时获取。builder.Services.AddMcpServer() .WithListResourceTemplatesHandler(async (ctx, ct) { return new ListResourceTemplatesResult { ResourceTemplates [ new ResourceTemplate { Name Static Resource, Description A static resource with a numeric ID, UriTemplate test://static/resource/{id} } ] }; });