ARTICLE · 1001038
【安装教程】给VB6 IDE装个MCP智能助手,AI帮你自动写代码、搭窗体
【安装教程】给VB6 IDE装个MCP智能助手,AI帮你自动写代码、搭窗体





4.为了更好的配合MCP服务,还可以自定义一个智能体:件->首选项->设置->智能体->提示词填入下面的提示词,工具需要勾选上VB6-MCP服务 
5.使用智能体和MCP服务,在对话窗口中,下拉智能体选取,自己刚刚创建的智能体,然后直接对话即可!其他的工具可以使用 / 或者 @ 智能体然后对话 
好了,就这样可以愉快的用任意ai工具操作你的vb6代码了 使用前,建议先备份自己的项目代码,避免ai把你的代码干掉了,到时哭都找不回来!!!
别让你的 VB6 老工程,输在工具上。
传统做法想用 AI 帮写 VB6 代码,得把代码复制来复制去。现在给 IDE 装一套「MCP 智能助手」,事情完全不一样了。
它会启动一个标准 MCP 接口,让 Trae、Codex、ZCode、OpenCode 等这些主流 AI 工具自由接入——你习惯用哪个就用哪个,不用绑定某一家。AI 能直接读取工程、定位问题、自动生成和修复代码,还能批量搭窗体、配引用库。
最方便的是:服务后台静默运行,不卡界面;多个工程同时开着也互不打架。老代码配上你顺手的外部 AI 工具,效率直接翻倍。
你的 VB6 项目,值得被更多 AI 工具看见。
下面演示Trae MCP服务配置:
1.先下载安装 VB6_IDE_MCP服务程序

2.下载后,解压,双击里面的exe程序,直接安装即可!安装完成后打开VB6会在工具栏或菜单栏看到”MCP服务”按钮,并可看到运行状态,默认端口号为28080,如果多个vb6同时打开,端口号会顺延,每个ai工具配置的端口号控制对应的IDE

3.(配置前VB6中MCP必须是运行中状态)打开Trae,文件->首选项->设置->MCP->手动配置。如下图,配置完后,名字后面有绿色的勾勾,并会刷新出mcp中的工具
{"mcpServers": {"vb6_ide_server": {"url": "http://127.0.0.1:28080/mcp"}}}



