你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:
- 了解大厂经验
- 拥有和大厂相匹配的技术等
希望看什么,评论或者私智谱 AI GLM 教程信告诉我!
前面我们已经再为更进一步的 MCP 打下了基础 一文搞定 Python 装饰器
解锁 MCP 中的 JSON-RPC
为什么MCP可以适配不同LLM
MCP协议三种传输机制全解析
多智能体大语言模型系统频频翻车?三大失败根源与解决方案全解析
今天就正式进入到代码开发阶段
通过专属链接获取 2000万Tokens

3.2.1. 导入模块
- 是 Python 的标准库模块,用于处理文件路径和目录操作。
- 是一个类型注解,表示函数返回值可以是任意类型。
- 是从 框架中导入的 类,用于创建和管理服务器。
3.2.2. 初始化 FastMCP 服务器
- 创建了一个 服务器实例,命名为 。这个实例将用于注册工具函数和资源,并启动服务器。
3.2.3 定义工具函数
- 使用 装饰器将 函数注册为一个工具函数。( 扩展知识:一文搞定 Python 装饰器 )
- 需要注意使用 装饰器装饰的函数,一定写好函数的 doc: 描述清楚函数的作用和参数 这个很重要,不然 tool call 的时候,没有办法选择合适的工具
3.2.4. 定义资源函数
- 使用 装饰器将 函数注册为一个资源函数。
- 同 要描述清楚 doc
3.2.5. 启动服务器
- 当脚本作为主程序运行时,调用 方法启动服务器。
- 参数 表示服务器通过标准输入输出()进行通信。
3.2.6. 总结
这段代码实现了一个简单的 服务器,提供了以下功能:
- 工具函数:
- :根据用户的名字生成问候语。
- :计算两个数字的和(但注释中提到的功能与实际实现不符)。
- 资源函数:
- :列出指定目录中的所有文件。
- 服务器启动:
- 使用 作为通信方式。
这段代码是一个简化版本的 类实现,它结合了与服务器的通信(通过 模块)和智谱AI(ZhipuAI)的接口调用。以下是对代码的详细解释:
3.4.1. 类的定义
- :用于存储与服务器的会话对象,初始值为 。
- :用于管理异步上下文,确保在程序结束时正确关闭资源。
3.4.2. 连接到服务器
- :服务器脚本的路径。
- :用于启动服务器的命令(这里是 )。
- :定义了服务器的启动参数,包括命令、参数列表和环境变量。
- :通过 创建一个标准输入输出的传输通道。
- :从 中获取输入和输出流。
- :创建一个 对象,用于与服务器进行通信。
- :初始化会话。
- :获取服务器支持的工具列表并打印。
3.4.3. 关闭客户端
- :关闭异步上下文管理器,确保所有资源被正确释放。
3.4.4. 处理查询
- :用户输入的查询字符串。
- :初始化消息列表,包含用户的消息。
- 将工具信息转换为特定格式,用于后续的工具调用。
- 使用智谱AI的接口,根据用户输入和可用工具生成响应。
- 如果响应中包含工具调用请求:
- 遍历工具调用列表,调用相应的工具并获取结果。
- 将工具调用的结果添加到消息列表中。
- 根据结果类型(文本、图片、嵌入资源)进行处理。
- 使用更新后的消息列表重新调用智谱AI接口,生成最终的响应。
3.4.5. 主函数
- 创建 实例。
- 连接到服务器并处理用户查询。
- 确保在程序结束时关闭客户端。
- 连接到服务器:通过 方法启动服务器脚本,并建立与服务器的通信会话。
- 处理用户查询:
- 将用户输入的查询包装为消息格式。
- 调用智谱AI接口,获取初步响应。
- 如果响应中包含工具调用请求,则调用服务器提供的工具。
- 将工具调用的结果更新到消息列表中。
- 重新调用智谱AI接口,生成最终的响应。
- 关闭客户端:确保在程序结束时释放所有资源。
- 服务器脚本路径: 是服务器脚本的路径,需要根据实际情况调整。
- 工具调用:工具调用的结果需要根据实际返回的 进行处理。
执行运行 client.py 文件即可,client 会通过下面的代码以子进程的方式启动 server
结果
文章详细讲解了如何使用 MCP 协议和智谱 AI 平台构建一个工具调用系统。通过注册智谱 AI 平台获取 API Key,并编写了 MCP Server 和 Client 的代码。Server 提供了工具函数,Client 通过智谱 AI 的接口调用这些工具函数,并处理用户查询。代码逻辑清晰,包含了工具函数的定义、服务器的启动、客户端的连接以及查询处理等关键步骤。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/268450.html原文链接:https://javaforall.net
