-
Notifications
You must be signed in to change notification settings - Fork 590
Add request options bag to high level requests and include Meta #970
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
0d321f8
Add RequestOptions with meta to high-level client methods
mikekistler 65b53f6
Little fixes for rebase to latest main
mikekistler 5e00399
Add tests for meta in requests
mikekistler acf8e85
Another meta test
mikekistler 80fbe01
Another meta test
mikekistler 2b54bc8
Apply suggestions from code review
stephentoub 03c724d
Address PR review comments
mikekistler cbc531f
Change McpClientTool.CallAsync to accept RequestOptions
mikekistler 8bc7a06
Update src/ModelContextProtocol.Core/Client/McpClient.Methods.cs
mikekistler 595b4b6
Address PR review feedback
mikekistler 06af40e
Use _meta as backing field for both Meta and ProgressToken
mikekistler fccab7c
Add tests for RequestOptions and fix buggy Meta setter
mikekistler 50fe47a
Merge branch 'main' into mdk/expose-meta
stephentoub 5cf093f
Address my feedback
stephentoub File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
108 changes: 63 additions & 45 deletions
108
src/ModelContextProtocol.Core/Client/McpClient.Methods.cs
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
src/ModelContextProtocol.Core/Protocol/PingRequestParams.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| namespace ModelContextProtocol.Protocol; | ||
|
|
||
| /// <summary> | ||
| /// Represents the parameters used with a <see cref="RequestMethods.Ping"/> request to verify | ||
| /// server connectivity. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// The server responds with a <see cref="PingResult"/>. | ||
| /// See the <see href="https://github.com/modelcontextprotocol/specification/blob/main/schema/">schema</see> for details. | ||
| /// </remarks> | ||
| public sealed class PingRequestParams : RequestParams; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| using System.Text.Json; | ||
| using System.Text.Json.Nodes; | ||
| using ModelContextProtocol.Protocol; | ||
|
|
||
| namespace ModelContextProtocol; | ||
|
|
||
| /// <summary> | ||
| /// Contains optional parameters for MCP requests. | ||
| /// </summary> | ||
| public sealed class RequestOptions | ||
| { | ||
| /// <summary> | ||
| /// Optional metadata to include in the request. | ||
| /// </summary> | ||
| private JsonObject? _meta; | ||
|
|
||
| /// <summary> | ||
| /// Initializes a new instance of the <see cref="RequestOptions"/> class. | ||
| /// </summary> | ||
| public RequestOptions() | ||
| { | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Optional metadata to include in the request. | ||
| /// When getting, automatically includes the progress token if set. | ||
| /// </summary> | ||
| public JsonObject? Meta | ||
| { | ||
| get => _meta ??= []; | ||
| set | ||
| { | ||
| // Capture the existing progressToken value if set. | ||
| var existingProgressToken = _meta?["progressToken"]; | ||
|
|
||
| if (value is not null) | ||
| { | ||
| if (existingProgressToken is not null) | ||
| { | ||
| value["progressToken"] ??= existingProgressToken; | ||
| } | ||
|
|
||
| _meta = value; | ||
| } | ||
| else if (existingProgressToken is not null) | ||
| { | ||
| _meta = new() | ||
| { | ||
| ["progressToken"] = existingProgressToken, | ||
| }; | ||
| } | ||
| else | ||
| { | ||
| _meta = null; | ||
| } | ||
| } | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// The serializer options governing tool parameter serialization. If null, the default options are used. | ||
| /// </summary> | ||
| public JsonSerializerOptions? JsonSerializerOptions { get; set; } | ||
|
|
||
| /// <summary> | ||
| /// The progress token for tracking long-running operations. | ||
| /// </summary> | ||
| public ProgressToken? ProgressToken | ||
| { | ||
| get | ||
| { | ||
| return _meta?["progressToken"] switch | ||
| { | ||
| JsonValue v when v.TryGetValue(out string? s) => new(s), | ||
| JsonValue v when v.TryGetValue(out long l) => new(l), | ||
| _ => null | ||
| }; | ||
| } | ||
| set | ||
| { | ||
| if (value?.Token is { } token) | ||
| { | ||
| _meta ??= []; | ||
| _meta["progressToken"] = token switch | ||
| { | ||
| string s => s, | ||
| long l => l, | ||
| _ => throw new InvalidOperationException("ProgressToken must be a string or long"), | ||
| }; | ||
| } | ||
| else | ||
| { | ||
| _meta?.Remove("progressToken"); | ||
| } | ||
| } | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.