Visual Studio MCP桥
A. 模型上下文协议(MCP) 连接AI编码助手(如Claude)的服务器 视觉工作室2022/2026 通过COM自动化。
此桥使AI代理能够:
- 📖 读取构建输出、调试日志和错误列表
- 🔨 构建解决方案并检查错误
- 🐛 启动/停止调试会话
- 📍 在断点处检查调用堆栈
非常适合 自主AI驱动的开发工作流程 代理可以在没有人为干预的情况下进行构建、测试和调试。
______________________________________________________________________
🚀 快速开始
先决条件
- Windows 10/11
- .NET 8.0 SDK 或更高
- Visual Studio 2022或2026 (必须正在运行)
- 克劳德桌面 或另一个MCP兼容客户端
安装
- 克隆和构建:
git clone https://github.com/YOUR_USERNAME/vs-mcp-bridge.git
cd vs-mcp-bridge
dotnet publish -c Release -f net8.0 -r win-x64 --self-contained false- 注册克劳德:
claude mcp add vs-bridge -- "\bin\Release\net8.0\win-x64\publish\VisualStudioMcpServer.exe"- 打开Visual Studio 对于任何解决方案,然后开始使用工具!
______________________________________________________________________
🛠️ 可用工具
信息工具
| 工具 | 说明 |
|---|---|
GetSolutionInfo | 返回当前解决方案路径和项目列表 |
ListOutputPanes | 列出所有输出窗口窗格(构建、调试等) |
ReadOutputPane | 从特定窗格读取内容(带截断) |
GetErrorList | 返回错误列表中的所有错误和警告 |
构建和调试工具
| 工具 | 说明 |
|---|---|
BuildSolution | 构建解决方案并返回成功/错误计数 |
StartDebugging | 开始调试(F5) |
StartWithoutDebugging | 不使用调试器运行(Ctrl+F5) |
StopDebugging | 停止当前调试会话 |
GetDebuggerState | 返回当前状态(设计/运行/断点) |
GetCallStack | 在断点处停止时返回调用堆栈 |
______________________________________________________________________
🤖 自主测试工作流程
Claude现在可以运行这个自主开发循环:
1. BuildSolution → Check for compile errors
2. If errors: GetErrorList → Analyze and fix code → Rebuild
3. If success: StartDebugging
4. GetDebuggerState → Monitor execution
5. If at breakpoint: GetCallStack → Analyze the issue
6. StopDebugging → Make fixes → Repeat______________________________________________________________________
⚙️ 技术细节
COM消息筛选器
Visual Studio是一个单线程COM服务器。当VS繁忙(构建、调试)时,它会拒绝COM调用。这座桥实现了 IOleMessageFilter 自动重试被拒绝的呼叫。
.NET核心兼容性
自从 Marshal.GetActiveObject 已在中删除。NET Core,此项目使用P/Invoke oleaut32.dll 和 ole32.dll 用于COM对象检索。
STAThread要求
COM自动化需要单线程单元(STA)。主螺纹上标有 [STAThread] 以确保正确的COM互操作。
______________________________________________________________________
📋 刀具参数
读取输出窗格
paneName: string - Name (or partial name) of the pane to read
maxLines: int - Max lines to return from end (default: 50, 0 = all)构建解决方案
waitForBuild: bool - Wait for completion (default: true)
format: string - Output format: "text" or "json"GetErrorList/GetSolutionInfo/GetDebugger状态/GetCallStack
format: string - Output format: "text" or "json"______________________________________________________________________
🔧 故障排除
| 问题 | 解决方案 |
|---|---|
| “找不到VS实例” | 确保Visual Studio在打开解决方案的情况下运行 |
| 工具未出现 | 重新注册MCP后重新启动Claude |
| COM错误 | 确保VS不在模态对话框中(例如,未保存的更改提示) |
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证 了解详情。
______________________________________________________________________
🤝 贡献
欢迎投稿!请随时打开问题或PR。
未来工具的想法:
SetBreakpoint-以编程方式添加/删除断点EvaluateExpression-在调试器上下文中计算表达式OpenFile-在VS编辑器中打开特定文件NavigateToError-跳转到错误位置
