当前位置: 首页 > article >正文

Blender-MCP服务源码2-依赖分析

Blender-MCP服务源码2-依赖分析

有个大佬做了一个Blender-MCP源码,第一次提交代码是【2025年3月7号】今天是【2025年月15日】也就是刚过去一周的时间,所以想从0开始学习这个代码,了解一下大佬们的开发思路


1-核心知识点

from mcp.server.fastmcp import FastMCP, Context, Image
import socket
import json
import asyncio
import logging
from dataclasses import dataclass
from contextlib import asynccontextmanager
from typing import AsyncIterator, Dict, Any, List
  • 1)Blender代码中核心代码和依赖的功能是什么?
  • 2)socket长连接服务->用于Claude与插件之间通讯->那Blender和LLM之间在通讯什么内容?
  • 3)为什么LLM通讯后就完成了3D的建模,原理是什么?->是不是我把请求方法抽取出来就可以用编码的方式完成Blender的建模了(MCP貌似就是通过请求API传递对应的参数来完成建模)
  • 4)猜想内容已经实现

2-思路整理

  • 1)【必选】MCP的mcp.server.fastmcp服务依赖
  • 2)【核心】socket长连接服务->用于Claude与插件之间通讯
  • 3)socket到底做了什么?->我如果做一个类似的MCP,我要做什么?

3-参考网址

  • Blender-MCP-Github地址:https://github.com/ahujasid/blender-mcp
  • B站大佬开源Blender开发框架:https://github.com/xzhuah/BlenderAddonPackageTool
  • B站大佬开源Blender开发框架教程

4-依赖分析

以下是对这些导入语句及其依赖的详细分析:

1. from mcp.server.fastmcp import FastMCP, Context, Image

  • 来源:这是从 mcp.server.fastmcp 模块中导入特定的类。mcp 可能是某个自定义的 Python 包,server 可能是该包下的一个子模块,fastmcp 则是子模块中的一个 Python 文件。
  • 功能
    • FastMCP:通常代表某种快速的消息处理或通信协议相关的类。可能用于高效地处理消息、请求和响应,在服务器端的应用中可能用于快速处理客户端的连接和数据交互。
    • Context:这个类一般用于保存上下文信息。在编程中,上下文信息可以包含当前操作的相关状态、配置等数据,以便在不同的函数或方法之间共享和传递。
    • Image:可能是用于处理图像的类。它可能包含图像的加载、保存、转换等操作,可用于图像处理相关的任务。

2. import socket

  • 来源socket 是 Python 标准库中的一个模块。
  • 功能socket 模块提供了创建网络套接字的功能,用于实现网络通信。它可以创建 TCP 或 UDP 套接字,通过网络发送和接收数据。常用于构建客户端 - 服务器应用程序,允许不同的计算机之间进行数据交换。

3. import json

  • 来源json 是 Python 标准库中的一个模块。
  • 功能json 模块用于处理 JSON(JavaScript Object Notation)数据。JSON 是一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。json 模块提供了将 Python 对象(如字典、列表)转换为 JSON 字符串(json.dumps()),以及将 JSON 字符串转换为 Python 对象(json.loads())的功能。

4. import asyncio

  • 来源asyncio 是 Python 标准库中的一个模块,用于支持异步编程。
  • 功能:异步编程允许程序在等待某些操作(如网络请求、文件读写)完成时,继续执行其他任务,从而提高程序的并发性能。asyncio 提供了协程、事件循环等机制,使得开发者可以编写高效的异步代码。例如,可以使用 async/await 关键字定义协程函数,使用事件循环来调度和执行这些协程。

5. import logging

  • 来源logging 是 Python 标准库中的一个模块,用于实现日志记录功能。
  • 功能:日志记录是程序开发和调试过程中非常重要的一部分。logging 模块提供了灵活的日志记录功能,可以将程序运行过程中的信息(如调试信息、错误信息、警告信息等)输出到控制台、文件或其他目标。通过设置不同的日志级别(如 DEBUGINFOWARNINGERRORCRITICAL),可以控制日志的详细程度。

6. from dataclasses import dataclass

  • 来源dataclasses 是 Python 3.7 及以上版本引入的标准库模块。
  • 功能dataclass 是一个装饰器,用于简化类的定义。使用 @dataclass 装饰的类可以自动生成一些特殊方法,如 __init__()__repr__()__eq__() 等,从而减少了样板代码的编写。通常用于定义简单的数据容器类。

7. from contextlib import asynccontextmanager

  • 来源contextlib 是 Python 标准库中的一个模块,提供了上下文管理器相关的工具。
  • 功能asynccontextmanager 是一个装饰器,用于创建异步上下文管理器。异步上下文管理器可以在异步代码中使用 async with 语句,确保在进入和退出上下文时执行特定的操作,如资源的分配和释放。

8. from typing import AsyncIterator, Dict, Any, List

  • 来源typing 是 Python 标准库中的一个模块,用于提供类型提示功能。
  • 功能
    • AsyncIterator:用于表示异步迭代器,即可以在异步代码中使用 async for 语句进行迭代的对象。
    • Dict:用于表示字典类型的提示,指定字典的键和值的类型。
    • Any:表示任意类型,当无法确定或不关心某个变量的具体类型时,可以使用 Any 进行类型提示。
    • List:用于表示列表类型的提示,指定列表中元素的类型。

综上所述,这些导入语句涵盖了自定义模块、标准库模块,用于实现网络通信、数据处理、异步编程、日志记录、数据类定义、上下文管理和类型提示等功能。


5-问题来啦


http://www.kler.cn/a/591711.html

相关文章:

  • 再学:函数可见性、特殊函数、修饰符
  • ArcGIS Pro 制作风台路径图:从数据到可视化
  • MySQL5.7主从复制教程
  • 【HTML】三、表单与布局标签
  • 群体智能优化算法- 豪猪优化算法 (Crested Porcupine Optimization, CPO,含Matlab源代码)
  • 深入学习恩智浦 GoPoint:探索 AI Demo 与嵌入式 AI 开发
  • IPD解读——IPD重构产品研发与产品管理
  • 25届二本:春招希望不大,要做两手准备了
  • 【多线程】线程不安全问题
  • Couchbase Analytics 的结构
  • CRM企业客户关系管理系统产品原型方案
  • FastJson:JSON JSONObject JSONArray详解以及SimplePropertyPreFilter 的介绍
  • Spring Boot 整合 Nacos 注册中心终极指南
  • JavaSE-String字符串
  • Git 实战指南:本地客户端连接 Gitee 全流程
  • ngx_http_core_srv_conf_t
  • pytorch小记(十二):pytorch中 masked_fill_() vs. masked_fill() 详解
  • 《我的Python觉醒之路》之转型Python(十三)——控制流
  • Trae插件革命:用VSPlugin Helper实现VSCode市场插件全自动安装
  • RabbitMQ常见问题总结