TouchDesigner MCP服务器
](https://www.npmjs.com/package/@bottobot/td-mcp) 
一个功能强大的模型上下文协议(MCP)服务器,将全面的TouchDesigner操作员文档、Python API参考资料和教程直接提供给您的人工智能编码助手。
我个人将其与VS Code/Codium和Roo代码扩展以及我最喜欢的LLM(如Claude Opus和GPT-5)一起使用。虽然从理论上讲,服务器应该可以与Docker或Claude Desktop等其他应用程序配合使用,但我还没有彻底测试这些集成。
至今为止的故事: 这个项目的催化剂很简单——几个月前,我决定要一个可以在TouchDesigner中为我开发视觉效果的人工智能工具。我用TD做一些基本的东西已经有一段时间了,但它是我使用过的任何创意软件中学习曲线最陡的之一。如果问一个法学硕士“请在TouchDesigner中制作一个720p的、实时动画的、不断进化的反应扩散模拟”,然后让它吐出来,那该有多好?在我看来,超级漂亮是答案。
就像我所从事的每一个我知之甚少的项目一样,我认为这会非常直截了当!大声笑!当我开始的时候,我不知道我最终会投入多少时间和代币。在我认为它完全集成到TouchDesigner本身并且误差很小之前,我还有很长的路要走。
然而,就查询运算符及其参数的信息而言,它非常有效!让任何LLM有效地使用此工具开发具有真正复杂性的网络时,我面临的主要挑战是,模型往往忘记使用MCP服务器,并依赖于他们对旧TouchDesigner版本的过时训练知识。如果有人对如何克服这一特殊问题有任何建议,我非常想听听你的反馈!
如何使用它(我当前的工作流程)
现在,我的重点是确保服务器返回有用且准确的Python API信息。这是我的工作流程:我描述了我想创建的网络——例如,反应扩散可视化——然后让人工智能编写一个Python脚本,使用文本端口在TouchDesigner中生成网络。一旦完成,我得到一个“exec”命令,它允许我将一行复制并粘贴到文本端口中,瞧——一个网络就生成了!
我的终极梦想然而,它直接完全集成到TouchDesigner本身中。我尝试了一种web服务器和WebSocket方法,这种方法很有效,但由于我测试的LLM没有生成正确的Python代码,并且在没有充分利用MCP服务器的情况下不断产生幻觉信息,我暂时搁置了这部分项目。一旦它可靠地工作并生成可靠的可视化或网络,那么完全集成将是最后一步!
特性
- 630名TouchDesigner操作员 -完整的文档,包括90多名实验POP操作员
- 14互动教程 -全面的TouchDesigner学习指南
- 69 Python API类 -包含1510+个方法的完整Python脚本文档
- 21 MCP工具 -跨五个功能组:操作员参考、教程、Python API、版本系统和实验内容
- 32种工作流模式 -精心策划的操作员链模式,包含72个常见转换
版本系统
- 版本历史 -从099年到2024年记录的所有稳定的TD版本
- 兼容性跟踪 -每个操作员和每个方法版本兼容性数据
- Python时间线 -每个TD版本都捆绑了完整的Python版本历史记录
- 发布亮点 -每个主要版本的关键功能和突破性更改
实验技术知识库
- 7技术类别 -GLSL、GPU计算、机器学习、生成系统、视听、网络、Python高级
- 2000+行代码 -为高级技术工作、粘贴准备好的代码片段
- 16种命名GLSL模式 -用于光线行进、反应扩散、反馈等的完整着色器代码
- 难度评级 -每种技术都有最低TD版本要求
核心增强
- 操作员接线指南 -为20多名普通操作员提供精确的端口级连接说明
- 网络模板 -使用Python生成脚本构建五个现成的网络模板
- 版本感知搜索 -通过TD版本兼容性筛选运算符和Python API
- 智能工作流建议 -端口布线、复杂性等级和节点数量估计
实验构建支持
- 6实验构建系列 -从版本20000到当前(2025.10000)记录
- 特征标志表 -每个实验系列的选择加入/选择退出标志
- 毕业跟踪 -哪些实验功能逐渐升级为稳定版本
- 打破更改日志 -与稳定基线相比,每个系列的突破性变化
核心服务器功能
- 智能搜索 -通过类别过滤、参数搜索和版本过滤进行直接搜索
- 零配置 -安装后立即工作
- 纯MCP实现 -干净的基于stdio的服务器,没有web服务器开销
- 当地数据处理 -所有文档均来自本地JSON文件,无网络请求
安装
全局安装(推荐)
npm install -g @bottobot/td-mcp本地安装
npm install @bottobot/td-mcp快速开始
与VS Code/Codium和Claude一起使用
- 全局安装MCP服务器:
npm install -g @bottobot/td-mcp- 在VS代码中配置Claude/MCP:
将服务器添加到MCP设置配置文件中:
{
"td-mcp": {
"command": "npx",
"args": ["@bottobot/td-mcp"]
}
}- 开始使用TouchDesigner工具 在你和克劳德的谈话中!
独立运行
# If installed globally
td-mcp
# If installed locally
npx @bottobot/td-mcp可用MCP工具(共21个)
核心操作员工具
get_operator
获取有关特定TouchDesigner运算符的全面详细信息,包括所有参数、提示和代码示例。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | Yes | 运算符名称(例如,“Noise CHOP”、“TOP中的电影文件”) |
show_examples | boolean | 否 | 显示代码示例和用法 |
show_tips | boolean | 否 | 显示提示和绩效说明 |
version | string | 否 | 包括兼容性块,显示此TD版本何时添加或更改运算符 |
Example: "Get detailed information about the Noise CHOP operator"
Example: "Get the Engine COMP documentation for TD 2022"搜索操作员
使用上下文分析和相关性排名搜索运算符。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
category | string | 否 | 按类别筛选(CHOP、DAT、SOP、TOP、MAT、COMP、POP) |
subcategory | string | 否 | 按子类别筛选(例如,“音频”、“过滤器”) |
type | string | 否 | 搜索模式:“模糊”(默认)、“精确”或“标记” |
version | string | 否 | 筛选与特定TD版本兼容的运算符(例如“2022”) |
parameter_search | boolean | 否 | 在参数名称和描述中搜索 |
show_details | boolean | 否 | 显示包含关键字的详细结果 |
limit | number | 否 | 最大结果数(默认值:10,最大值:50) |
Example: "Search for audio processing operators in the CHOP category"
Example: "Find operators added in TD 2022"操作员列表
列出可用的TouchDesigner操作员,并可选择类别过滤。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 否 | 按运算符类别筛选 |
Example: "List all TOP operators"比较运算符
并排比较两个运算符——参数、类别、共享/唯一特征。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
operator_a | string | 是 | 第一个运算符名称 |
operator_b | string | 是 | 第二个运算符名称 |
compare_parameters | boolean | 否 | 包括参数比较(默认值:true) |
Example: "Compare Blur TOP with Luma Blur TOP"get_operator_示例
获取特定运算符的Python代码示例、表达式和使用模式。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
operator | string | 是 | 运算符名称 |
example_type | string | 否 | 类型:“全部”、“python”、“表达式”或“用法” |
Example: "Get Python examples for Movie File In TOP"建议工作流程
获取操作员通常遵循当前操作员的工作流程建议。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
current_operator | string | 是 | 当前运算符名称 |
Example: "What operators typically follow a Movie File In TOP?"教程工具
get_tutorial
访问包含完整章节、代码和链接的详细TouchDesigner教程内容。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 教程名称 |
include_content | boolean | 否 | 包含完整内容部分 |
include_toc | boolean | 否 | 包括目录 |
include_links | boolean | 否 | 包含相关链接 |
Example: "Get the 'Write a GLSL TOP' tutorial"list_tutorials
列出所有可用的TouchDesigner教程,并提供可选的过滤功能。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
search | string | 否 | 用于筛选教程的搜索词 |
limit | number | 否 | 最大结果 |
show_details | boolean | 否 | 显示教程摘要和关键字 |
Example: "List all available tutorials"搜索教程
按关键字、主题或内容搜索教程内容。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
search_content | boolean | 否 | 在节内容内搜索(默认值:true) |
limit | number | No | 最大结果数(默认值:10) |
Example: "Search tutorials for GLSL shader examples"Python API工具
get_python_api
获取TouchDesigner Python类的文档,包括成员和方法。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
class_name | string | Yes | Python类名(例如“CHOP”、“Channel”、“App”) |
show_members | boolean | 否 | 显示类成员/属性 |
show_methods | boolean | 否 | 显示类方法 |
show_inherited | boolean | 否 | 显示继承的成员和方法 |
version | string | 否 | 用每个方法/成员的介绍版本对其进行注释,并排除在此TD版本之后添加的API |
Example: "Get Python documentation for the CHOP class"
Example: "Get Python API for the App class as of TD 2021"search_python_api
在TouchDesigner Python类、方法和成员中搜索。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
search_in | string | 否 | 搜索位置:“all”、“classes”、“methods”、“members” |
category | string | 否 | 按类别筛选 |
version | string | 否 | 将类、方法和成员筛选为指定TD版本中可用的 |
limit | number | 否 | 最大结果 |
Example: "Search Python API for audio methods"
Example: "Find Python API methods available in TD 2020"list_python_classes
按类别列出所有可用的Python API类。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 否 | 按类别筛选(例如,“运算符”、“常规”) |
search | string | 否 | 用于筛选类的搜索词 |
show_details | boolean | 否 | 显示成员/方法计数 |
Example: "List all Python API classes in the Operator category"版本系统工具
获取版本信息
获取特定TouchDesigner稳定版本的详细信息:哪个Python版本 it捆绑包、引入的新运算符、关键特性、添加的Python API以及突破性的更改。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
version | string | 是 | TD版本字符串(例如,“2024”、“2022”、“2019”、“099”) |
Example: "What Python version does TouchDesigner 2022 use?"
Example: "What operators were added in TouchDesigner 2023?"list_versions
列出所有支持的TD版本(099、2019、2020、2021、2022、2023、2024),并提供快速参考 显示每个版本的捆绑Python版本和支持状态的表,以及完整的 Python版本时间线。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| *(无需)* | -- | -- | 返回所有高亮显示的版本 |
Example: "List all supported TouchDesigner versions"
Example: "Show the Python version timeline for TouchDesigner"实验技术工具
get_实验技术
按类别浏览精心策划的TouchDesigner高级技术库。退货 描述、难度等级、版本要求、操作员链、统一表格、, 以及完整的工作代码片段。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 是 | 技术类别。接受的别名:“glsl”、“gpu计算”、“机器学习”、“生成系统”、“视听”、“网络”、“python高级” |
technique_id | string | 否 | 类别中特定技术的ID |
Example: "Show me GLSL raymarching techniques in TouchDesigner"
Example: "Get GPU compute techniques using numpy"可用类别:
| 类别 | 别名 | 技术 |
|---|---|---|
| glsl | 着色器、光线行进、sdf | 光线行进、反应扩散、反馈、程序噪声 |
| gpu计算 | gpu,cuda | 脚本TOP numpy,cuda,共享内存,gpu实例化 |
| 机器学习 | ml,ai | 引擎COMP,ONNX,稳定扩散,MediaPipe,车身轨迹 |
| 生成系统 | 生成,L系统 | L系统,生命游戏,奇异吸引子,boids |
| 视听 | 音频、fft | fft几何、节拍检测、粒度合成、MIDI |
| 网络 | 网络、osc、ndi | osc、WebSocket、ndi、TDAbleton、多机 |
| python高级 | python、numpy、opencv | asyncio、tdu。依赖、线程、numpy、OpenCV |
搜索实验
在所有7个实验技术类别中进行全文搜索。按权重排列的结果 字段评分(名称、标签、描述、注释、代码)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
category_filter | string | 否 | 将搜索限制为一个类别 |
show_code | boolean | 否 | 在结果中包含代码片段 |
limit | number | 否 | 最大结果数(默认值:10,最大值:30) |
Example: "Search experimental techniques for reaction diffusion"
Example: "Find GPU instancing examples in the experimental library"get_glsl模式
使用完整的、可粘贴的着色器代码检索特定的命名GLSL模式。封面16 跨射线推进、反应扩散、反馈、程序噪声、细胞的命名模式 自动机和GPU粒子模拟。还提供了三个可重用的GLSL实用程序库。 使用 pattern: "list" 枚举所有可用模式。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
pattern | string | 是 | 模式名称或“列表”以查看所有可用模式 |
include_utilities | boolean | 否 | 包含GLSL实用程序库代码(默认值:false) |
Example: "Get the raymarching GLSL pattern"
Example: "List all available GLSL patterns"
Example: "Get the reaction diffusion shader pattern"核心增强工具
get_operator_connections
获取特定操作员的接线指南:操作员通常将上游连接为什么 输入和下游作为输出,具有精确的端口号、基本原理和工作流模式 名字。涵盖所有家庭的20多个常见操作员。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
operator | string | Yes | 运算符名称(带或不带家族后缀;不区分大小写) |
Example: "What connects to and from a Render TOP?"
Example: "Show me the typical connections for a Noise CHOP"get_network_template
返回一个完整的、即用型的网络模板,用于常见的TouchDesigner用例。 每个模板包括操作员列表、端口级连接表、参数设置、, 以及一个用于构建网络的即贴式Python脚本 template: "list" 看 所有可用模板。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
template | string | 是 | 模板名称或“列表”以枚举所有模板 |
可用模板:
| 模板 | 说明 |
|---|---|
video-player | 基于文件的视频播放,带有级别和输出控制 |
generative-art | 噪声驱动的生成视觉网络 |
audio-reactive | 音频分析提供视觉参数 |
data-visualization | 表DAT驱动图表和显示网络 |
live-performance | 实时使用的多层合成设置 |
Example: "Give me a network template for audio-reactive visuals"
Example: "List all available network templates"实验构建工具
TouchDesigner发布了两个平行的发布轨道:稳定的年度发布(2019-2024)和 具有未发布功能的实验/测试版构建系列。这些工具使您可以完全访问 进入实验轨道。
get_experimental_build
获取有关特定实验性TD构建系列或最新实验系列的详细信息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
series_id | string | 否 | 实验系列ID(例如“2025.10000”)。省略最新的实验系列。 |
show_features | boolean | 否 | 包括新功能列表(默认值:true) |
show_breaking_changes | boolean | 否 | 包括破坏性更改与稳定更改(默认值:true) |
show_python_api | boolean | 否 | 包含Python API添加项(默认值:true) |
show_operators | boolean | 否 | 包括实验运算符(默认值:true) |
Example: "What new features are in the latest experimental TouchDesigner build?"
Example: "Get breaking changes for experimental series 2024.50000"列表_实验_构建
列出最近的实验性TD构建系列,按功能区域分组(渲染、Python API、运算符、UI、网络)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
feature_area | string | No | 按区域筛选:“rendering”、“Python API”、“operators”、“UI”、“networking” |
stability_status | string | 否 | “实验性”(活动)或“已毕业”(变得稳定) |
show_feature_flags | boolean | 否 | 包括特征标志表(默认值:false) |
show_operators | boolean | 否 | 包括实验运算符列表(默认值:true) |
show_breaking_changes | boolean | 否 | 包括中断更改摘要(默认值:false) |
Example: "List experimental TD builds with rendering changes"
Example: "Which experimental build series introduced the Engine COMP?"跟踪实验系列:
| 系列ID | 年份 | 状态 | 标题特征 |
|---|---|---|---|
| 2025.10000 | 2025 | 主动实验 | Vulkan渲染器默认值,Python 3.12,POP GPU求解器 |
| 2024.50000 | 2024 | 毕业(TD 2024) | Python 3.11,引擎COMP异步,TouchEngine v2 |
| 2023.11000 | 2023 | 毕业(TD 2023) | POP系统预览版,GLSL 4.50,NVIDIA DLSS TOP |
| 2022.32000 | 2022 | 毕业(TD 2022) | 发动机COMP、USD COMP、NDI 5、WebRTC DAT |
| 2021.15000 | 2021 | 毕业(TD 2021) | Body Track CHOP,ONNX运行时,Python 3.8 |
| 2020.20000 | 2020 | 毕业(TD 2020) | 子弹物理,GPU实例化v2,GLSL 4.40 |
操作员类别
| 类别 | 计数 | 描述 |
|---|---|---|
| 切 | 166 | 信道运营商-音频、控制信号和数据流 |
| 顶部 | 140 | 纹理操作符-2D图像和视频处理 |
| 标准操作程序 | 112 | 曲面操作符-3D几何体创建和操纵 |
| 数据 | 69 | 数据运算符-文本、表格和数据处理 |
| 比较 | 41 | 组件运算符-UI元素和容器 |
| 垫子 | 13 | 材质操作符-3D渲染材质和着色器 |
| 流行音乐 | 90 | 点算子-粒子系统(实验) |
可用教程
核心教程
- CHOP的解剖 -了解通道操作员内部
- 建立列表COMP -创建动态UI列表
- Python教程简介 -TouchDesigner Python脚本编写基本指南
高级开发
- 写一个GLSL TOP -创建自定义GPU加速图像效果
- 编写GLSL材料 -用于渲染的自定义GLSL材质
- 编写一个C++CHOP -培养本地音频/数据处理操作员
- 写一个C++TOP -在C中构建自定义纹理操作符++
- 编写一个C++插件 -TouchDesigner插件的高级C++集成
- 编写CUDA动态链接库 -使用CUDA为TouchDesigner进行GPU编程
进程间通信
- 编写共享内存CHOP -进程间数据通信
- 写入共享内存顶部 -在进程之间共享纹理
视频与集成
- 视频流用户指南 -完整的视频流工作流程指南
- TouchDesigner视频服务器规格指南 -专业视频服务器设置
- TDBitwig用户指南 -与Bitwig Studio DAW集成
Python API文档
服务器包括以下文档 69个Python API类 随着 1510+种方法 涵盖:
- 核心操作员类别(CHOP、TOP、SOP、DAT、MAT、COMP)
- 实用程序类别(通道、单元、页面等)
- 系统类(应用程序、项目、监视器等)
- UI类(面板、小部件等)
- 高级功能(WebRTC、NDI、MIDI、OSC等)
建筑
TD-MCP服务器由以下组件构建:
- 纯MCP实现 -按照MCP标准清洁基于stdio的服务器
- 直接搜索算法 -快速、可靠的搜索,无需外部索引依赖
- 操作员数据管理器 -集中数据管理,630名操作员加载到内存中
- 当地数据处理 -所有操作员数据都在本地处理和提供
- 模块化工具系统 -21个MCP工具中的每一个都是独立维护的
- 双释放轨道支持 -稳定的年度发布(2019-2024)和实验构建系列都有完整的记录
项目结构
td-mcp/
├── index.js # Main MCP server entry point (21 tools)
├── tools/ # MCP tool implementations (21 tools)
│ ├── get_operator.js # Full operator documentation
│ ├── search_operators.js # Operator search with ranking
│ ├── suggest_workflow.js # Workflow chain suggestions
│ ├── list_operators.js # List/filter operators
│ ├── get_tutorial.js # Tutorial content access
│ ├── list_tutorials.js # Tutorial listing
│ ├── search_tutorials.js # Tutorial content search
│ ├── get_python_api.js # Python class documentation
│ ├── search_python_api.js # Python API search
│ ├── list_python_classes.js # Python class browsing
│ ├── get_operator_examples.js # Code examples per operator
│ ├── compare_operators.js # Side-by-side comparison
│ ├── get_version_info.js # Stable version details
│ ├── list_versions.js # All stable versions
│ ├── get_experimental_techniques.js # Advanced technique library
│ ├── search_experimental.js # Search techniques
│ ├── get_glsl_pattern.js # Named GLSL shader patterns
│ ├── get_operator_connections.js # Operator wiring guide
│ ├── get_network_template.js # Full network templates
│ ├── get_experimental_build.js # Experimental build series details
│ └── list_experimental_builds.js # List experimental series by area
├── wiki/ # Documentation system
│ ├── data/
│ │ ├── processed/ # 630 operator JSON files
│ │ ├── tutorials/ # 14 tutorial JSON files
│ │ ├── python-api/ # 69 Python class JSON files
│ │ ├── experimental/ # 7 advanced technique JSON files
│ │ ├── search-index/ # Search index data
│ │ └── versions/ # Version compatibility data
│ │ ├── version-manifest.json
│ │ ├── operator-compatibility.json
│ │ ├── python-api-compatibility.json
│ │ ├── release-highlights.json
│ │ └── experimental-builds.json # Experimental track data
│ ├── utils/
│ │ └── version-filter.js # Version utilities + experimental support
│ ├── operator-data-manager.js # Core documentation engine
│ └── operator-data-python-api.js # Python API data manager
├── data/
│ └── patterns.json # 32 workflow patterns + transitions
├── scripts/ # Data maintenance scripts
│ ├── clean-operator-data.js # Clean parameter descriptions
│ └── enrich-top-operators.js # Add tips/examples to operators
└── package.json故障排除
服务器无法启动
- 确保已安装Node.js 18.0+:
node --version - 尝试重新安装:
npm install -g @bottobot/td-mcp - 如果运行其他MCP服务器,请检查端口冲突
搜索未返回任何结果
- 尝试更广泛的搜索词
- 删除类别筛选器
- 启用
parameter_search在参数名称内搜索 - 检查操作员姓名的拼写
找不到操作员
- 使用包括家族在内的完整操作员名称:
Noise CHOP不仅仅Noise - 使用
search_operators首先找到确切的名字 - 使用
list_operators使用类别筛选器浏览可用运算符
LLM不使用MCP工具
- 在提示中明确提及TouchDesigner
- 要求LLM“使用td-mcp工具”查找操作员信息
- 提醒LLM检查参数
get_operator在生成代码之前
需求
- Node.js 18.0或更高版本
- npm包管理器
- 带有MCP兼容扩展的VS Code/Codium(例如,Claude Dev、Roo Code)
发展
要贡献或修改服务器,请执行以下操作:
# Clone the repository
git clone https://github.com/bottobot/touchdesigner-mcp-server.git
# Install dependencies
cd touchdesigner-mcp-server
npm install
# Run the server locally
node index.js
# Validate syntax
node --check index.js
# Clean operator data (removes HTML dumps from parameter descriptions)
node scripts/clean-operator-data.js
# Enrich top operators with tips and examples
node scripts/enrich-top-operators.js添加新工具
- 在中创建新文件
tools/遵循现有模式(导出schema和handler) - 在中导入并注册该工具
index.js - 使用工具文档更新此README
添加操作员数据
操作员数据存在 wiki/data/processed/ 作为JSON文件。每个文件都遵循带有字段的架构: id, name, displayName, category, subcategory, description, parameters, tips, warnings, pythonExamples, codeExamples,以及 version.
支持
- 问题:
- 文档: TouchDesigner官方文档
- NPM包: @bottobot/td mcp
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
______________________________________________________________________
当前版本: 2.8.0 运算符:630(已清理参数说明) 教程: 14 Python API类: 69 MCP工具: 21 工作流模式: 32 实验构建系列:6(现有20000辆) 最后更新:2026年2月
