Commit graph csharp-sdk/src/ModelContextProtocol.Core
Author SHA1 Message Date
Copilot
0585c27d53
Fix form mode elicitation schema check to apply for all form requests (#1151) 2026-01-19 21:26:28 -05:00
Copilot
774411b22c
Add 2025-11-25 as supported version (#1130)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2026-01-15 09:59:42 -05:00
Mackinnon Buck
b8311756b4
Streamable HTTP resumability + redelivery + SSE polling via server-side disconnect (#1077)
Co-authored-by: Stephen Halter <halter73@gmail.com>
2026-01-14 22:54:25 -08:00
Copilot
d52a7b183d
Align telemetry with OpenTelemetry MCP semantic conventions (#1139)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2026-01-13 18:07:49 -08:00
Copilot
2bc105b612
Optimize JsonRpcMessage deserialization with single-pass parsing (#1138)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: scooletz <scooletz@gmail.com>
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2026-01-13 11:55:49 -05:00
Copilot
bafbb0a8ba
Fix CreateSamplingHandler to use ChatRole.Tool for tool result messages (#1128)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
Co-authored-by: Mackinnon Buck <mackinnon.buck@gmail.com>
2026-01-06 16:58:41 -05:00
Copilot
8b73a42c9d
Remove private reflection from tests (#1107)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: halter73 <54385+halter73@users.noreply.github.com>
2025-12-16 21:20:42 +02:00
Copilot
1b846cb76c
Add missing exception documentation to public API surface (#1103)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-12-15 12:51:09 -05:00
Copilot
31fcc1eb44
Add request duration to LogRequestHandlerCompleted and LogRequestHandlerException log messages (#1092)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-12-15 09:50:52 -08:00
Copilot
5b74ee21e4
Document HttpRequestException thrown by McpClient.CreateAsync (#1095)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-12-15 07:16:18 -06:00
Copilot
3aedd3cd9a
Fix Icon.Theme documentation to match MCP specification (#1090)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-12-12 16:33:51 +02:00
Stephen Halter
31f8d20a1a
Support incremental scope consent (SEP-835) (#1084) 2025-12-11 19:51:47 -08:00
Copilot
20d726bfdf
Remove s_additionalProperties from McpClientTool (#1080)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-12-10 15:53:41 +02:00
Copilot
862492d32f
Add SubscribeToResourceAsync overload with handler delegate (#1069)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-12-05 18:15:24 -05:00
Copilot
1b52ddacba
Add DebuggerDisplay attributes to Protocol types (#1068)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Halter <halter73@gmail.com>
2025-12-05 15:09:46 -08:00
Stephen Halter
970207989e
Fall back to well-known URL in client if 401 response is missing resource_metadata parameter (#1054) 2025-12-05 14:12:51 -08:00
Peder Holdgaard Pedersen
d99f882884
Add McpClientTool.WithMeta (#1027)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-12-05 15:41:44 -05:00
Stephen Toub
4a84412331
Add McpClient/Session methods using .Protocol types (#1063) 2025-12-05 13:45:12 -05:00
Copilot
d76bc16bd1
Add ResourceNotFound error code (-32002) (#1062) 2025-12-05 10:39:30 -08:00
Copilot
4808ca0324
Synthesize return description into tool description when UseStructuredContent is false (#1049) 2025-12-05 10:24:49 -08:00
Stephen Halter
ae17ba0b4b
Add support for URL mode elicitation (#1021) 2025-12-05 00:03:16 -08:00
Mike Kistler
c447973972
Add request options bag to high level requests and include Meta (#970)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-04 17:32:12 -05:00
Copilot
627de76ca6
Remove McpClient.Enumerate*Async methods (#1060) 2025-12-04 11:05:40 -08:00
Copilot
db0f4d13b4
Add support for data to McpProtocolException (#1028) 2025-12-03 15:37:54 -08:00
Copilot
136755f2be
Remove obsolete APIs from codebase and standardize MCP diagnostic IDs (#985)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
Co-authored-by: Mackinnon Buck <mackinnon.buck@gmail.com>
Co-authored-by: jeffhandley <1031940+jeffhandley@users.noreply.github.com>
Co-authored-by: Jeff Handley <jeffhandley@users.noreply.github.com>
2025-12-02 10:28:46 -08:00
Genevieve Warren
6ed728d005
MCP Core docs edit pass (#1033)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-11-26 08:36:19 -05:00
Genevieve Warren
c87eba3f1f
Core Protocol docs edit pass (#1032) 2025-11-25 23:05:25 -05:00
Mike Kistler
f45996d4b5
Add Conformance tests for the server (#983) 2025-11-25 17:20:18 -08:00
Mackinnon Buck
5a65af8ed7
Add support for Client ID Metadata Documents to enable URL-based client registration (#1023) 2025-11-25 16:17:47 -08:00
Stephen Halter
7f25ae9d2a
Add ability for client to resume session (#1029) 2025-11-25 14:31:10 -08:00
Manuel Naujoks
820821fa0c
Tokens can be cached beyond the lifetime of the (http) transport. (#834) 2025-11-24 17:56:56 -08:00
Copilot
e6db415940
Fix race condition in StdioClientTransport on .NET Framework (#996)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-11-24 17:42:16 +02:00
Jeff Handley
9395394c1b
Address additional feedback on Versioning doc (#999) 2025-11-20 21:59:28 -05:00
Stephen Toub
15139cc569
Add tools support to sampling (#976) 2025-11-20 09:52:23 -05:00
Copilot
ad86b53347
Add production-ready incremental source generator for automatic Description attributes from XML comments (#899)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-11-20 09:14:17 -05:00
Copilot
83098e7cc0
Implement SEP-1330: Standards-compliant enum schemas for elicitation (#969)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-11-19 22:51:02 -05:00
Copilot
2105f6883b
Fix documentation typos and incorrect type references (#993)
* Initial plan

* Fix documentation typos and incorrect type references

Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
2025-11-19 22:31:28 -05:00
Mackinnon Buck
d540dc1fb1
Make RequestId non-required (#984) 2025-11-18 16:03:31 -08:00
Eirik Tsarpalis
9e21d3e11d
Remove TODOs related to AllowOutOfOrderMetadataProperty workarounds. (#977) 2025-11-18 20:08:30 +02:00
Copilot
00bb5b2678
Add Description property to Implementation type per MCP spec (#966)
* Initial plan

* Add Description property to Implementation type

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Add test to validate client Description from server perspective

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-11-17 10:42:40 -05:00
Copilot
4b241e7ddc
Align error handling documentation with SEP-1303 (#967)
* Initial plan

* Update documentation to clarify error handling per SEP-1303

- Updated McpErrorCode.InvalidParams documentation to clarify it's for protocol-level errors (malformed requests, unknown primitives)
- Updated CallToolResult documentation to distinguish between tool execution errors and protocol errors
- Updated McpProtocolException documentation to emphasize it's only for protocol-level errors
- Added test to verify input validation errors are returned as tool execution errors (IsError=true)
- Implementation already correctly handles input validation as tool execution errors per SEP-1303

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-11-17 10:01:30 -05:00
Stephen Toub
b993ae0e61
Update to .NET 10.x packages (#957) 2025-11-12 14:14:40 +01:00
Jeff Handley
d4ee78797b
Ignore unexpected properties when deserializing a ContentBlock (#956)
* Ignore unexpected properties when deserializing a ContentBlock

* Fix deserialization of Reference.Title and more bugs for unknown props

* Remove comments about skipping additional properties
2025-11-09 01:00:55 -08:00
Stephen Toub
98a0261585
Tweak how McpClientTool.InvokeAsync exposes some content (#941)
Rather than always serializing to a JsonElement, which IChatClients that consume the tool won't be able to reason about, convert the content into AIContents that they can reason about.
2025-11-06 21:47:19 -05:00
Copilot
b90f17bccb
Add public constructors to McpClient types for reusing cached definitions (#938)
* Initial plan

* Add public constructor to McpClientTool for reusing tool definitions

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Fix McpClientTool constructor per review feedback

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Add public constructors for McpClientPrompt, McpClientResource, and McpClientResourceTemplate

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
2025-11-06 13:59:17 -05:00
Stephen Toub
5fc50fb528
Implement SEP-986: Specify Format for Tool Names (#945)
We can add static analysis to provide compile-time diagnostics later, once the analyzers project is merged. For now, this adds run-time validation.
2025-11-06 08:45:02 -05:00
Mackinnon Buck
121929da36
Audit protocol types (#892) 2025-11-04 15:41:10 -08:00
Copilot
66c084c795
Add default value support for all primitive types in elicitation schemas (SEP-1034) (#924)
* Initial plan

* Add SEP-1034 support for default values in all primitive schema types

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Address PR feedback: convert if-else to switch and add default value mapping tests

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Remove default value extraction code and linker annotations per feedback

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Use literal true/false values instead of GetBoolean() call

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Reinstate tests and fix CreatePrimitiveSchema to extract defaults from AttributeProvider

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Remove manual default extraction and update test to use positional record

Removed the manual default value extraction code from BuildRequestSchema
and SetDefaultValue helper as this should be handled by AIJsonUtilities.
Updated FormWithDefaults to be a positional record with optional parameters.
Test is now skipped until AIJsonUtilities supports extracting defaults from
optional parameters.

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

* Use 'is not null' pattern for consistency with nullable checks

Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
2025-10-31 08:01:55 +02:00
Stephen Halter
b575f6e52e
Call Regex.IsMatch when Match is not needed (#903) 2025-10-20 12:05:50 -07:00
Stephen Halter
1343dd3ebd
Fix regression matching templated McpServerResources (#897) 2025-10-20 11:13:37 -07:00