VB6语言服务器
](./package.json)  
vb6-lsp 是一个Visual Basic 6语言服务器加上用于现实世界遗留VB6代码库的MCP服务器。
它了解多项目 .vbp 工作区,快速索引大型源代码树,并向编辑器和代理工具公开相同的VB6分析引擎。
概览
| 表面 | 用例 | 包括 |
|---|---|---|
LSP | 编辑器和IDE工作流 | 定义、引用、悬停、完成、重命名、诊断、成员访问、折叠 |
MCP | 代理和工具驱动的工作流 | 符号查找、捆绑分析、项目信息、调用图跟踪、状态突变、摘要 |
特性
.vbp-感知工作空间发现- 转到定义
- 查找引用
- 悬停
- 文件符号
- 工作区符号
- 完成
- 签名帮助
- 重命名
- 对类型化变量和UDT的成员访问
- 内部会员访问权限
With块 - 多行VB6符号的折叠范围
- 用于声明和符号使用的语义标记
- 常见诊断的代码操作
- 对缺失的块终止符、重复的公共符号和缺失的诊断
Option Explicit - 未解决例程的诊断
- 未解决的诊断
With接收者 - 缺少外部项目引用的诊断
- 常见赋值模式的基本类型推理
.vbp项目元数据和外部引用解析- 基本
.frm设计者/控制意识 - 用于索引VB6工作流的内置stdio MCP服务器
- 用于解释、呼叫流、突变和入口点的代理优先分析工具
- 数据包处理程序和UI表单的专用工作流程
- 用于单个调用符号/模块调查的捆绑分析工具
快速开始
git clone https://github.com/your-user/vb6-lsp.git
cd vb6-lsp
npm install
npm test运行LSP服务器:
npm run lsp:stdio运行MCP服务器:
npm run mcp:stdio为什么选择LSP和MCP?
该项目有意同时运送以下两种货物:
- 语言服务器协议 是给编辑的。它支持交互式编码功能,如定义、悬停、完成、重命名和诊断。
- 主控程序 用于AI代理和其他结构化工具。它公开了索引操作,如符号查找、引用、代码搜索、函数读取和模块摘要。
它们不是两个独立的分析引擎。两者都由相同的VB6解析器、索引器和符号模型支持。
工作区发现
默认情况下, vb6-lsp:
- 使用活动工作区根。
- 发现
.vbp递归文件。 - 从中提取源目录
Module=,Class=,Form=以及相关条目。 - 合并任何额外的
vb6.sourcePaths由用户配置。
示例设置:
{
"vb6.workspaceRoot": "C:/path/to/workspace",
"vb6.projectFiles": ["ProjectA/App.vbp", "Shared/Library.vbp"],
"vb6.sourcePaths": ["src", "shared", "legacy/forms"],
"vb6.preferProjectFiles": true
}MCP工具
内置的MCP服务器公开了:
find_symbollist_symbolsfind_referencessearch_coderead_functionsignaturemodule_infoproject_infolist_projectsreference_infotype_membersexplain_symbolfind_callersfind_calleestrace_flowfind_related_symbolsfind_state_mutationsfind_network_entrypointsfind_ui_entrypointssummarize_moduleanalyze_packet_handleranalyze_ui_formanalyze_symbolanalyze_moduletrace_inbound_flowtrace_outbound_flowanalyze_state_symbolanalyze_startup_flowanalyze_project_reference_impactindex_statsreindex_vb6
stdio MCP传输已通过Codex和Claude Code验证。
遥测
MCP服务器支持 本地选择遥测 用于测量真实世界的工具使用情况。
使用环境变量启用它:
VB6_LSP_TELEMETRY_ENABLED=true
VB6_LSP_TELEMETRY_DIR=/path/to/telemetry它将JSONL事件写入 mcp-usage.jsonl 使用非敏感元数据,例如:
- 工具名称
- 持续时间
- 结果计数
- 输出尺寸
- 缓存命中状态
- 错误存在
确实如此 不 日志提示、源文件内容或完整的MCP有效负载体。
基准
该存储库包括一个可复制的基准脚本:
npm run benchmark -- --root "C:/path/to/vb6-workspace" --source-dirs "src;forms;shared"来自大型现实世界VB6工作区的示例快照:
| 基准 | vb6 lsp | git grep | 获胜者 |
|---|---|---|---|
| 索引启动 | 448.92毫秒 | n/a | grep |
| 精确符号查找 | 0.00毫秒 | 122.17毫秒 | lsp |
| 参考搜索 | 2.18毫秒 | 116.36毫秒 | lsp |
| 范围文本搜索 | 0.54毫秒 | 67.00毫秒 | lsp |
| 无格式文本搜索 | 36.20毫秒 | 122.96毫秒 | lsp |
完整的基准注释: docs/benchmark.md
与Codex一起使用
示例 ~/.codex/config.toml 条目:
[mcp_servers.vb6-lsp]
command = "node"
args = ["C:/path/to/vb6-lsp/out/mcp/mcp/server.js"]
env = { VB6_LSP_ROOT = "C:/path/to/your/vb6-workspace" }如果要强制特定的项目文件或源目录:
[mcp_servers.vb6-lsp]
command = "node"
args = ["C:/path/to/vb6-lsp/out/mcp/mcp/server.js"]
env = { VB6_LSP_ROOT = "C:/path/to/workspace", VB6_LSP_PROJECT_FILES = "ProjectA/App.vbp;ProjectB/Tools.vbp", VB6_LSP_SOURCE_DIRS = "src;shared;forms" }食品法典兼容性说明:
- 根据内置的stdio MCP流进行验证
- 除了工作外,不需要额外的包装
node可在环境中执行
与Claude Code一起使用
示例 ~/.claude/mcpServers.json 条目:
{
"mcpServers": {
"vb6-lsp": {
"command": "node",
"args": ["C:/path/to/vb6-lsp/out/mcp/mcp/server.js"],
"env": {
"VB6_LSP_ROOT": "C:/path/to/your/vb6-workspace"
}
}
}
}克劳德代码注释:
- 如果配置更改后MCP服务器未出现,请完全重新启动Claude Code
- 在某些Windows设置中,将MCP配置指向显式
node.exe路径
示例提示
Find where ProcessOrder is defined and summarize what it does.List the public symbols in modInventory.bas.Find references to ApplyDamage.Read the full body of HandleConnection from clsSocketServer.cls.Show me the signature of WriteInteger.Summarize modCombat.bas before we change it.Search the VB6 codebase for MagicEffect in the server-side modules only.
发展
常见工作流程:
npm install
npm run build:all
npm test有用的脚本:
npm run build:all
npm run lsp:stdio
npm run mcp:stdio
npm run benchmark -- --root "C:/path/to/workspace" --source-dirs "src;forms;shared"
npm run package:vsix
npm test有用的文件夹:
src/server/indexer/*用于解析和索引src/server/providers/*LSP功能src/mcp/*用于MCP工具tests/*用于自动验证
该仓库还包括一个VS代码启动配置,该配置在中的夹具工作区启动一个扩展主机 tests/fixtures/sample-workspace.
范围
3.3.0 位置 vb6-lsp 作为实用的VB6编辑器集成和稳定的代理优先MCP分析界面:
- 通过以下方式发现便携式工作空间
.vbp - 项目范围内的符号搜索和导航
- 主要创作功能的上下文局部/参数感知解析
- 当接收器类型已知时,成员访问
- 内部成员访问权限
With块 - 基本形式/控制意识
.frm文件 - 项目/参考意识
.vbp - 更丰富的MCP工作流程,用于项目和参考检查
- 高级代理优先分析工作流
- 用于常见遗留VB6调查任务的专用工作流程
- 对符号和模块进行捆绑式单调用分析
- 定向流追踪与面向状态的分析
- 更智能的排序和修剪,用于重代理分析
- 项目级启动/参考影响工作流
- 编辑器中的语义标记和更丰富的快速修复
- 存储库中包含的官方stdio MCP服务器
它不是一个完整的VB6编译器或完整的COM/类型推理引擎。
验证
自动化测试包括:
.vbp配置发现- 模块符号、属性、局部变量和参数的索引器行为
- 对类模块和UDT字段的成员访问
- 多行VB6符号的折叠范围
- 索引声明的语义标记
- 常见诊断的代码操作
- 项目元数据和外部引用解析
- 从公共赋值中推断基本类型
- 为项目、引用和类型成员提供更丰富的MCP工作流
- 用于解释、追踪、突变和入口点发现的高级代理工作流
- 用于数据包处理程序和UI繁重表单的专门分析工作流
.frm设计器控制索引- 内部成员访问权限
With块 - 缺少外部项目参考诊断
- 通过stdio的LSP端到端请求
- MCP stdio工具公开、索引和更丰富的工具工作流程
