VS MCP桥
vs-mcp-bridge 是一种本地集成,通过模型上下文协议(MCP)将选定的Visual Studio IDE状态暴露给AI工具。
该解决方案分为两个运行时进程和共享基础设施:
VsMcpBridge.McpServer:一个本地MCP服务器,与AI客户端进行stdio对话VsMcpBridge.Vsix:在IDE内运行的Visual Studio扩展VsMcpBridge.Shared:共享合约、抽象、诊断、管道调度和工具窗口编排VsMcpBridge.Shared.Tests:共享层的单元测试VsMcpBridge.Vsix.Tests:VSIX特定组合和服务逻辑的单元测试
它今天做什么
当前支持的功能:
- 阅读活动的Visual Studio文档
- 读取当前文本选择
- 列出解决方案项目
- 读取Visual Studio错误列表
- 建议将文本编辑作为差异,而无需直接写入文件
现阶段,这座桥有意保持保守:
- Visual Studio API访问保持在VSIX内部
- MCP服务器仅通过本地命名管道与VSIX通信
- 编辑是建议的,不会自动应用
- 内置诊断和未处理的异常捕获
- 共享网桥基础架构现在与VSIX解耦,因此其他主机可以提供自己的实现
VSIX还包括一个用于桥接状态和未来批准用户体验的WPF工具窗口外壳:
- 该视图是一个被动的WPF控件
- 工具窗口状态通过视图模型显示
- UI编排使用MVPVM风格的拆分存在于演示者中
- 绑定和命令使用
CommunityToolkit.Mvvm
电流限制:
- 工具窗口架构已经到位,但运行时桥事件尚未端到端地路由到演示者
解决方案结构
VsMcpBridge.slnx
|- VsMcpBridge.Shared/ shared contracts, services, presenter/viewmodel, diagnostics abstractions
|- VsMcpBridge.Shared.Tests/ unit tests for shared logic
|- VsMcpBridge.McpServer/ MCP stdio host and named-pipe client
|- VsMcpBridge.Vsix/ Visual Studio extension and Visual Studio-specific implementations
`- VsMcpBridge.Vsix.Tests/ unit tests for VSIX infrastructure and logic建筑
运行时流程:
AI client
-> MCP over stdio
VsMcpBridge.McpServer
-> JSON over named pipe "VsMcpBridge"
VsMcpBridge.Vsix
-> Visual Studio SDK / DTE APIs
Visual Studio IDE详细的生活技术参考见 docs/VS_MCP_BRIDGE_TECHNICAL_ANALYSIS.md. 有关用于ChatGPT或其他外部审阅者的简明交接文档,请参阅 docs/CHATGPT_HANDOFF.md.
构建
MCP服务器和共享
dotnet build .\VsMcpBridge.Shared\VsMcpBridge.Shared.csproj
dotnet build .\VsMcpBridge.McpServer\VsMcpBridge.McpServer.csprojVSIX
VSIX项目针对Windows上的Visual Studio 2022,需要Visual Studio SDK工具/工作负载。 该项目还引用了 CommunityToolkit.Mvvm 用于工具窗口绑定和命令。
从开发人员PowerShell或Visual Studio MSBuild环境中:
& 'C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe' .\VsMcpBridge.Vsix\VsMcpBridge.Vsix.csproj /restore /t:Build /p:Configuration=Debug您也可以打开 VsMcpBridge.slnx 在Visual Studio中构建 VsMcpBridge.Vsix 在那里。
测试
共享层:
dotnet test .\VsMcpBridge.Shared.Tests\VsMcpBridge.Shared.Tests.csprojVSIX面临的测试:
& 'C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe' .\VsMcpBridge.Vsix.Tests\VsMcpBridge.Vsix.Tests.csproj /restore /t:Build /p:Configuration=Debug /p:Platform=AnyCPU
& 'C:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe' .\VsMcpBridge.Vsix.Tests\bin\Debug\net472\VsMcpBridge.Vsix.Tests.dll重要构建说明:
dotnet test .\VsMcpBridge.slnx不是存储库的正确顶级运行器,因为旧版VSIX项目依赖于Visual Studio MSBuild/VSDK工具,而不是托管的SDKdotnetMSBuild路径。
当前状态
存储库现在处于坚实的早期平台状态:
- VSIX构建、打包和安装已验证
- 实验实例中的延伸载荷
- 该网桥在共享层和VSIX层上使用DI和基于接口的服务
- 共享基础架构不再与VSIX项目耦合
- 工具窗口使用被动视图加演示者/视图模型分割
- 详细的诊断已经到位
- 未处理的异常通过可交换的接收器抽象持久化
- 单元测试涵盖共享层和VSIX特定层
下一步
接下来最重要的功能是将编辑建议和审批流连接到工具窗口演示器中,然后完成对建议编辑的审批和应用工作流。
其他强有力的候选人包括:
- 桥梁健康和能力报告
- 请求关联和协议版本控制
- 更丰富的Visual Studio查询工具
- SQLite支持的异常和批准历史持久化
文件指南
一起使用这些文档:
README.md:快速定位和构建/测试入口点docs/VS_MCP_BRIDGE_TECHNICAL_ANALYSIS.md:生活建筑和路线图文件docs/CHATGPT_HANDOFF.md:当前状态交接,用于外部分析和下一步规划
