欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Blender-MCP服务源码2-依赖分析

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

2025/3/16 18:55:56 来源:https://blog.csdn.net/2301_77717148/article/details/146278917  浏览:    关键词: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-问题来啦

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词