作者原贴和视频:
https://pan.baidu.com/s/1LeasKoeIYm7pRW7T31gDVg?pwd=v5jh
VB6_IDE_AI_MCP服务_1.0.0.0_20260902180248.zip
百度链接: https://pan.baidu.com/s/1LeasKoeIYm7pRW7T31gDVg?pwd=v5jh
蓝奏云链接:https://vbee.lanzouu.com/iLe7J465ls0f
软件4.54MB,安装提示:
VB6 IDE AI MCP服务
微信:vbee_club(加群的备注:加群)
公众号:办公魔盒
博客:https://bgmh.work
MCP服务配置
{
"mcpServers": {
"vb6_ide_server": {
"url": "http://127.0.0.1:28080/mcp"
}
}
}
Trae AI工具配置(其他工具类似)
{
"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 块变量未设置)`。
- 正确写法示例:
```vb
Private Sub Form_Activate()
txtName.SetFocus
End Sub
```
- 错误写法(禁止):
```vb
Private 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 自动诊断 / 修 bug
1. 调 `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` 确认后再操作。