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.rhkb.cn/news/34699.html

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

相关文章

【孟德尔随机化】Leave-one-out analysis的异常点,判断

下面Leave-one-out analysis的结果,第一条线代表去掉rs174564的结果,一些文献把这种情况判断为异常点/离群点,我们接下来看看其他结果 散点图的结果,最旁边的就是rs174564,这个SNP的点 在看下RadialMR的结果&#xff0…

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…

kubernetes|云原生|部署单master的kubernetes 1.25.5版本集群完全记录(使用contained 运行时)

一、 部署目标: kubernetes版本1.19,1.23的前后差异还是比较巨大的,到1.25版本,为了追求高性能,自然还是需要使用containerd,本文将主要讲述在centos7虚拟机下部署kubernetes 1.25.5集群,使用…

DeepSeek+Dify本地部署私有化知识库

1.Windows安装docker Windows安装Docker-CSDN博客 2.安装olloma https://ollama.com/ 安装完成,可以在桌面右下角看到olloma图标 3.安装deepseekR1模型 ollama官网(deepseek-r1),找到deepseek模型 选择合适大小的模型&#xff…

[Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)

一、前言 关于Ubuntu更换docker镜像源,网上有很多的教程,但在实操中发现,更换的源无法生效——原因是我的docker是在系统安装时,选择附加安装的package的方式安装的。 现将处理过程记录如下。 二、获取镜像源 在网上随便找个几…

NHANES指标推荐:BRI!

文章题目:Association of body roundness index with cardiovascular disease in patients with cardiometabolic syndrome: a cross-sectional study based on NHANES 2009-2018 DOI:10.3389/fendo.2025.1524352 中文标题:心脏代谢综合征患者…

3.水中看月

前言 这篇文章讲解套接字分配IP地址和端口号。这部分内容也相对有些枯燥,但并不难,而 且是学习后续那些有趣内容必备的基础知识(计算机网络基础)。 一、分配给套接字的IP地址与端口号 IP是InternetProtocol(网络协议…

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器 一,pinctrl 和 gpio 子系统1.pinctrl子系统2.GPIO子系统 二,并发和竞争1.原子操作2.自旋锁3.信号量4.互斥体 三,按键实验四,内核定时器1.关于定时器的有关概念1.…

奇安信二面

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Python库安装报错解决思路以及机器学习环境配置详细方案

文章目录 概要第三方库gdalpymoltalibmahotasgraphviznltk-datalazypredictscikit-surprisenb_extensionspyqt5-toolsspacy、en_core_web_sm 机器学习GPU-torch安装torch_geometric安装ubuntu安装显卡驱动dlib安装torch-cluster、torch-scatter、torch-sparse和torch-geometric…

Power Apps 技术分享:连接SharePoint列表数据源

前言 在使用Power Apps的时候,使用列表作为数据源是非常方便和经济的,列表创建简单,SharePoint的存储也不像Dataverse需要按照容量付费。 正文 1.我们先在SharePoint中建一个列表,添加一些测试数据,如下图:…

【Linux】learning notes(4)cat、more、less、head、tail、vi、vim

文章目录 catmore 查看整个文件less 查看整个文件head 查看部分文件tail 查看部分文件vim / vi cat cat 命令在 Linux 和 Unix 系统中非常常用,它用于连接文件并打印到标准输出设备(通常是屏幕)。虽然 cat 的基本用法很简单,但它…

C++11函数包装器

目录 std::function 注意事项 包装静态成员函数 包装非静态成员函数 std::bind 用法 应用场景 std::function function是C11引入的类,可以用任何可调用对象作为参数,构造出一个新对象。 可调用对象有函数指针,仿函数,lamb…

maven的安装配置

目录 一、官网下载压缩包 二、配置环境变量 设置 MAVEN_HOME 添加 MAVEN_HOME\bin 到 PATH 三、配置本机仓库和远程仓库 四、配置idea 一、官网下载压缩包 Download Apache Maven – Maven 如上图。选择这个压缩包 选择好文件,下载完后,配置环境变…

分布式事务

1 事务 众所周知,事务具有ACID四大特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency)&a…

Postman中Authorization和Headers的区别

案例 笔者在进行token验证的时候碰到的问题 一般如果是进行token验证,大部分是在Headers下面添加token名称及token的值 这样:后端提取请求头的token即可 还有一种是,左侧选择Bearer Token,右侧添加token的值,后端传递的 大概…

1.备战SISAP 2025挑战:调研2024挑战

简介 紧张刺激的SISAP 2025 challenge发布了,此博客用于记录备战的一些准备,思路和实验。 25年挑战介绍 详细信息参考SISAP Indexing challenge 2025 Task 1:内存受限索引 这项任务要求参与者开发具有reranking(重排&#xf…

FPGA学习(二)——实现LED流水灯

FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件&…

【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code插件05. 附录 01. Visual Studio Code概述 vscode是一种简化且高效的代码编辑器,同时支持诸如调试,任务执行和版本管…