-
-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Epic: STDIO Transport Support
Add STDIO transport support alongside existing HTTP/SSE, allowing Claude Desktop to spawn the MCP server directly.
Summary
The architecture inverts the pipe relationship: in STDIO mode, Server.exe becomes the pipe server and VS Extension connects as a client.
Key constraint: Per-user installation is retained (no admin required), so STDIO mode requires VS to already be running with the extension loaded.
Architecture
| Aspect | HTTP/SSE (Current) | STDIO (New) |
|---|---|---|
| Who spawns Server.exe | VS Extension | Claude Desktop |
| Pipe server | VS Extension | Server.exe |
| Pipe client | Server.exe | VS Extension |
| MCP transport | HTTP on port 5050 | stdin/stdout |
| VS requirement | Spawns with server | Must be running first |
STDIO Flow
- User opens Visual Studio (extension loads, watches for STDIO pipes)
- Claude Desktop spawns Server.exe --transport stdio
- Server.exe creates named pipe server (vsmcp-stdio)
- VS Extension detects pipe, connects as client
- Server.exe communicates with Claude via STDIO
Sub-Issues
Phase 1: Shared
- feat(shared): add McpConstants for STDIO pipe name #19 - feat(shared): add McpConstants for STDIO pipe name
Phase 2: Server Changes
- feat(server): add RpcServer for STDIO pipe server mode #20 - feat(server): add RpcServer for STDIO pipe server mode
- feat(server): add --transport option and STDIO mode to Program.cs #21 - feat(server): add --transport option and STDIO mode to Program.cs
Phase 3: Extension Changes
- feat(extension): add IRpcClient interface and RpcClient for pipe client mode #22 - feat(extension): add IRpcClient interface and RpcClient for pipe client mode
- feat(extension): add StdioPipeWatcher service #23 - feat(extension): add StdioPipeWatcher service
- feat(extension): update MCPServerPackage for connection mode tracking #24 - feat(extension): update MCPServerPackage for connection mode tracking
- feat(extension): update ServerCommands for connection mode #25 - feat(extension): update ServerCommands for connection mode
Phase 4: Documentation
- docs: update README with STDIO transport configuration #26 - docs: update README with STDIO transport configuration
Dependencies
#19 (Constants) ─┬─► #20 (Server RpcServer) ─► #21 (Program.cs)
│
└─► #22 (Extension RpcClient) ─► #23 (PipeWatcher) ─► #24 (Package) ─► #25 (Commands)
│
▼
#26 (Docs)
Claude Desktop Configuration
{
"mcpServers": {
"visual-studio": {
"command": "path/to/CodingWithCalvin.MCPServer.Server.exe",
"args": ["--transport", "stdio"]
}
}
}Note: User must have Visual Studio open with the MCP Server extension loaded before starting Claude Desktop.
Acceptance Criteria
- STDIO transport works when VS is already open
- HTTP/SSE mode unchanged and fully functional
- Clear error messages when VS is not running
- Mode conflict handling (HTTP takes priority)
- Documentation updated
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request