Stephen Halter
d6b1615988
Follow-ups to #1610 : de-draft 2026-07-28 terminology, renumber error codes, ProtocolVersion floor ( #1671 )
2026-06-25 14:07:52 -07:00
Jayaraman Venkatesan
0663b7c878
Relax outputSchema to any JSON Schema 2020-12 document per SEP-2106 ( #1568 )
...
Co-authored-by: Mike Kistler <mikekistler@microsoft.com>
2026-06-16 15:02:04 -07:00
Pranav Senthilnathan
dbb7a20176
Implement SEP-2663 Tasks Extension ( #1579 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-11 13:10:45 -07:00
Weinong Wang
20ddd2fb10
Fix $ref pointer resolution after output schema wrapping ( #1435 )
2026-06-05 16:38:12 -07:00
Tarek Mahmoud Sayed
ed19286a08
Align x-mcp-header implementation with SEP-2243 spec clarifications ( #1619 )
...
Co-authored-by: Tarek Mahmoud Sayed <tarekms@ntdev.microsoft.com>
2026-06-05 15:45:08 -07:00
Mike Kistler
b8c4d951ec
Implementation for SEP-2243 Http Standardization ( #1553 )
...
Co-authored-by: Tarek Mahmoud Sayed <tarekms@microsoft.com>
Co-authored-by: Tarek Mahmoud Sayed <tarekms@ntdev.microsoft.com>
Co-authored-by: Tarek Mahmoud Sayed <10833894+tarekgh@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-14 15:39:37 -07:00
Copilot
7dcdbafe9d
Add 3-arg RequestContext constructor and obsolete 2-arg to eliminate null-forgiving operator usage ( #1462 )
2026-03-27 12:33:23 -07:00
Copilot
2958a75894
Support specifying OutputSchema independently of return type for tools returning CallToolResult ( #1425 )
...
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: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-22 21:19:29 -04:00
Copilot
0a0a575a3d
Normalize CallToolResult.StructuredContent to JsonElement? ( #1357 )
...
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>
2026-02-23 18:04:09 -05:00
Copilot
80b1ad21d7
Use ReadOnlyMemory<byte> for binary data to eliminate UTF-16 transcoding ( #1070 )
...
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: ericstj <8918108+ericstj@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
2026-02-19 14:08:05 -08:00
Eirik Tsarpalis
10e4f5b20f
Implement MCP task support (SEP-1686) ( #1170 )
...
Co-authored-by: Stephen Halter <halter73@gmail.com>
2026-01-27 19:21:02 -08: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
dependabot[bot]
d0ee6a0bef
Bump the other-testing group with 1 update ( #1101 )
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
2025-12-15 19:46:21 +02:00
Copilot
4808ca0324
Synthesize return description into tool description when UseStructuredContent is false ( #1049 )
2025-12-05 10:24:49 -08:00
Stephen Toub
bfc0980ef5
Add net10.0 assets and run some fixers ( #875 )
2025-10-15 15:27:43 -04:00
Copilot
f28639119b
Implement SEP-973: Icons and metadata support for Implementations, Resources, Tools, and Prompts ( #802 )
...
* Initial plan
* Initial plan for SEP-973 implementation
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Implement SEP-973: Add Icon class and icon support to Implementation, Resource, Tool, and Prompt
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Complete SEP-973 implementation with documentation and fix property consistency
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Address code review feedback: improve tests, remove docs, split test files
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Fix tests to use S.T.J. source generator
* Styling fixes
* Simplify Icons property documentation as suggested in code review
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Rename Icon.Src property to Icon.Source for more .NET-y naming
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Add icon support to McpServerTool infrastructure and attributes
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Cleanup
* Refactor icon tests to use Delegate overload instead of MethodInfo pattern
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Change Icon.Sizes property from string to IList<string> per spec update
Co-authored-by: jozkee <16040868+jozkee@users.noreply.github.com>
* Add icon support to Prompts and Resources (CreateOptions and Attributes)
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Add client-server integration tests for Icons and WebsiteUrl
Co-authored-by: MackinnonBuck <10456961+MackinnonBuck@users.noreply.github.com>
* Fix nullability warnings
* Revert "Add client-server integration tests for Icons and WebsiteUrl"
This reverts commit f37de15569e54e86a0709121c9bdf80c5045511c.
* More nullability fixes
* Add more tests
* Address code review feedback: add Theme property, fix docs, improve test patterns
Co-authored-by: jozkee <16040868+jozkee@users.noreply.github.com>
* Update Icon tests to exercise Theme property
Co-authored-by: jozkee <16040868+jozkee@users.noreply.github.com>
* Add Theme property assertions to client-server integration tests
Co-authored-by: jozkee <16040868+jozkee@users.noreply.github.com>
* Fix nullability
---------
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: Mackinnon Buck <mackinnon.buck@gmail.com>
Co-authored-by: jozkee <16040868+jozkee@users.noreply.github.com>
Co-authored-by: David Cantú <dacantu@microsoft.com>
2025-10-08 12:23:01 -07:00
Mackinnon Buck
38b4a26998
Restructure IMcpEndpoint, IMcpClient, and IMcpServer ( #723 )
...
* Remove `McpEndpoint` & `IMcpClient`
* Revise naming, add abstract classes
* Fix missing renames
* Move extension methods to instance methods
* Add back old API, but obsoleted
* Add back obsoleted factory classes
* Move deprecation attributes
* `SseClientTransport` -> `HttpClientTransport`
* Update src/ModelContextProtocol.Core/Server/AugmentedServiceProvider.cs
Co-authored-by: Stephen Halter <halter73@gmail.com>
* PR feedback
* PR feedback
* Add back dispose lock
* Fix docs projects
* PR feedback
* Undo `docs/*.md` changes
---------
Co-authored-by: Stephen Halter <halter73@gmail.com>
2025-09-16 10:22:10 -07:00
Stephen Halter
d344c65120
Add middleware and authz support for server-side handlers ( #733 )
2025-09-10 10:07:45 -07:00
Stephen Toub
70960e1f1b
Remove special-casing of string enumerables in McpServerTool ( #699 )
...
We special-case string enumerables, translating them to an array of text content blocks, but other enumerables just get serialized, and there's a reasonable expectation that returning a string[] would produce a JSON array of strings. Just delete the special-casing.
2025-08-13 13:05:42 -04:00
Eirik Tsarpalis
3156818d66
Update MEAI version and add regression test for #601 . ( #628 )
2025-07-16 16:17:49 +03:00
Eirik Tsarpalis
aa75f6f37e
Enable netfx testing. ( #588 )
...
* Enable netfx testing.
* Skip impacted tests and re-enable netfx testing.
* Remove redundant comment.
* Remove unnecessary project configuration.
* Simplify test server copying.
2025-07-08 18:50:37 +03:00
Stephen Toub
f3539cc2ca
Enable injecting IMcpServer and friends into ctors ( #570 )
2025-06-30 10:58:08 -04:00
Stephen Toub
2bcff315f8
Update content according to latest spec ( #513 )
...
* Update content according to latest spec
* Add Title to a bunch of types
* Add _meta to lots of types
* Address feedback, more cleanup, fix NAOT test failure
2025-06-16 19:39:41 -04:00
Sven Boemer
28d65470f4
Update Microsoft.Extensions.AI version & expose JSON configuration on McpServerResourceCreateOptions ( #511 )
...
* Update Microsoft.Extensions.AI version
* Update Microsoft.Extensions.AI.OpenAI
* Fix failing tests; add JSON configuration options to McpServerResourceCreateOptions.
* Replace temporary code with `AIFunction.ReturnJsonSchema`
---------
Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
2025-06-13 13:50:14 +01:00
Eirik Tsarpalis
fa017c04c3
Add structured output/output schema support for server-side tools. ( #480 )
...
* Add structured output/output schema support for server-side tools.
* Address feedback.
* Add McpServerToolAttribute.UseStructuredContent
---------
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-06-06 00:20:12 -07:00
кɵɵѕнī
adb2098e4d
Log tool invocation errors ( #447 )
...
* Log tool errors
* add test and implement source generated logging
2025-05-23 14:48:47 -07:00
Stephen Toub
106ab8064f
Clean up namespaces ( #410 )
...
No meaningful code changes, just lots of namespace shuffling to have fewer namespaces and to put things in better namespaces.
2025-05-14 14:50:26 -04:00
Stephen Toub
ca3a8ab921
Update M.E.AI.Abstractions to 9.5.0-preview.1.25262.9 ( #412 )
2025-05-14 13:24:24 +03:00
Stephen Toub
61092e0266
Update to latest M.E.AI version ( #401 )
2025-05-10 07:53:04 -04:00
1357310795
e190844218
Add SchemaCreateOptions in McpServerToolCreateOptions/McpServerPromptCreateOptions ( #354 )
...
* Add SchemaCreateOptions in McpServerToolCreateOptions
* Use TransformSchemaNode for SchemaCreateOptions testing
* Add SchemaCreateOptions in McpServerPromptCreateOptions also
2025-04-25 16:36:00 +03:00
Stephen Toub
f4c87f5e2f
Wrap each request in a service scope ( #276 )
...
* Wrap each request in a service scope
* Change request/notification delegates to return ValueTask
* Address feedback
2025-04-11 19:19:12 -04:00
Eirik Tsarpalis
e3aa54eb3c
Disable STJ reflection for testing. ( #266 )
...
* Disable STJ reflection for testing.
* Remove params method and redundant overload.
---------
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-04-10 16:02:00 +01:00
Stephen Toub
0c502c43af
Update M.E.AI to latest version ( #241 )
...
Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
2025-04-09 09:03:24 +01:00
Stephen Toub
a04cf6a2f5
Expand a few DI-related tests ( #201 )
2025-04-03 12:48:23 -04:00
Stephen Toub
5d3fb65b11
Add McpServerPrompt / McpClientPrompt and friends ( #126 )
2025-03-31 09:54:40 -04:00
Stephen Toub
62e92fa154
Add ToolAnnotations support ( #124 )
...
* Add ToolAnnotations support
* Address feedback
2025-03-28 11:08:29 -04:00
Stephen Toub
2c1672cc1a
Fix some issues with Native AOT ( #130 )
...
* Fix some issues with Native AOT
- An anonymous type was being used in McpClient for the initialize result message. Switched to use the type for that purpose that already existed.
- A bunch of the request params / result types were not in the source context or referenced from types that were or from custom converters. Added all the request/result types to the context.
- Improved the warning message for WithTools.
2025-03-28 09:50:56 -04:00
Aaron Powell
3c72c348d6
Adding support for returning collections from tools ( #116 )
...
* Adding support for returning collections from tools
This will mean we can return multiple AIContent objects from a tool, such as a mixed text/image set
Contributes to #68
* Code review feedback
* Adding tests and some more cases
* More cases in switch and tests
2025-03-27 00:25:25 -04:00
Stephen Toub
b61cdef994
Add [McpServerTool] support for instance methods ( #100 )
...
* Add [McpServerTool] support for instance methods
By popular demand, enables [McpServerTool] on instance methods. The instance is constructed per invocation, using ActivatorUtilities.CreateInstance when possible so that constructor arguments are satisfied from DI.
* Add disposal tests
2025-03-26 09:34:30 -04:00
Stephen Toub
caca2ae61d
Overhaul tool handling ( #89 )
...
* Overhaul tool handling
- Renames [McpTool{Type}] to [McpServerTool{Type}], in order to distinguish representations of tools on the server from tools on the client.
- Enables [McpServerTool] methods to have arguments injected from DI, as well as a specific set of types from the implementation directly, like IMcpServer.
- Renames WithTools to WithToolsFromAssembly.
- All of the WithToolsXx methods now publish each individual McpServerTool into DI; other code can do so as well. The options setup code gathers all of the tools from DI and combines them into a collection which is then stored in McpServerOptions and used to construct the server.
- The server tools specified via DI as well as manually-provided handlers, using CallToolHandler as a fallback in case the requested tool doesn't exist in the tools collection, and ListToolsHandler augments the information for whatever tools exist.
- The tools are stored in McpServerOptions in a new McpServerToolCollection type, which is a thread-safe container that exposes add/removal notification. Adding/removing tools triggers a change notification that in turn sends a notification to the client about a tools update.
- The ServerOptions are exposed from the server instance.
- Removed cursor-based APIs from McpClientExtensions.
- Changed McpClientExtensions APIs to return `Task<IList<...>` rather than `IAsyncEnumerable<...>`.
I'm sure this will need to evolve further before we're "done", but it's a significant improvement from where we are now. One area I'm not super happy with is the notifying collection; that might work ok for a stdio server, where you can grab the created collection from the server's options and mutate it, but I don't know how well that's going to work for sse servers.
* Make McpServerTool{Collection} extensible
* Fix README.md example
* Add notifications test
* Address feedback
2025-03-25 15:32:46 -04:00