diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4c36120..dbdf26d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -2,14 +2,14 @@
true
10.0.0-preview.2.25163.2
- 9.3.0-preview.1.25161.3
+ 9.4.0-preview.1.25207.5
-
+
-
+
@@ -18,15 +18,15 @@
-
+
-
-
-
+
+
+
@@ -49,11 +49,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/samples/ChatWithTools/Program.cs b/samples/ChatWithTools/Program.cs
index 355a802..dd09a7c 100644
--- a/samples/ChatWithTools/Program.cs
+++ b/samples/ChatWithTools/Program.cs
@@ -25,7 +25,7 @@ Console.WriteLine();
// Create an IChatClient. (This shows using OpenAIClient, but it could be any other IChatClient implementation.)
// Provide your own OPENAI_API_KEY via an environment variable.
using IChatClient chatClient =
- new OpenAIClient(Environment.GetEnvironmentVariable("OPENAI_API_KEY")).AsChatClient("gpt-4o-mini")
+ new OpenAIClient(Environment.GetEnvironmentVariable("OPENAI_API_KEY")).GetChatClient("gpt-4o-mini").AsIChatClient()
.AsBuilder().UseFunctionInvocation().Build();
// Have a conversation, making all tools available to the LLM.
diff --git a/src/ModelContextProtocol/Client/McpClientTool.cs b/src/ModelContextProtocol/Client/McpClientTool.cs
index 9dfee5a..5d3364c 100644
--- a/src/ModelContextProtocol/Client/McpClientTool.cs
+++ b/src/ModelContextProtocol/Client/McpClientTool.cs
@@ -2,12 +2,20 @@
using ModelContextProtocol.Utils.Json;
using Microsoft.Extensions.AI;
using System.Text.Json;
+using System.Collections.ObjectModel;
namespace ModelContextProtocol.Client;
/// Provides an AI function that calls a tool through .
public sealed class McpClientTool : AIFunction
{
+ /// Additional properties exposed from tools.
+ private static readonly ReadOnlyDictionary s_additionalProperties =
+ new(new Dictionary()
+ {
+ ["Strict"] = false, // some MCP schemas may not meet "strict" requirements
+ });
+
private readonly IMcpClient _client;
private readonly string _name;
private readonly string _description;
@@ -62,14 +70,13 @@ public sealed class McpClientTool : AIFunction
public override JsonSerializerOptions JsonSerializerOptions { get; }
///
- protected async override Task