MCP Server stdio Connection Lockup After Cancelled Batch Operations #880
IS-GYG
started this conversation in
Support or Issues
Replies: 1 comment
-
|
We have thousands of users actively using this MCP Server, and this is the first time this issue has been reported. We’ll keep the issue open for a couple of weeks to monitor whether others encounter the same problem, but we don’t expect to prioritize work on it unless we see broader impact or additional reports. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
GitHub Issue: MCP Server stdio Connection Lockup After Cancelled Batch Operations
Repository: microsoft/azure-devops-mcp
Type: Bug Report
Severity: High (Blocks all MCP operations until VS Code restart)
Issue Title
stdio connection lockup after cancelled/timeout batch operations prevents reconnection without VS Code restartDescription
When a batch operation (particularly
wit_update_work_items_batch) is cancelled mid-execution or times out, the MCP server's stdio connection enters an unrecoverable state. VS Code caches the stdio pipe reference to the now-dead Node process, and even after killing the Node process, VS Code cannot establish a new connection without using the MCP Server Manager UI.Environment
Steps to Reproduce
.vscode/mcp.jsonusing stdio transportwit_update_work_items_batchwith 32 items)"Tool <tool_name> is currently disabled by the user"Get-Process node | Stop-Process) does NOT restore connectivityRoot Cause Analysis
The stdio Pipe Caching Problem
From src/index.ts#L111-L115:
When VS Code connects to the MCP server via stdio:
Why Process Kill Alone Doesn't Work
Even after killing the process:
The Batch Operation Problem
The batch endpoint (src/tools/work-items.ts#L875-L899) makes a single HTTP PATCH request:
If this request is interrupted:
Proposed Solutions
1. Add Heartbeat/Keepalive Mechanism
Implement a periodic heartbeat to detect dead connections and trigger recovery:
2. Add Batch Operation Timeout and Chunking
For src/tools/work-items.ts batch operations:
3. Graceful Shutdown Handler
Add signal handlers to ensure clean shutdown:
4. Connection Health Check Endpoint
Add a lightweight health check that clients can call:
Workaround (Current)
Until fixed, users must use VS Code's MCP Server Manager:
Ctrl+Shift+PThis properly cleans up the stdio pipe and establishes a fresh connection.
Impact
Additional Context
From docs/TROUBLESHOOTING.md and CONTRIBUTING.md:
The stdio transport is inherently fragile for long-running operations. Consider offering an alternative HTTP/SSE transport for production use cases.
Related Files
Labels
bugtransportstabilitybatch-operationsIssue prepared: January 31, 2026
Prepared by: GitHub Copilot (Claude Opus 4.5) with user collaboration
Beta Was this translation helpful? Give feedback.
All reactions