Skip to content

McpClientFactory.CreateAsync throws ObjectDisposedException claiming CTS is disposed #512

Open
@AArnott

Description

@AArnott

Describe the bug

While testing the new github MCP remote server as described here in Visual Studio, I see it repeatedly failing to start due to what seems to be a spurious error.

I'm using 0.2.0-preview.3 of the .NET MCP SDK.

To Reproduce

mcp.json config:

"github": {
  "url": "https://api.githubcopilot.com/mcp/",
  "headers": {
    "Authorization": "Bearer  ${input:github_token}"
  }
}

Expected behavior

I expect the server to start.

Logs

[Conversations Error] [Conversations] Failure while initializing MCP server 'github'. System.ObjectDisposedException: The CancellationTokenSource has been disposed.
Object name: 'System.Threading.CancellationTokenSource'.
   at ModelContextProtocol.Client.StreamableHttpClientSessionTransport.DisposeAsync()
   at ModelContextProtocol.Client.AutoDetectingClientSessionTransport.InitializeAsync(JsonRpcMessage message, CancellationToken cancellationToken)
   at ModelContextProtocol.McpSession.SendRequestAsync(JsonRpcRequest request, CancellationToken cancellationToken)
   at ModelContextProtocol.McpEndpointExtensions.SendRequestAsync[TParameters,TResult](IMcpEndpoint endpoint, String method, TParameters parameters, JsonTypeInfo`1 parametersTypeInfo, JsonTypeInfo`1 resultTypeInfo, RequestId requestId, CancellationToken cancellationToken)
   at ModelContextProtocol.Client.McpClient.ConnectAsync(CancellationToken cancellationToken)
   at ModelContextProtocol.Client.McpClient.ConnectAsync(CancellationToken cancellationToken)
   at ModelContextProtocol.Client.McpClientFactory.CreateAsync(IClientTransport clientTransport, McpClientOptions clientOptions, ILoggerFactory loggerFactory, CancellationToken cancellationToken)
   at ModelContextProtocol.Client.McpClientFactory.CreateAsync(IClientTransport clientTransport, McpClientOptions clientOptions, ILoggerFactory loggerFactory, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Conversations.Service.Mcp.McpServerTracker.CreateClientAsync(McpServer configuration, String id, CancellationToken cancellationToken) in Q:\src\VisualStudio.Conversations\src\Copilot.Service\Mcp\McpServerTracker.cs:line 156
   at Microsoft.VisualStudio.Conversations.Service.Mcp.McpServerTracker.<>c__DisplayClass10_0.<<-ctor>b__0>d.MoveNext() in Q:\src\VisualStudio.Conversations\src\Copilot.Service\Mcp\McpServerTracker.cs:line 56

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions