MCP C# SDK — Issue Triage Report
Date: 2026-04-06
Repository: modelcontextprotocol/csharp-sdk
SDK Tier: Tier 1 (tracking issue)
Triage SLA: Within 2 business days (Tier 1 requirement)
Critical Bug SLA: Resolution within 7 days (Tier 1 requirement)
BLUF (Bottom Line Up Front)
- Open issues: 100 total (100 triaged, 0 untriaged)
- SLA compliance: ✅ Full compliance — 0 SLA violations
- Urgent attention: 2 P1 bugs + multiple stale
needs confirmation issues need action
- Top finding: P1 bug
#1480 (McpTask double-wrapping) has open PR #1499 and is at the 7-day critical bug SLA boundary (~2026-04-07); the backlog contains ~15+ stale needs confirmation issues ready to close
- Recently closed: 11 in last 7d, 15 in last 14d, 20 in last 28d
📈 Trends
One prior triage report was found: issue #25 in this workflow repository, created 2026-04-06 (earlier today). Key comparisons:
| Metric |
Prior report |
This report |
Change |
| Open issues |
101 |
100 |
−1 (one closed today) |
| Untriaged |
0 |
0 |
No change |
| SLA violations |
0 |
0 |
No change |
| Recently closed (28d) |
~19 |
20 |
+1 |
Trajectory: The backlog is stable with no SLA violations. Resolution velocity is healthy at ~20 issues closed per 28-day window. The P1 bug #1480 was created on 2026-03-31 and is approaching its 7-day critical bug SLA (expires ~2026-04-07). The large cohort of stale needs confirmation issues (~15 issues) represents an opportunity for cleanup.
No comments were found on the prior triage report. No maintainer guidance to surface.
🚨 Issues Needing Urgent Attention
SLA Violations — Untriaged Issues
✅ No SLA violations. All 100 open issues are triaged (have at least one type or status label).
Potential P0/P1 Issues to Assess
#1480 — Tool returning McpTask is double-wrapped when client sends task-augmented request
| Field |
Value |
| Created |
2026-03-31 (~4 biz days old) |
| Author |
@k8x10 |
| Labels |
bug, ready for work, P1 |
| Comments |
0 · Reactions: 2 (eyes + heart) |
| Assignee |
@jeffhandley, @Copilot |
| Open PR |
#1499 |
Status: When a tool explicitly creates its own McpTask via IMcpTaskStore and returns it (the documented pattern), the SDK unconditionally wraps the invocation in a second task — orphaning the tool-created task and returning the wrong task ID to the client. Two root causes are identified: (1) AIFunctionMcpServerTool.InvokeAsync has no McpTask case in its result switch expression, causing serialization as text; (2) McpServerImpl.ExecuteToolAsTaskAsync unconditionally creates its own task regardless of whether the tool already returned one. A standalone reproduction repo is provided. PR #1499 (Fix McpTask double-wrapping when tool returns its own task) is assigned and under active development. The 7-day critical bug SLA window expires approximately 2026-04-07.
Recommended actions:
- Prioritize review and merge of PR
#1499 before SLA expiry
- Confirm fix resolves the double-wrapping scenario described in the reproduction repo
#1466 — Streamable HTTP transport doesn't support single JSON responses (spec violation)
| Field |
Value |
| Created |
2026-03-25 (~8 biz days old) |
| Author |
@dhruvmodi13 |
| Labels |
needs repro, P1 (missing type label) |
| Comments |
1 · Reactions: 0 |
| Assignee |
(unassigned) |
Status: Reporter claims StreamableHttpClientSessionTransport fails with servers that return application/json instead of text/event-stream (both are spec-compliant). Maintainer @stephentoub responded on 2026-03-26 that he could not reproduce with v1.1.0 and pointed to the existing code path that handles application/json responses, asking for a standalone repro. No repro has been provided. The issue has been idle for 11 days since the maintainer's comment.
Recommended actions:
- Add
bug type label (currently missing a type label alongside needs repro)
- Last author response was before 2026-03-25 (maintainer asked for repro on 2026-03-26, no response). Consider closing if no repro is received.
⏰ Stale Issues — Consider Closing
Issues labeled needs confirmation or needs repro where the reporter has not responded after being asked for more information.
| # |
Created |
Age |
Last Author Response |
Title |
#611 |
2025-07-11 |
192bd |
Never (community comment 2026-02-23 pointing to related issue) |
Host several MCP in one ASP.Net application |
#684 |
2025-08-07 |
172bd |
Unclear (1 comment total, likely maintainer) |
Using incorrect oauth-authorization-server endpoint |
#700 |
2025-08-12 |
168bd |
Unclear (1 comment total) |
HTTP Streamable vs SSE endpoints |
#741 |
2025-08-29 |
157bd |
Unclear (1 comment total) |
EntraID doesn't support 'resource' parameter when getting token |
#964 |
2025-11-14 |
101bd |
No author reply after maintainer asked for MCP Inspector test (2025-11-14) |
403 error with Authorization Bearer |
#1132 |
2026-01-07 |
62bd |
Unclear (1 comment total) |
Streamable HTTP doesn't correctly handle empty response |
#1239 |
2026-02-03 |
44bd |
Unclear (1 comment total) |
notifications/tools/list_changed times out over Streamable HTTP |
#1261 |
2026-02-11 |
38bd |
Last: 2026-02-18 (~49 days ago); confirmed issue is Claude Desktop-specific |
Returning EmbeddedResourceBlock from tool doesn't work with Claude |
#1466 |
2026-03-25 |
8bd |
No response to maintainer's repro request (2026-03-26) |
Streamable HTTP doesn't support single JSON responses |
Note on #1261: The maintainer asked about MCP Inspector behavior; author confirmed it works in MCP Inspector and VS Code Copilot, and is Claude Desktop-specific (last author comment 2026-02-18). The discussion concludes this is a Claude Desktop client limitation. Recommend closing as not_planned with a note that this is a Claude Desktop client issue, not an SDK bug.
Note on #1236 (bug, area-auth, needs confirmation): PR #1238 (ClientOAuthProvider.Scopes have priority again) appears to directly address this issue. Verify and close if resolved.
⚠️ Issues Needing Labels
Missing Type Label
Issues that have a status or priority label but no type label (bug, enhancement, question, documentation):
| # |
Current Labels |
Title |
Recommended Type |
#648 |
ready for work |
OAuth authentication request fails with MS Entra-ID |
bug |
#964 |
needs confirmation |
403 error with Authorization Bearer |
question or bug |
#1182 |
ready for work, P2 |
Proof of Concept: MCP Apps |
enhancement |
#1261 |
needs confirmation |
Returning EmbeddedResourceBlock doesn't work with Claude |
question (or close — Claude Desktop issue) |
#1466 |
needs repro, P1 |
Streamable HTTP doesn't support single JSON responses |
bug |
#1492 |
needs confirmation |
StreamableHttpHandler rejects concurrent GET SSE streams |
enhancement or question |
Missing Priority Label on Bugs
32 bugs currently lack a priority label. High-signal candidates:
| # |
Title |
Suggested Priority |
Rationale |
#766 |
McpServer Endpoint resources never disposed |
P2 |
Resource leak |
#788 |
Malformed body throws 500 instead of 400 |
P2 |
Debuggability impact |
#1050 |
WWW-Authenticate missing resource metadata params |
P2 |
OAuth spec compliance |
#1088 |
Robustly parse quoted WWW-Authenticate parameters |
P2 |
OAuth interoperability |
#1119 |
OAuth Resource URI Validation Too Strict |
P2 |
Blocks legitimate use cases |
#1150 |
Allow JsonSerializerOptions without TypeInfoResolver |
P2 |
Breaks customization |
#1365 |
Cancellation support via CancellationToken fails |
P2 |
Core async pattern; PR #1377 available |
#1434 |
CreateOutputSchema wraps without rewriting $ref |
P2 |
Causes tools/list to fail for all tools on affected servers |
#1470 |
McpClient.CreateAsync times out behind APIM |
P2 |
Production deployment blocker |
#1486 |
Stateless HTTP server advertises listChanged |
P2 |
Protocol compliance |
#1490 |
Flaky test on .NET 10.0: DistributedCacheEventStreamStore |
P3 |
CI reliability, .NET 10 only |
🔀 Duplicate / Consolidation Candidates
| Group |
Issues |
Recommendation |
| Multiple endpoints / hosting multiple servers |
#591, #611, #612, #814, #1202 |
#612 appears to be the canonical enhancement; close #591, #611 as answered; review #814 and #1202 for overlap |
| Code signing / signed binaries |
#657, #833 |
#833 is blocked with tracking; #657 may be a duplicate |
🔗 Potentially Related PRs
| # |
Issue Title |
PR |
PR Title |
Confidence |
Suggested Action |
#648 |
OAuth auth fails with MS Entra-ID |
#1402 |
Add IncludeResourceIndicator option for OAuth |
Explicit |
Verify if this resolves the resource param issue |
#1236 |
Specified ClientOAuthOptions.Scopes are ignored |
#1238 |
ClientOAuthProvider.Scopes have priority again |
High |
Verify and link; close if resolved |
#1287 |
Add DeleteStreamsForSessionAsync |
#1288 |
Add DeleteStreamsForSessionAsync |
Explicit |
Link PR |
#1365 |
Cancellation support via CancellationToken fails |
#1377 |
Add transport-level cancellation support |
Explicit |
Prioritize review (P2 candidate) |
#1431 |
MCP Apps Support — Typed Metadata, Helpers, Attributes |
#1484 |
Add MCP Apps extension support |
High |
Verify and link |
#1434 |
CreateOutputSchema wraps without rewriting $ref |
#1435 |
Fix $ref pointer resolution after output schema wrapping |
High |
Verify and link |
#1452 |
Document role/identity propagation pattern |
#1497 |
Document recommended pattern for role/identity propagation |
Explicit |
Link PR |
#1480 |
Tool returning McpTask is double-wrapped |
#1499 |
Fix McpTask double-wrapping |
Explicit |
Prioritize merge before 2026-04-07 SLA deadline |
#949 |
SEP-990: Enterprise Managed Authorization |
#1305 |
Add Enterprise Managed Authorization (SEP-990) support |
Explicit |
Link PR |
#889 |
Make EverythingServer support stdio or http |
#950 |
Add back EverythingServer for stdio |
High |
Verify and link |
🔗 Cross-SDK Related Issues
OAuth / Authorization
| C# SDK |
C# Title |
Related Issue |
Theme |
#648 |
OAuth auth fails with MS Entra-ID (resource param) |
python-sdk #1264: Protected Resource Metadata resource erroneous |
OAuth resource indicator |
#730 |
SDK Authorization not compatible with spec |
typescript-sdk #1450: OAuth Token Exchange Fails with Separate AS |
OAuth spec compliance |
#772 |
SEP-1046: OAuth client credentials flow |
typescript-sdk #1151: Server SDK support for scope challenges |
Client credentials / scope |
Multiple (#648, #741, #842, etc.) |
Entra ID / resource param issues |
go-sdk #881: Support hooking token refresh |
OAuth token management |
SSE / Keep-Alive
Streamable HTTP
| C# SDK |
C# Title |
Related Issue |
Theme |
#1466 |
Streamable HTTP single JSON responses (P1) |
typescript-sdk #1852: Sessions destroyed on TCP keepalive timeout |
Transport spec compliance |
#1492 |
StreamableHttpHandler rejects concurrent GET SSE |
typescript-sdk #1400: Cursor second connection to StreamableHTTP |
Multiple connections |
#1470 |
McpClient.CreateAsync times out behind APIM |
python-sdk #2110: HTTP transport swallows non-2xx status codes |
Client transport timeout/error handling |
JSON Serialization
| C# SDK |
C# Title |
Related Issue |
Theme |
#1434 |
CreateOutputSchema wraps without rewriting $ref |
python-sdk #2384: Inline $ref in tool inputSchema for LLM consumption |
$ref handling in schemas |
📊 Other SDK Context
📋 Complete Open Issue Backlog (100 issues)
Bugs (36)
| # |
Created |
Age |
Labels |
Title |
Remaining Actions |
#587 |
2025-07-04 |
197bd |
bug |
Running tests in net472 causes VS test platform issues |
Add priority |
#599 |
2025-07-08 |
194bd |
bug, needs confirmation |
Entra OAuth Auth Redirect Fails with 404 |
Add priority; confirm or close |
#604 |
2025-07-09 |
193bd |
bug |
NullReferenceException when openID config missing authz endpoint |
Add priority |
#643 |
2025-07-23 |
183bd |
bug |
Not able to customize .well-known/oauth-protected-resource URL |
Add priority |
#651 |
2025-07-26 |
181bd |
bug |
SSE transport hanging |
Add priority |
#654 |
2025-07-28 |
180bd |
bug |
Absolute Uri passed as ResourceMetadataUrl causes issues |
Add priority |
#667 |
2025-08-02 |
176bd |
bug |
Tool invocation fails based on method name |
Add priority |
#681 |
2025-08-06 |
173bd |
bug |
Not able to authenticate MCP Servers |
Add priority |
#684 |
2025-08-07 |
172bd |
bug, area-auth, needs confirmation |
Using incorrect oauth-authorization-server endpoint |
Confirm or close (stale) |
#689 |
2025-08-08 |
172bd |
bug |
ProtectedMcpServer sample doesn't work with VSCode auth flow |
Add priority |
#730 |
2025-08-25 |
160bd |
bug |
SDK Authorization not compatible with spec |
Add priority |
#738 |
2025-08-28 |
157bd |
bug |
Server-side keep-alive Scheduler for SSE responses |
Add priority |
#741 |
2025-08-29 |
157bd |
bug, needs confirmation |
EntraID doesn't support 'resource' param |
Confirm or close (stale) |
#766 |
2025-09-12 |
146bd |
bug |
McpServer Endpoint resources never disposed |
Add P2 |
#788 |
2025-09-17 |
142bd |
bug |
Malformed body throws 500 instead of 400 |
Add P2 |
#842 |
2025-10-09 |
127bd |
bug |
OAuth Flow not working for Atlassian MCP and Github MCP |
Add priority |
#887 |
2025-10-16 |
122bd |
bug |
Scopes not forwarded to DCR endpoint, duplication of RedirectUris |
Add priority |
#932 |
2025-10-31 |
112bd |
bug |
Transfer-Encoding=Chunked causes issues with Azure Functions |
Add priority |
#968 |
2025-11-17 |
100bd |
bug |
Authorize with specific JWT scheme and [Authorize] attribute |
Add priority |
#995 |
2025-11-19 |
97bd |
bug |
Configuration property read in Directory.Build.props |
Add priority |
#1050 |
2025-12-01 |
90bd |
bug |
WWW-Authenticate header missing resource metadata params |
Add P2 |
#1088 |
2025-12-12 |
82bd |
bug |
Robustly parse quoted WWW-Authenticate parameters |
Add P2 |
#1111 |
2025-12-17 |
77bd |
bug |
AddSingleton does not work as expected |
Add priority |
#1119 |
2025-12-22 |
75bd |
bug |
OAuth Resource URI Validation Too Strict |
Add P2 |
#1132 |
2026-01-07 |
62bd |
bug, needs confirmation |
Streamable HTTP doesn't correctly handle empty response |
Confirm or close (stale) |
#1150 |
2026-01-15 |
57bd |
bug |
Allow JsonSerializerOptions without TypeInfoResolver |
Add P2 |
#1166 |
2026-01-19 |
55bd |
bug |
Github copilot not setting bearer token on tool access |
Add priority |
#1172 |
2026-01-22 |
52bd |
bug |
Support using WithStreamServerTransport for multiple in-process MCP servers |
Add priority |
#1236 |
2026-02-02 |
44bd |
bug, area-auth, needs confirmation |
Specified ClientOAuthOptions.Scopes are ignored |
Verify PR #1238; close if resolved |
#1239 |
2026-02-03 |
44bd |
bug, needs confirmation |
notifications/tools/list_changed times out over Streamable HTTP |
Confirm or close (stale) |
#1365 |
2026-02-23 |
29bd |
bug, ready for work |
Cancellation support via CancellationToken fails |
Add P2; review PR #1377 |
#1434 |
2026-03-15 |
15bd |
bug, P2 |
CreateOutputSchema wraps without rewriting $ref |
Link PR #1435 |
#1466 |
2026-03-25 |
8bd |
needs repro, P1 |
Streamable HTTP doesn't support single JSON responses |
Add bug type label |
#1470 |
2026-03-27 |
7bd |
bug, P2 |
McpClient.CreateAsync times out behind APIM |
Needs investigation |
#1480 |
2026-03-31 |
4bd |
bug, ready for work, P1 |
Tool returning McpTask is double-wrapped |
Merge PR #1499 before 2026-04-07 |
#1486 |
2026-03-31 |
4bd |
bug, ready for work, P2 |
Stateless HTTP server advertises listChanged |
Ready for review |
#1490 |
2026-04-01 |
3bd |
bug, area-tests |
Flaky test on .NET 10.0: DistributedCacheEventStreamStore |
Add P3; PR #1491 may help |
Enhancements (44)
| # |
Created |
Age |
Labels |
Title |
Remaining Actions |
#545 |
2025-06-25 |
202bd |
enhancement, ready for work, P2 |
Support JSON-only mode similar to TypeScript SDK |
— |
#557 |
2025-06-26 |
202bd |
enhancement, needs confirmation |
AspNetCore doesn't support .NET Standard? |
Confirm or close |
#586 |
2025-07-03 |
197bd |
enhancement |
Add support for multiple resources per MCP Authentication scheme |
Add priority |
#592 |
2025-07-07 |
195bd |
enhancement, needs confirmation, P3 |
Streamable HTTP server support under .NET Framework |
— |
#612 |
2025-07-11 |
192bd |
enhancement |
Runtime Tool Filtering and/or Multiple MCP Endpoints |
Add priority |
#623 |
2025-07-14 |
190bd |
enhancement |
Allow tools to continue running when session is closed |
Add priority |
#636 |
2025-07-19 |
185bd |
enhancement |
Cannot Configure JSON Serialization for MCPServer |
Add priority |
#640 |
2025-07-21 |
185bd |
enhancement |
Dictionary overload for CallToolAsync |
Add priority |
#657 |
2025-07-30 |
178bd |
enhancement |
Release signed binaries in nuget package |
Consider consolidating with #833 |
#659 |
2025-07-30 |
178bd |
enhancement |
AspNetCore TestHost client transport |
Add priority |
#678 |
2025-08-05 |
173bd |
enhancement |
Update ProtectedResourceMetadata to use IList/ISet |
Add priority |
#710 |
2025-08-15 |
167bd |
enhancement, needs confirmation, P3 |
Make StreamableHttpHandler and SseHandler public |
— |
#720 |
2025-08-20 |
163bd |
enhancement |
Passing ACR_VALUES to Token Endpoint |
Add priority |
#726 |
2025-08-22 |
162bd |
enhancement |
SSE Auto Reconnect |
Add priority |
#736 |
2025-08-27 |
158bd |
enhancement |
Auto server-side keep-alive for SSE |
Add priority |
#752 |
2025-09-03 |
153bd |
enhancement |
SSE server behind HTTP supporting server push |
Add priority |
#757 |
2025-09-08 |
149bd |
enhancement |
SseClientTransportOptions.Endpoint consumer control |
Add priority |
#758 |
2025-09-10 |
148bd |
enhancement |
Dynamic Tool Description based on Route Variable |
Add priority |
#759 |
2025-09-10 |
148bd |
enhancement |
Middleware tools list (different tool set based on user) |
Add priority |
#762 |
2025-09-10 |
148bd |
enhancement |
Cache authorization policy lookups |
Add priority |
#772 |
2025-09-15 |
145bd |
enhancement |
SEP-1046: OAuth client credentials flow |
Add priority |
#795 |
2025-09-19 |
142bd |
enhancement |
Specify JsonSerializerOptions and AIJsonSchemaCreateOptions |
Add priority |
#812 |
2025-09-22 |
139bd |
enhancement |
Support PRM subpaths per RFC 9728 |
Add priority |
#814 |
2025-09-24 |
138bd |
enhancement, needs confirmation |
Run multiple stateful MCP servers |
Consider closing as answered |
#828 |
2025-10-02 |
132bd |
enhancement |
Distributed Remote Transport Abstraction |
Add priority |
#833 |
2025-10-03 |
131bd |
enhancement, area-infrastructure, P2, blocked |
DLLs are not Code Signed |
Blocked; tracked |
#836 |
2025-10-05 |
130bd |
enhancement |
Add support for statically-defined parametric prompts |
Add priority |
#889 |
2025-10-16 |
122bd |
enhancement |
Make EverythingServer support stdio or http |
PR #950 available |
#893 |
2025-10-17 |
122bd |
enhancement |
Expose OAuth metadata, pass token without validation |
Add priority |
#917 |
2025-10-23 |
117bd |
enhancement |
Support externally sourced JWT in Auth header |
Add priority |
#949 |
2025-11-07 |
107bd |
enhancement, area-auth, ready for work, P2 |
SEP-990: Enterprise Managed Authorization |
PR #1305 available |
#962 |
2025-11-13 |
102bd |
enhancement |
ToolResult always returns as "Text" without decoding |
Add priority |
#1026 |
2025-11-25 |
94bd |
enhancement |
Telemetry with Application Insights example |
Add priority |
#1131 |
2026-01-07 |
62bd |
enhancement |
Support stream resumption in stateless mode |
Add priority |
#1183 |
2026-01-28 |
48bd |
enhancement, ready for work, P2 |
Split ElicitationMcpTasksCapability |
— |
#1184 |
2026-01-28 |
48bd |
enhancement, ready for work, P2 |
Support elicitation/sampling in tasks/result response |
— |
#1185 |
2026-01-28 |
48bd |
enhancement, ready for work, P2 |
Remove use of AsyncLocal for Task input_required |
— |
#1216 |
2026-01-30 |
47bd |
enhancement |
Version-Based Tool Registration |
Add priority |
#1287 |
2026-02-16 |
35bd |
enhancement, ready for work, P3 |
Add DeleteStreamsForSessionAsync |
PR #1288 available |
#1314 |
2026-02-19 |
32bd |
enhancement, ready for work, P3 |
Custom filters |
— |
#1416 |
2026-03-08 |
20bd |
enhancement, P2, blocked |
Alternative to RunSessionHandler |
Blocked |
#1431 |
2026-03-13 |
16bd |
enhancement, ready for work, P2 |
MCP Apps Support — Typed Metadata |
PR #1484 available |
#1446 |
2026-03-18 |
13bd |
enhancement |
OAuth proxy / DCR facade for Entra ID |
Add priority |
#1453 |
2026-03-20 |
12bd |
enhancement, P2 |
Add client-side tool call interceptor |
— |
#1482 |
2026-03-31 |
3bd |
enhancement |
Server-side incremental scope consent (SEP-835) |
PR #1483 available |
#1487 |
2026-04-01 |
3bd |
enhancement |
Authorization Server & PRM inspection |
Add priority |
Questions (3)
| # |
Created |
Age |
Labels |
Title |
Remaining Actions |
#591 |
2025-07-06 |
195bd |
question, needs confirmation |
Multiple http MCP endpoints in same app |
Consider closing or consolidating |
#611 |
2025-07-11 |
192bd |
question, needs confirmation |
Host several MCP in one ASP.Net application |
Close (stale, 9 months) |
#768 |
2025-09-14 |
145bd |
question, needs confirmation |
How do I resolve IMcpServer with WithHttpTransport? |
Confirm or close |
Documentation (7)
| # |
Created |
Age |
Labels |
Title |
Remaining Actions |
#1052 |
2025-12-03 |
88bd |
documentation, help wanted, area-auth, ready for work |
Practical OAuth implementation for production |
— |
#1126 |
2025-12-29 |
70bd |
documentation, help wanted, ready for work |
Sample: ASP.NET Core MCP Client with persisted connection |
— |
#1389 |
2026-02-25 |
28bd |
documentation, enhancement |
Sample: stdio-to-HTTP bridge |
— |
#1413 |
2026-03-06 |
22bd |
documentation, question |
Export Control Classification Number |
— |
#1452 |
2026-03-20 |
12bd |
documentation, ready for work, P3 |
Document role/identity propagation pattern |
PR #1497 available |
#1493 |
2026-04-02 |
2bd |
documentation, enhancement, P2 |
Documentation slightly hard to find |
— |
#1494 |
2026-04-02 |
2bd |
documentation, enhancement |
Documentation request: Authentication architecture |
— |
📈 Recently Closed Issues
Summary of issues closed in modelcontextprotocol/csharp-sdk across sliding windows:
| Window |
Total |
Bugs |
Enhancements |
Questions |
Docs |
Unlabeled |
Completed |
Not Planned |
| 7 days |
11 |
3 |
3 |
0 |
2 |
3 |
7 |
4 |
| 14 days |
15 |
5 |
5 |
0 |
2 |
3 |
10 |
5 |
| 28 days |
20 |
6 |
6 |
0 |
2 |
6 |
13 |
7 |
Recently closed issues (last 28 days)
| # |
Closed |
Type |
Reason |
Title |
#1448 |
2026-04-06 |
area-tests |
completed |
CreateAsync_ValidProcessInvalidServer test crash |
#747 |
2026-04-05 |
bug |
completed |
StructuredContent vs Content Mismatch |
#1454 |
2026-04-02 |
unlabeled |
not_planned |
API naming inconsistency: ReadOnly vs ToolAnnotations |
#782 |
2026-04-02 |
documentation |
completed |
Update docs/ folder to reflect updated APIs |
#1422 |
2026-04-01 |
bug, P3 |
not_planned |
Server allows duplicate initialize on same session |
#791 |
2026-03-31 |
bug |
not_planned |
Unable to connect to stdio server from github-copilot |
#1426 |
2026-03-31 |
unlabeled |
not_planned |
AIFunctionFactory rejects missing nullable params |
#982 |
2026-03-31 |
documentation |
completed |
Documentation review |
#930 |
2026-03-31 |
enhancement |
completed |
StructuredContent decoupled from Content |
#1476 |
2026-03-30 |
enhancement |
completed |
Handling omitted optional parameters in F# |
#1455 |
2026-03-30 |
enhancement |
completed |
ClientCompletionDetails not accessible when McpClient.CreateAsync fails |
#1463 |
2026-03-27 |
bug |
completed |
McpClientTool WithMeta and WithProgress cause tool invocation failure |
#1430 |
2026-03-27 |
bug |
completed |
MCP task disposes the taskstore causing invoke tool failure |
#1318 |
2026-03-25 |
enhancement |
not_planned |
More string intermediates in read side of MCP transport |
#1263 |
2026-03-23 |
enhancement |
completed |
Support specifying OutputSchema type independently of return type |
#1457 |
2026-03-20 |
bug |
completed |
Generated tool input schema for reflected C# objects doesn't match |
#1447 |
2026-03-20 |
needs repro |
completed |
Generated tool input schema duplicate |
#1427 |
2026-03-11 |
enhancement |
not_planned |
D (noise issue) |
#1424 |
2026-03-11 |
unlabeled |
not_planned |
Can I categorize McpServerTool using C# attributes? |
#1421 |
2026-03-10 |
unlabeled |
completed |
Server declares logging capability even when not configured |
Report generated 2026-04-06. Data sourced from GitHub API.
Generated by SDK Issue Triage · ● 2.9M · ◷
MCP C# SDK — Issue Triage Report
Date: 2026-04-06
Repository: modelcontextprotocol/csharp-sdk
SDK Tier: Tier 1 (tracking issue)
Triage SLA: Within 2 business days (Tier 1 requirement)
Critical Bug SLA: Resolution within 7 days (Tier 1 requirement)
BLUF (Bottom Line Up Front)
needs confirmationissues need action#1480(McpTask double-wrapping) has open PR#1499and is at the 7-day critical bug SLA boundary (~2026-04-07); the backlog contains ~15+ staleneeds confirmationissues ready to close📈 Trends
One prior triage report was found: issue
#25in this workflow repository, created 2026-04-06 (earlier today). Key comparisons:Trajectory: The backlog is stable with no SLA violations. Resolution velocity is healthy at ~20 issues closed per 28-day window. The P1 bug
#1480was created on 2026-03-31 and is approaching its 7-day critical bug SLA (expires ~2026-04-07). The large cohort of staleneeds confirmationissues (~15 issues) represents an opportunity for cleanup.No comments were found on the prior triage report. No maintainer guidance to surface.
🚨 Issues Needing Urgent Attention
SLA Violations — Untriaged Issues
✅ No SLA violations. All 100 open issues are triaged (have at least one type or status label).
Potential P0/P1 Issues to Assess
#1480— Tool returning McpTask is double-wrapped when client sends task-augmented request@k8x10bug,ready for work,P1@jeffhandley,@Copilot#1499Status: When a tool explicitly creates its own
McpTaskviaIMcpTaskStoreand returns it (the documented pattern), the SDK unconditionally wraps the invocation in a second task — orphaning the tool-created task and returning the wrong task ID to the client. Two root causes are identified: (1)AIFunctionMcpServerTool.InvokeAsynchas noMcpTaskcase in its result switch expression, causing serialization as text; (2)McpServerImpl.ExecuteToolAsTaskAsyncunconditionally creates its own task regardless of whether the tool already returned one. A standalone reproduction repo is provided. PR#1499(Fix McpTask double-wrapping when tool returns its own task) is assigned and under active development. The 7-day critical bug SLA window expires approximately 2026-04-07.Recommended actions:
#1499before SLA expiry#1466— Streamable HTTP transport doesn't support single JSON responses (spec violation)@dhruvmodi13needs repro,P1(missing type label)Status: Reporter claims
StreamableHttpClientSessionTransportfails with servers that returnapplication/jsoninstead oftext/event-stream(both are spec-compliant). Maintainer@stephentoubresponded on 2026-03-26 that he could not reproduce with v1.1.0 and pointed to the existing code path that handlesapplication/jsonresponses, asking for a standalone repro. No repro has been provided. The issue has been idle for 11 days since the maintainer's comment.Recommended actions:
bugtype label (currently missing a type label alongsideneeds repro)⏰ Stale Issues — Consider Closing
Issues labeled
needs confirmationorneeds reprowhere the reporter has not responded after being asked for more information.#611#684#700#741#964#1132#1239#1261#1466Note on
#1261: The maintainer asked about MCP Inspector behavior; author confirmed it works in MCP Inspector and VS Code Copilot, and is Claude Desktop-specific (last author comment 2026-02-18). The discussion concludes this is a Claude Desktop client limitation. Recommend closing asnot_plannedwith a note that this is a Claude Desktop client issue, not an SDK bug.Note on
#1236(bug,area-auth,needs confirmation): PR#1238(ClientOAuthProvider.Scopes have priority again) appears to directly address this issue. Verify and close if resolved.Missing Type Label
Issues that have a status or priority label but no type label (
bug,enhancement,question,documentation):#648ready for workbug#964needs confirmationquestionorbug#1182ready for work,P2enhancement#1261needs confirmationquestion(or close — Claude Desktop issue)#1466needs repro,P1bug#1492needs confirmationenhancementorquestionMissing Priority Label on Bugs
32 bugs currently lack a priority label. High-signal candidates:
#766#788#1050#1088#1119#1150#1365#1377available#1434#1470#1486#1490🔀 Duplicate / Consolidation Candidates
#591,#611,#612,#814,#1202#612appears to be the canonical enhancement; close#591,#611as answered; review#814and#1202for overlap#657,#833#833is blocked with tracking;#657may be a duplicate🔗 Potentially Related PRs
#648#1402#1236#1238#1287#1288#1365#1377#1431#1484#1434#1435#1452#1497#1480#1499#949#1305#889#950🔗 Cross-SDK Related Issues
OAuth / Authorization
#648#1264: Protected Resource Metadata resource erroneous#730#1450: OAuth Token Exchange Fails with Separate AS#772#1151: Server SDK support for scope challenges#648,#741,#842, etc.)#881: Support hooking token refreshSSE / Keep-Alive
#651#949,#1211: SSE stream disconnection#736#28: Automate pings from SSE serversStreamable HTTP
#1466#1852: Sessions destroyed on TCP keepalive timeout#1492#1400: Cursor second connection to StreamableHTTP#1470#2110: HTTP transport swallows non-2xx status codesJSON Serialization
#1434#2384: Inline $ref in tool inputSchema for LLM consumption📊 Other SDK Context
📋 Complete Open Issue Backlog (100 issues)
Bugs (36)
#587bug#599bug,needs confirmation#604bug#643bug#651bug#654bug#667bug#681bug#684bug,area-auth,needs confirmation#689bug#730bug#738bug#741bug,needs confirmation#766bugP2#788bugP2#842bug#887bug#932bug#968bug#995bugConfigurationproperty read in Directory.Build.props#1050bugP2#1088bugP2#1111bug#1119bugP2#1132bug,needs confirmation#1150bugP2#1166bug#1172bug#1236bug,area-auth,needs confirmation#1238; close if resolved#1239bug,needs confirmation#1365bug,ready for workP2; review PR#1377#1434bug,P2#1435#1466needs repro,P1bugtype label#1470bug,P2#1480bug,ready for work,P1#1499before 2026-04-07#1486bug,ready for work,P2#1490bug,area-testsP3; PR#1491may helpEnhancements (44)
#545enhancement,ready for work,P2#557enhancement,needs confirmation#586enhancement#592enhancement,needs confirmation,P3#612enhancement#623enhancement#636enhancement#640enhancement#657enhancement#833#659enhancement#678enhancement#710enhancement,needs confirmation,P3#720enhancement#726enhancement#736enhancement#752enhancement#757enhancement#758enhancement#759enhancement#762enhancement#772enhancement#795enhancement#812enhancement#814enhancement,needs confirmation#828enhancement#833enhancement,area-infrastructure,P2,blocked#836enhancement#889enhancement#950available#893enhancement#917enhancement#949enhancement,area-auth,ready for work,P2#1305available#962enhancement#1026enhancement#1131enhancement#1183enhancement,ready for work,P2#1184enhancement,ready for work,P2#1185enhancement,ready for work,P2#1216enhancement#1287enhancement,ready for work,P3#1288available#1314enhancement,ready for work,P3#1416enhancement,P2,blocked#1431enhancement,ready for work,P2#1484available#1446enhancement#1453enhancement,P2#1482enhancement#1483available#1487enhancementQuestions (3)
#591question,needs confirmation#611question,needs confirmation#768question,needs confirmationDocumentation (7)
#1052documentation,help wanted,area-auth,ready for work#1126documentation,help wanted,ready for work#1389documentation,enhancement#1413documentation,question#1452documentation,ready for work,P3#1497available#1493documentation,enhancement,P2#1494documentation,enhancement📈 Recently Closed Issues
Summary of issues closed in
modelcontextprotocol/csharp-sdkacross sliding windows:Recently closed issues (last 28 days)
#1448#747#1454#782#1422#791#1426#982#930#1476#1455#1463#1430#1318#1263#1457#1447#1427#1424#1421Report generated 2026-04-06. Data sourced from GitHub API.