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.mzph.cn/pingmian/72462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反射(第三篇)、代理模式、静态代理和动态代理、InvocationHandler实际应用

DAY11.3 Java核心基础 反射(第三篇) 前两篇我们学习了反射的概念和基本操作 实际开发中,反射应用于那里? 动态代理 java中的动态代理就是一个重要的作用 代理模式 代理模式是java中常用的设计模式 指的是在处理一个业务逻辑…

Unity 封装一个依赖于MonoBehaviour的计时器(上) 基本功能

灵感来自下面这本书的协程部分,因此我就自己尝试写了一个 我的新书Unity3D游戏开发(第3版) | 雨松MOMO程序研究院 如果你不知道什么是协程:unity保姆级教程之协同程序_unity协同-CSDN博客 一句话概括:协程就是单线程的异步操作,其作用于Unity的主线程 1…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…

Vulkan视频解码decode显示display之同步

在ReleaseDisplayedPicture函数中消耗图片资源并且显示display完成,设置两个标志m_hasConsummerSignalFence true 和m_hasConsummerSignalSemaphore true virtual int32_t ReleaseDisplayedPicture(DecodedFrameRelease** pDecodedFramesRelease, uint32_t nu…

网络空间安全(32)Kali MSF基本介绍

前言 Metasploit Framework(简称MSF)是一款功能强大的开源安全漏洞检测工具,被广泛应用于渗透测试中。它内置了数千个已知的软件漏洞,并持续更新以应对新兴的安全威胁。MSF不仅限于漏洞利用,还包括信息收集、漏洞探测和…

设计模式学习记录

设计模式23种 创建型抽象工厂模式工厂模式生成器模式原型模式单例模式 结构型适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式 行为型责任链模式命令模式解释器模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式模版方法模式访问者模式 创建型 与对…

2.5 python接口编程

在现代软件开发的复杂生态系统中,不同系统、模块之间的交互协作至关重要。接口编程作为一种关键机制,定义了组件之间的通信规范与交互方式。Python 凭借其卓越的灵活性、丰富的库资源以及简洁易读的语法,在接口编程领域占据了重要地位&#x…

mesh开发解析

开源的Mesh网络协议栈及相关项目: 1.B.A.T.M.A.N.(Better Approach to Mobile Ad-hoc Networking)• 简介:B.A.T.M.A.N.是一种用于多跳自组织网络的路由协议,适用于无线Mesh网络。它通过优化数据传输路径,确保网络的高可靠性和动…

PyTorch PINN实战:用深度学习求解微分方程

在人工智能与计算数学的交汇点,物理信息神经网络(Physics-Informed Neural Networks,PINN)正引领着一场求解微分方程的革命。传统上,微分方程是描述自然现象和工程问题中各种关系的重要工具,但其求解往往依…

【WiFi 7核心技术及未来挑战】

作为刚刚开始从事这一领域的人,浅浅学习了一下WiFi 7(IEEE 802.11be)。Wi-Fi 7发展迅速,提供前所未有的速度、更低的延迟和更高的可靠性。但从频谱政策到能效挑战,再到成本,仍有许多问题亟待解决。 Wi-Fi 7…

Oracle Linux Server 7.9安装fail2ban

yum search oracle-epel-release yum install oracle-epel-release-el7 search fail2ban yum install fail2ban nano /etc/fail2ban/jail.d/00-firewalld.conf # defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。 [DEFAULT] # 用于指定哪…

目标在哪里?——寻找人生的意义与方向

在职场中,许多人都会经历这样的困惑:工作看似顺利,却逐渐失去了成就感和成长感。一位在500强企业工作的学员就遇到了这样的问题。她曾考虑过转型做培训,但苦于找不到明确的切入点,对未来的目标感到迷茫。她不禁问自己&…

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数: 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数 也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数…

破碎的誓言

破碎的誓言 在秋风的呢喃中,落叶轻叹, 昔日的誓言,如烟消散。 你的眼眸,曾是我星辰的指引, 如今,却成了最深的迷惘。 欺骗的利刃,刺穿了信任的堡垒, 我的心,如裂开…

AD画板学习

AD画板 01 课程简介及学习目标 (1)能熟练的新建项目文件、原理图文件、PCB文件且修改文件名,并知道文件保存的位置; (2)会设置原理图编辑器的工作环境,会自底向上绘制层次原理图; …

Linux:进程程序替换

目录 前言 一 进程程序替换的概念 二 进程程序替换的原理 三 为什么需要进行进程程序替换 四 如何进行进程程序替换 1. 进程替换函数 ➊ execl()函数 ➋execv()函数 ➌execlp()函数 ➍execle()函数 ➎execve()* 前言 一般情况下,对应的语言写的程序只…

基于变分推理与 Best‑of‑N 策略的元 Prompt 自动生成与优化框架

摘要 本文提出了一种融合变分推理与 Best‑of‑N 策略的元 Prompt 自动生成与优化框架,通过高度参数化的模板、随机扰动采样及多指标评分机制,实现从初始提示生成到最终输出的动态优化。同时,针对实际应用中对自适应参数调整、深层语义理解、…

Umi-OCR 全家桶

介绍: 下载 访问官网地址 https://github.com/hiroi-sora/umi-ocrhttps://github.com/hiroi-sora/umi-ocr 点击下载(.exe 文件 安装即可) 桌面使用 安装完毕后去安装路径下点击 Umi-OCR.exe (默认不会生成桌面的快捷方式&…

2023南京理工大学计算机复试上机真题

2023南京理工大学计算机复试上机真题 2023南京理工大学计算机复试机试真题 历年南京理工大学计算机复试上机真题 在线评测:传送门:pgcode.cn 括号匹配二 题目描述 苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号&#…

Conda 常规用法指南

Conda 常规用法指南 1. Conda 简介 Conda 是一个开源的包管理和环境管理系统,主要用于 Python 和其他编程语言的开发环境。它能够方便地安装、更新和管理依赖项,使得不同项目可以使用不同的 Python 版本和库。 2. Conda 环境管理 2.1 创建新的环境 conda…