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

news2025/3/18 17:50:13

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.coloradmin.cn/o/2317346.html

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

相关文章

LabVIEW压比调节器动态试验台

本案介绍了一种基于LabVIEW的压比调节器动态试验台的设计,通过实用的LabVIEW图形化编程语言,优化了数据采集与处理的整个流程。案例通过实际应用展示了设计的专业性与高效性,以及如何通过系统化的方法实现精确的动态测试和结果分析。 ​ 项目…

2025-03-17 Unity 网络基础1——网络基本概念

文章目录 1 网络1.1 局域网1.2 以太网1.3 城域网1.4 广域网1.5 互联网(因特网)1.6 万维网1.7 小结 2 IP 地址2.1 IP 地址2.2 端口号2.3 Mac 地址2.4 小结 3 客户端与服务端3.1 客户端3.2 服务端3.3 网络游戏中的客户端与服务端 1 网络 ​ 在没有网络之前…

springboot441-基于SpringBoot的校园自助交易系统(源码+数据库+纯前后端分离+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

浅谈数据分析及数据思维

目录 一、数据分析及数据分析思维?1.1 数据分析的本质1.2 数据分析思维的本质1.2.1 拥有数据思维的具体表现1.2.2 如何培养自己的数据思维1.2.2.1 书籍1.2.2.2 借助工具1.2.2.3 刻意练习 二、数据分析的价值及必备能力?2.1 数据分析的价值2.1.1 现状分析…

自定义uniapp组件,以picker组件为例

编写目的 本文说明基于vue3定义uniapp组件的关键点: 1、一般定义在components文件夹创建组件,组件与页面已经没有明确的语法格式区别,所以可以与页面的语法保持一致 ; 2、组件定义后使用该组件的页面不需要引用组件即可使用&am…

【操作系统安全】任务4:Windows 系统网络安全实践里常用 DOS 命令

目录 一、引言 二、网络信息收集类命令 2.1 ipconfig 命令 2.1.1 功能概述 2.1.2 实例与代码 2.2 ping 命令 2.2.1 功能概述 2.2.2 实例与代码 2.3 tracert 命令 2.3.1 功能概述 2.3.2 实例与代码 三、网络连接与端口管理类命令 3.1 netstat 命令 3.1.1 功能概述…

【从零开始学习计算机科学】信息安全(二)物理安全

【从零开始学习计算机科学】信息安全(二)物理安全 物理安全物理安全的涵义物理安全威胁常见物理安全问题物理安全需求规划物理安全需求设备安全防盗和防毁机房门禁系统机房入侵检测和报警系统防电磁泄漏防窃听设备管理设备维护设备的处置和重复利用设备的转移电源安全电源调整…

LeetCode hot 100—验证二叉搜索树

题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 示例 1&#…

MongoDB 可观测性最佳实践

MongoDB 介绍 MongoDB 是一个高性能、开源的 NoSQL 数据库,它采用灵活的文档数据模型,非常适合处理大规模的分布式数据。MongoDB 的文档存储方式使得数据结构可以随需求变化而变化,提供了极高的灵活性。它支持丰富的查询语言,允许…

论文阅读笔记——LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

LoRA 论文 传统全面微调&#xff0c;对每个任务学习的参数与原始模型相同&#xff1a; m a x Φ ∑ ( x , y ) ∈ Z ∑ t 1 ∣ y ∣ l o g ( P Φ ( y t ∣ x , y < t ) ) 式(1) max_{\Phi}\sum_{(x,y)\in Z}\sum^{|y|}_{t1}log(P_{\Phi}(y_t|x,y<t)) \qquad \text{式(…

UE5中 Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动和分工·

1. GameMode 与 GameState 关系描述 GameMode&#xff1a;定义游戏规则和逻辑&#xff0c;控制游戏的开始、进行和结束。GameState&#xff1a;存储和同步全局游戏状态&#xff0c;如得分、时间、胜利条件等。 联动方式 GameMode初始化GameState&#xff1a;GameMode在游戏…

Ubuntu24.04 启动后突然进入tty,无法进入图形界面

问题描述 昨晚在编译 Android AOSP 14 后&#xff0c;进入了登录页面&#xff0c;但出现了无法输入密码的情况&#xff0c;且无法正常关机&#xff0c;只能强制重启。重启后&#xff0c;系统只能进入 TTY 页面&#xff0c;无法进入图形界面。 问题排查 经过初步排查&#x…

搭建主从服务器

任务需求 客户端通过访问 www.nihao.com 后&#xff0c;能够通过 dns 域名解析&#xff0c;访问到 nginx 服务中由 nfs 共享的首页文件&#xff0c;内容为&#xff1a;Very good, you have successfully set up the system. 各个主机能够实现时间同步&#xff0c;并且都开启防…

jenkins 配置邮件问题整理

版本&#xff1a;Jenkins 2.492.1 插件&#xff1a; A.jenkins自带的&#xff0c; B.安装功能强大的插件 配置流程&#xff1a; 1. jenkins->系统配置->Jenkins Location 此处的”系统管理员邮件地址“&#xff0c;是配置之后发件人的email。 2.配置系统自带的邮件A…

JVM中常量池和运行时常量池、字符串常量池三者之间的关系

文章目录 前言常量池&#xff08;Constant Pool&#xff09;运行时常量池&#xff08;Runtime Constant Pool&#xff09;字符串常量池&#xff08;String Literal Pool&#xff09;运行时常量池和字符串常量池位置变化方法区与永久代和元空间的关系三者之间的关系常量池与运行…

Mysql篇——SQL优化

本篇将带领各位了解一些常见的sql优化方法&#xff0c;学到就是赚到&#xff0c;一起跟着练习吧~ SQL优化 准备工作 准备的话我们肯定是需要一张表的&#xff0c;什么表都可以&#xff0c;这里先给出我的表结构&#xff08;表名&#xff1a;userinfo&#xff09; 通过sql查看…

FPGA|Verilog-SPI驱动

最近准备蓝桥杯FPGA的竞赛&#xff0c;因为感觉官方出的IIC的驱动代码思路非常好&#xff0c;写的内容非常有逻辑并且规范。也想学习一下SPI的协议&#xff0c;所以准备自己照着写一下。直到我打开他们给出的SPI底层驱动&#xff0c;我整个人傻眼了&#xff0c;我只能说&#x…

Windows11 新机开荒(二)电脑优化设置

目录 前言&#xff1a; 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结&#xff1a; 前言&#xff1a; 本文承接上一篇 新机开荒&#xff08;一&#xff09; 上一篇文章地址&…

关于deepseek R1模型分布式推理效率分析

1、引言 DeepSeek R1 采用了混合专家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架构&#xff0c;包含多个专家子网络&#xff0c;并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数&#xff0c;但在每个前向传播…

揭秘大数据 | 9、大数据从何而来?

在科技发展史上&#xff0c;恐怕没有任何一种新生事物深入人心的速度堪比大数据。 如果把2012年作为数据量爆发性增长的第一年&#xff0c;那么短短数年&#xff0c;大数据就红遍街头巷尾——从工业界到商业界、学术界&#xff0c;所有的行业都经受了大数据的洗礼。从技术的迭…