# Vb6IdeMcpServer — AGENTS.md本文件面向将调用「VB6 IDE MCP 工具」的外部 AI / Agent 的**使用指南**。所有工具通过 MCP 暴露,用于自动操作正在运行的 VB6 IDE(读写代码、增删模块、管理窗体与控件、操作引用库等)。外部 AI 应在执行任何 VB6 自动化任务前阅读本文件。---## 一、工具调用通用约定1. **所有工具返回 JSON 字符串**,统一含字段:- `.状态`:`"成功"` 或 `"失败"`- `.消息`:人类可读的结果/错误说明- 其余字段为工具特定数据。2. **模块名、窗体名、过程名、控件名均大小写不敏感**(服务端已做忽略大小写处理),但建议按工程实际名称书写,更利于定位。3. **写代码类工具接收的是"代码文本",不会被编译器校验**。插入的代码必须本身是正确、可运行的 VB6 代码。服务端只负责写入,不负责修错。4. **必须先读后写,改前备份思路**:修改某段代码前,先用读取类工具(`GetVbProjectSnapshotTool` / `GetVbCodeByNameTool` / `GetVbMacroCodeByModuleNameTool`)确认当前内容,避免覆盖/误删。5. **一次只做一件事**:局部修改优先用行级工具(`ReplaceVbCodeLinesTool` / `DeleteVbCodeLinesTool` / `InsertVbCodeLinesTool`),不要整表重写,除非确实要整体替换模块。---## 二、代码插入的硬性规则(必须严格遵守)> 以下两条是**优先级最高**的规则,违反会导致运行错误或代码无法编译,任何情况下不得违背。### 规则 1:插入代码时,绝对不要加 `Option Explicit` 头- 若工程根模块/设置中已经启用 `Option Explicit`,不要重复添加该语句(会造成"Option 语句重复"编译错误)。- 插入的任何过程、模块代码,**一律以过程主体开头**(如 `Sub xxx()` / `Function xxx()` / `Private Sub xxx()` 等),**禁止**在插入内容前追加 `Option Explicit`、`Attribute VB_Name = "..."` 等模块级声明头。- 这些头属于模块/文件的元数据,由服务端和工程自身管理,AI 不需要也不应该写入。### 规则 2:`.SetFocus` 必须放在 `Form_Activate()` 事件,禁止放在 `Form_Load()` 事件- 需要给控件设置焦点(如 `txtName.SetFocus`、`Command1.SetFocus`)的代码,**必须写到窗体的 `Form_Activate()` 事件**里。- **绝对禁止**把 `.SetFocus` 写进 `Form_Load()` 事件。原因:`Form_Load` 触发时窗体尚未完全加载、控件还未全部创建,此时调用 `.SetFocus` 会抛出 `运行时错误 91(对象变量或 With 块变量未设置)`。- 正确写法示例:```vbPrivate Sub Form_Activate()txtName.SetFocusEnd Sub```- 错误写法(禁止):```vbPrivate Sub Form_Load()txtName.SetFocus ' ❌ 禁止:会崩溃End Sub```- 若业务逻辑在 `Form_Load` 初始化字段,则把焦点设置逻辑拆到 `Form_Activate`;或用 `Me.Show` 后经 `Form_Activate` 执行。---## 三、工具分组速查### A. 界面/调试辅助(1 个)| 工具 | 用途 ||------|------|| `ShowVBEImmediateWindowTool` | 打开 VBE 主窗口,显示立即窗口与本地窗口。仅让界面可见,不执行/读写代码。 |### B. 工程/模块信息读取(2 个)| 工具 | 用途 ||------|------|| `GetExcelVBComponentTool` | 列出当前工程所有代码模块清单(名称、类型、行数、是否保存、路径)。 || `GetVbProjectSnapshotTool` | **一键全量快照**:工程信息+每个模块/窗体完整代码+窗体控件列表。全局诊断、生成、修 bug 前优先用。 |### C. 模块级操作(增删/读写/清空,7 个)| 工具 | 用途 ||------|------|| `GetVbCodeByNameTool` | 按模块名读取指定模块完整代码(可指定起始/结束行)。 || `GetModuleMacroInfosTool` | 列出模块内所有过程/宏的名称、类型、行号、作用域。 || `GetVbMacroCodeByModuleNameTool` | 读取单个过程的完整代码(Sub/Function/Property)。 || `AddCodeStringByModuleNameTool` | 向指定模块追加/指定行插入代码,自动定位光标到新增行。 || `WriteVbModuleCodeTool` | 整体写入整个模块(不存在则创建标准/类模块,已存在则整体替换)。⚠️ 仅限标准/类模块。 || `ImportCodeModuleByNameTool` | 新建代码模块/窗体/设计器(标准、类、窗体、MDI、用户控件、属性页、ActiveX)。 || `ImportProjectFromFile` | 从文件路径导入工程/模块文件。 |### D. 过程级修改(2 个)| 工具 | 用途 ||------|------|| `UpdateVbMacroCodeByModuleNameTool` | 整体替换某个指定过程的代码(先删原过程再插入)。 || `DeleteVbMacroByModuleNameTool` | 删除某个指定过程,可选清理过程后空行。 |### E. 行级局部修改(3 个)| 工具 | 用途 ||------|------|| `ReplaceVbCodeLinesTool` | 将指定行/连续多行替换为新代码。 || `DeleteVbCodeLinesTool` | 删除指定行/连续多行的代码。 || `InsertVbCodeLinesTool` | 在指定行之前插入多行代码(传 行数+1 表示追加到末尾)。 |### F. 引用库管理(4 个)| 工具 | 用途 ||------|------|| `GetVbReferenceListTool` | 列出当前工程已引用的类型库(名称、GUID、版本、路径、是否丢失)。 || `GetAllSystemTypeLibTool` | 遍历系统所有已注册 COM 类型库,可按关键字筛选。 || `SetVbReferenceTool` | 添加/移除类型库引用,支持 GUID/路径/库名定位,优先 GUID。 || `GetOdbcDriverListTool` | 枚举本机已安装 ODBC 驱动(区分系统/用户)。 |### G. 窗体与控件(7 个)| 工具 | 用途 ||------|------|| `GetVbFormInfoTool` | 读取窗体基本信息+全部控件清单(名称、标题、字体、位置、尺寸、可见性、ProgID)。 || `AddVbFormControlTool` | 向窗体添加控件,并可设名称、位置(像素)、大小、颜色、字体、对齐等。 || `SetVbFormStyleTool` | 设置窗体整体样式:标题、边框、背景/前景色、尺寸、外观、启动位置。 || `SetVbFormControlPropertyTool` | 设置指定控件的任意属性(Caption/Left/Top/Width/Height/Font*/Color/Visible 等)。 || `AlignVbFormControlsTool` | 批量对齐/统一多个控件(左/右/居中/等距/统一宽高)。 || `RemoveVbFormControlTool` | 从窗体删除指定控件。 || `RemoveVbCodeByNameTool` | 删除整个代码模块(不可逆,慎用)。 || `CleanVbCodeModuleByNameTool` | 清空模块全部代码但保留模块本身。 |---## 四、典型工作流程### 1. AI 自动诊断 / 修 bug1. 调 `GetVbProjectSnapshotTool` 拿全局快照(一次替代多次读取)。2. 需要细看某段逻辑时,再用 `GetVbMacroCodeByModuleNameTool` / `GetVbCodeByNameTool`。3. 定位到问题后,用行级工具或过程级工具修改。4. 修改后重新读取确认。### 2. AI 生成/重写一个模块1. 若目标模块已存在且为标准/类模块 → `WriteVbModuleCodeTool`(整体替换)。2. 若目标是窗体模块 / 用户控件 → 不能用整表替换,改用 `AddCodeStringByModuleNameTool` 逐段追加。3. 记住:**插入内容不要带 `Option Explicit`**。### 3. AI 搭建窗体界面1. 先 `GetVbFormInfoTool` 看现有窗体与控件。2. 用 `AddVbFormControlTool` 逐个添加控件。3. 用 `SetVbFormControlPropertyTool` / `SetVbFormStyleTool` 调整样式与布局。4. 用 `AlignVbFormControlsTool` 批量排版。5. 写事件代码时,** `.SetFocus` 写进 `Form_Activate`,绝不进 `Form_Load`**。---## 五、参数速览(重要参数)| 工具 | 必填参数 | 说明 ||------|---------|------|| `GetVbCodeByNameTool` | `modName` | 可选 `codeStartRow`/`codeEndRow` 限定读取范围 || `AddCodeStringByModuleNameTool` | `modName`, `codeText` | 可选 `insertLine`,不传默认追加到末尾 || `WriteVbModuleCodeTool` | `modName`, `code` | 可选 `modType`(标准模块/类模块) || `UpdateVbMacroCodeByModuleNameTool` | `modName`, `procName`, `newCode` | 整体替换过程代码 || `ReplaceVbCodeLinesTool` | `modName`, `startRow`, `newCode` | 可选 `endRow` || `InsertVbCodeLinesTool` | `modName`, `insertRow`, `code` | 传 `insertRow = 总行数+1` 追加到末尾 || `AddVbFormControlTool` | `formName`, `ctrlType`, `ctrlName` | 可选大量布局/样式参数 || `SetVbFormStyleTool` | `formName` | 可选标题/边框/颜色/尺寸/外观/启动位置 || `SetVbFormControlPropertyTool` | `formName`, `ctrlName`, `propertyName`, `propertyValue` | 颜色用 `R,G,B` 字符串,位置用像素 || `AlignVbFormControlsTool` | `formName`, `alignType` | alignType 传中文对齐方式 || `SetVbReferenceTool` | `opType`(add/remove) | 可选 `libGuid`/`libPath`/`libName` |---## 六、禁止 / 慎用事项- ⚠️ **删除类工具**(`RemoveVbCodeByNameTool`、`RemoveVbFormControlTool`、`DeleteVbMacroByModuleNameTool`):不可逆。调用前必须先读取确认目标确实多余。- ⚠️ **`WriteVbModuleCodeTool`**:仅用于标准/类模块;窗体/用户控件等设计器模块不要整体替换,改用 `AddCodeStringByModuleNameTool`。- ⚠️ **`Form.Load` 事件里禁止 `.SetFocus`**。- ⚠️ **不要向插入代码前添加 `Option Explicit` 或任何模块级元数据头**。- 行号类工具(`ReplaceVbCodeLinesTool` / `DeleteVbCodeLinesTool` / `InsertVbCodeLinesTool`)依赖精确行号,务必先用 `GetVbCodeByNameTool` 或 `GetModuleMacroInfosTool` 确认后再操作。

