Commit graph csharp-sdk/README.MD
Author SHA1 Message Date
Jeff Handley
259f11af8a
Set up package publishing for daily, manual, and release builds (#118)
* Set up a root artifacts folder for all build/test/pack output

Update CI TestResults folder

* Update package Authors and Copyright

* Lower-case extension on README.md

* Move package props to src folder. Use Version prefix and suffix props.

* Set up package publishing for daily, manual, and release builds

* Only run publishing jobs to the modelcontextprotocol/csharp-sdk repo

* Fix condition on docs workflow

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update preview wording in README to apply to the package too

* Verify packaging succeeds in the CI workflow

* Allow a version suffix override in release workflow.

* De-dupe the README between the repo and the NuGet package

* New CI work

* Do not reuse the CI workflow for releases so we can build without tests.

* Add a release process doc

* Fix bug in publishing; needs checkout step. Update comment for publish.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-03-27 15:08:19 -07:00
Stephen Halter
4a53f6f6d0
List tools from DI once (#115)
* List tools from DI once

- Follow best practice to not mutate options outside of IConfigureOptions
- Long-term, we should move the repeated work from SetToolsHandler into
  an IPostConfigureOptions service or IMcpServerConnectionFactory

* Add Can_Create_Multiple_Servers_From_Options_And_List_Registered_Tools

* Flip stdin and stdout in StreamClientTransport

* s/McpToolType/McpServerToolType

* Clarify stdin and stdout refers to server process in StreamClientTransport

* fixup
2025-03-27 07:26:14 -04:00
Tim Heuer
4b70bc7e16
Add package installation (#101)
Add package installation snippet
2025-03-25 21:35:04 -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
Eirik Tsarpalis
aafa9d929d
Add links to API docs from README.md (#96) 2025-03-25 15:55:57 +00:00
Mike Kistler
ed079b9711
Add acknowledgements to README (#94)
* Add acknowledgements to README

* Apply suggestions from PR review.

Co-authored-by: Stephen Toub <stoub@microsoft.com>

---------

Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-03-25 10:31:20 -04:00
Stephen Toub
729e688b25
Make client config optional to McpClientFactory.CreateAsync (#65)
* Make client config optional to McpClientFactory.CreateAsync

Unless you're specifying capabilities (sampling/rooting) or need a specific client name/version, the client information can be inferred from the assembly, simplifying the getting-started experience.

* Cache default options

* Update src/ModelContextProtocol/Client/McpClientFactory.cs

Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>

---------

Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
2025-03-24 11:01:13 -04:00
Stephen Toub
54e60fe7a2
Update README.MD (#58) 2025-03-21 22:14:49 -04:00
Eirik Tsarpalis
c8c974ada3
Add a markdown link checker (#17)
* Add a markdown link checker

* Fix broken link

* Fix more broken links
2025-03-21 14:29:30 +00:00
Stephen Toub
79b34976ad Fix a few issues in the README 2025-03-19 14:35:08 -04:00
Eirik Tsarpalis
32f5e07254 Update README.md 2025-03-19 15:42:48 +02:00
Eirik Tsarpalis
c9ed453745 Rename project and namespaces 2025-03-19 15:02:38 +02:00
Stephen Toub
4597bbd7c2
Integrate Microsoft.Extensions.AI as a foundational building block (#94)
* Integrate Microsoft.Extensions.AI as a foundational building block

As with logging abstractions coming from M.E.Logging and DI abstractions coming from M.E.DependencyInjection, M.E.AI provides the relevant AI abstractions.

- Adds AsAIFunction and GetAIFunctionsAsync methods for getting functions for tools via a client.
- Uses AIFunctionFactory to implement McpServerBuilderExtensions.WithTools.
- Adds a RequestSamplingAsync overload that accepts ChatMessages/Options.
- Adds an AsSamplingChatClient method that provides an IChatClient usable on the server to request sampling of the client.
- Adds a CreateSamplingHandler method to enable an IChatClient to be easily used to satisfy sampling requests on the client.
- Deprecate McpDotNet.Extensions.AI.

* Address PR feedback
2025-03-17 16:34:00 -04:00
Stephen Toub
08b0a04dab
Overhaul McpClientFactory/McpServerFactory (#87)
Handlers are now specified before connecting the client/server. Otherwise, race conditions exist. Handlers move into being a part of the McpClientOptions/McpServerOptions, so that they're provided to the factories. Where relevant, the handlers are specified as part of the capability descriptors, so that they go hand in hand.

The factories are no longer stateful. Instead of allocating a factory and then calling a create method on it, you just call a static factory method.
2025-03-16 12:08:52 -04:00
Stephen Toub
2c852f0757
Update README to work with latest code (#70) 2025-03-13 12:50:37 -04:00
Toni Wenzel
ec9bdfcf5d
Improve tool handling (#28)
* Improve tool handling

* Rework stuff with new hosting options

* Update readme

* Fix build

* Try run client tests

* Fix build

* Fix issues on linux

* Try to run testserver on linux

* Fix test issue

* Fix code smells
2025-03-07 16:48:55 +01:00
Toni Wenzel
7d69499ad5
Remove warnings from build (#29)
* Remove warnings from build

* More fixes.

* Using const for transport types
2025-03-06 21:02:13 +01:00
Toni Wenzel
80daa5b73d
Add ci build workflow (#31)
* Add ci build workflow

* Using cake build

* Update readme
2025-03-06 20:49:59 +01:00
Peder Holdgaard Pedersen
89c4913ed7
Microsoft.Extensions.AI.Abstractions integration (#25)
* MEAI integration
* README and xmldocs
2025-02-23 13:23:56 +01:00
Peder Holdgaard Pedersen
502a09d9fc
Linux-related stdio fixes and update version (#22)
- Modified `GetCommand` to return OS-specific commands and changed return type to `string?`.
- Improved `InitializeCommand` for better command initialization and logging.
- Cleaned up using directives in `Log.cs` and `SseClientTransport.cs`.
- Updated `CreateNoWindow` property in `StdioClientTransport` to be OS-dependent.
- Bumped version number in `mcpdotnet.csproj` to 1.0.1.1.
2025-02-19 19:52:56 +01:00
Peder Holdgaard Pedersen
535d342367
Update README.MD (#21) 2025-02-08 17:15:04 +01:00
Peder Holdgaard Pedersen
c99076094f
Update README.MD (#20) 2025-02-08 17:14:29 +01:00
Peder Holdgaard Pedersen
8fe797e1f3
Server support (stdio) (#19)
* Server support (stdio)
* TestServer project
* Refactored McpClient class to extract shared endpoint logic (with McpServer) to a base class, McpJsonRpcEndpoint.
* Improved xmldoc comments for protocol types, mirroring specification schema comments.
* Update README.MD
2025-02-08 16:21:26 +01:00
Peder Holdgaard Pedersen
86f1edfe38
Server instructions added to IMcpClient (#17) 2025-01-24 20:36:05 +01:00
Peder Holdgaard Pedersen
107c7acc8f
Completion support (#15) 2025-01-19 12:59:21 +01:00
Peder Holdgaard Pedersen
3e35efe79c
Reorganize folders, samples, minor bug fix (#14)
Reorganize folders
Samples
Casing fixes
2025-01-18 12:34:13 +01:00
Peder Holdgaard Pedersen
e51c78e5e4
SSE Transport Support (#13)
* First iteration

* Tests

* SSE support
2025-01-12 16:35:39 +01:00
Peder Holdgaard Pedersen
e5abb4bb8e
Roots capability support (#12)
Notification sending support
2025-01-09 21:10:29 +01:00
Peder Holdgaard Pedersen
4b8df6638e
Logging (#11)
* Logging
Fixed bug in stdio transport argument promotion

* Logging
Fixed bug in stdio transport argument promotion

* Version bump
2025-01-09 19:39:11 +01:00
Bradley Grainger
67bcba5af4
Fix example in Getting Started docs. (#10)
The variable name was misspelt. Additionally, use collection expression syntax to simplify the example.
2025-01-07 19:43:28 +01:00
Peder Holdgaard Pedersen
80c31fb91b
Badge (#9) 2025-01-06 16:45:09 +01:00
Peder Holdgaard Pedersen
f862dc338f
Update README (#8) 2025-01-05 20:13:47 +01:00
Peder Holdgaard Pedersen
c9ace236a0
Resource capability (#5)
Prompt capability
Pagination support
2025-01-04 19:39:22 +01:00
Peder Holdgaard Pedersen
85cefc23ff
Code example (#4) 2025-01-04 13:32:13 +01:00
PederHP
fdbd94b3f9 Initial commit 2024-12-30 20:30:31 +01:00