Skip to content

Commit 346256d

Browse files
authored
Add support for authorization token and connectors to McpTool (#697)
1 parent 5b4c13b commit 346256d

File tree

46 files changed

+13656
-13422
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+13656
-13422
lines changed

api/OpenAI.net8.0.cs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4898,9 +4898,13 @@ public class FunctionTool : ResponseTool, IJsonModel<FunctionTool>, IPersistable
48984898
}
48994899
[Experimental("OPENAI001")]
49004900
public class McpTool : ResponseTool, IJsonModel<McpTool>, IPersistableModel<McpTool> {
4901+
public McpTool(string serverLabel, McpToolConnectorId connectorId);
49014902
public McpTool(string serverLabel, Uri serverUri);
49024903
public McpToolFilter AllowedTools { get; set; }
4904+
public string AuthorizationToken { get; set; }
4905+
public McpToolConnectorId? ConnectorId { get; set; }
49034906
public IDictionary<string, string> Headers { get; set; }
4907+
public string ServerDescription { get; set; }
49044908
public string ServerLabel { get; set; }
49054909
public Uri ServerUri { get; set; }
49064910
public McpToolCallApprovalPolicy ToolCallApprovalPolicy { get; set; }
@@ -4956,6 +4960,28 @@ public class McpToolCallItem : ResponseItem, IJsonModel<McpToolCallItem>, IPersi
49564960
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
49574961
}
49584962
[Experimental("OPENAI001")]
4963+
public readonly partial struct McpToolConnectorId : IEquatable<McpToolConnectorId> {
4964+
public McpToolConnectorId(string value);
4965+
public static McpToolConnectorId Dropbox { get; }
4966+
public static McpToolConnectorId Gmail { get; }
4967+
public static McpToolConnectorId GoogleCalendar { get; }
4968+
public static McpToolConnectorId GoogleDrive { get; }
4969+
public static McpToolConnectorId MicrosoftTeams { get; }
4970+
public static McpToolConnectorId OutlookCalendar { get; }
4971+
public static McpToolConnectorId OutlookEmail { get; }
4972+
public static McpToolConnectorId SharePoint { get; }
4973+
public readonly bool Equals(McpToolConnectorId other);
4974+
[EditorBrowsable(EditorBrowsableState.Never)]
4975+
public override readonly bool Equals(object obj);
4976+
[EditorBrowsable(EditorBrowsableState.Never)]
4977+
public override readonly int GetHashCode();
4978+
public static bool operator ==(McpToolConnectorId left, McpToolConnectorId right);
4979+
public static implicit operator McpToolConnectorId(string value);
4980+
public static implicit operator McpToolConnectorId?(string value);
4981+
public static bool operator !=(McpToolConnectorId left, McpToolConnectorId right);
4982+
public override readonly string ToString();
4983+
}
4984+
[Experimental("OPENAI001")]
49594985
public class McpToolDefinition : IJsonModel<McpToolDefinition>, IPersistableModel<McpToolDefinition> {
49604986
public McpToolDefinition(string name, BinaryData inputSchema);
49614987
public BinaryData Annotations { get; set; }
@@ -4980,6 +5006,7 @@ public class McpToolDefinitionListItem : ResponseItem, IJsonModel<McpToolDefinit
49805006
}
49815007
[Experimental("OPENAI001")]
49825008
public class McpToolFilter : IJsonModel<McpToolFilter>, IPersistableModel<McpToolFilter> {
5009+
public bool? IsReadOnly { get; set; }
49835010
public IList<string> ToolNames { get; }
49845011
protected virtual McpToolFilter JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
49855012
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
@@ -5053,6 +5080,8 @@ public class OpenAIResponseClient {
50535080
public OpenAIResponseClient(string model, string apiKey);
50545081
[Experimental("OPENAI001")]
50555082
public Uri Endpoint { get; }
5083+
[Experimental("OPENAI001")]
5084+
public string Model { get; }
50565085
public ClientPipeline Pipeline { get; }
50575086
public virtual ClientResult CancelResponse(string responseId, RequestOptions options);
50585087
public virtual ClientResult<OpenAIResponse> CancelResponse(string responseId, CancellationToken cancellationToken = default);
@@ -5491,7 +5520,8 @@ public class ResponseTool : IJsonModel<ResponseTool>, IPersistableModel<Response
54915520
public static ComputerTool CreateComputerTool(ComputerToolEnvironment environment, int displayWidth, int displayHeight);
54925521
public static FileSearchTool CreateFileSearchTool(IEnumerable<string> vectorStoreIds, int? maxResultCount = null, FileSearchToolRankingOptions rankingOptions = null, BinaryData filters = null);
54935522
public static FunctionTool CreateFunctionTool(string functionName, BinaryData functionParameters, bool? strictModeEnabled, string functionDescription = null);
5494-
public static McpTool CreateMcpTool(string serverLabel, Uri serverUri, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
5523+
public static McpTool CreateMcpTool(string serverLabel, McpToolConnectorId connectorId, string authorizationToken = null, string serverDescription = null, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
5524+
public static McpTool CreateMcpTool(string serverLabel, Uri serverUri, string authorizationToken = null, string serverDescription = null, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
54955525
public static WebSearchTool CreateWebSearchTool(WebSearchToolLocation userLocation = null, WebSearchToolContextSize? searchContextSize = null);
54965526
protected virtual ResponseTool JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
54975527
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
@@ -5679,13 +5709,17 @@ public class StreamingResponseMcpCallArgumentsDoneUpdate : StreamingResponseUpda
56795709
}
56805710
[Experimental("OPENAI001")]
56815711
public class StreamingResponseMcpCallCompletedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpCallCompletedUpdate>, IPersistableModel<StreamingResponseMcpCallCompletedUpdate> {
5712+
public string ItemId { get; }
5713+
public int OutputIndex { get; }
56825714
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
56835715
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
56845716
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
56855717
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
56865718
}
56875719
[Experimental("OPENAI001")]
56885720
public class StreamingResponseMcpCallFailedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpCallFailedUpdate>, IPersistableModel<StreamingResponseMcpCallFailedUpdate> {
5721+
public string ItemId { get; }
5722+
public int OutputIndex { get; }
56895723
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
56905724
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
56915725
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
@@ -5702,20 +5736,26 @@ public class StreamingResponseMcpCallInProgressUpdate : StreamingResponseUpdate,
57025736
}
57035737
[Experimental("OPENAI001")]
57045738
public class StreamingResponseMcpListToolsCompletedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsCompletedUpdate>, IPersistableModel<StreamingResponseMcpListToolsCompletedUpdate> {
5739+
public string ItemId { get; }
5740+
public int OutputIndex { get; }
57055741
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
57065742
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
57075743
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
57085744
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
57095745
}
57105746
[Experimental("OPENAI001")]
57115747
public class StreamingResponseMcpListToolsFailedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsFailedUpdate>, IPersistableModel<StreamingResponseMcpListToolsFailedUpdate> {
5748+
public string ItemId { get; }
5749+
public int OutputIndex { get; }
57125750
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
57135751
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
57145752
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
57155753
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
57165754
}
57175755
[Experimental("OPENAI001")]
57185756
public class StreamingResponseMcpListToolsInProgressUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsInProgressUpdate>, IPersistableModel<StreamingResponseMcpListToolsInProgressUpdate> {
5757+
public string ItemId { get; }
5758+
public int OutputIndex { get; }
57195759
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
57205760
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
57215761
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);

api/OpenAI.netstandard2.0.cs

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4304,9 +4304,13 @@ public class FunctionTool : ResponseTool, IJsonModel<FunctionTool>, IPersistable
43044304
public override readonly string ToString();
43054305
}
43064306
public class McpTool : ResponseTool, IJsonModel<McpTool>, IPersistableModel<McpTool> {
4307+
public McpTool(string serverLabel, McpToolConnectorId connectorId);
43074308
public McpTool(string serverLabel, Uri serverUri);
43084309
public McpToolFilter AllowedTools { get; set; }
4310+
public string AuthorizationToken { get; set; }
4311+
public McpToolConnectorId? ConnectorId { get; set; }
43094312
public IDictionary<string, string> Headers { get; set; }
4313+
public string ServerDescription { get; set; }
43104314
public string ServerLabel { get; set; }
43114315
public Uri ServerUri { get; set; }
43124316
public McpToolCallApprovalPolicy ToolCallApprovalPolicy { get; set; }
@@ -4357,6 +4361,27 @@ public class McpToolCallItem : ResponseItem, IJsonModel<McpToolCallItem>, IPersi
43574361
protected override ResponseItem PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
43584362
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
43594363
}
4364+
public readonly partial struct McpToolConnectorId : IEquatable<McpToolConnectorId> {
4365+
public McpToolConnectorId(string value);
4366+
public static McpToolConnectorId Dropbox { get; }
4367+
public static McpToolConnectorId Gmail { get; }
4368+
public static McpToolConnectorId GoogleCalendar { get; }
4369+
public static McpToolConnectorId GoogleDrive { get; }
4370+
public static McpToolConnectorId MicrosoftTeams { get; }
4371+
public static McpToolConnectorId OutlookCalendar { get; }
4372+
public static McpToolConnectorId OutlookEmail { get; }
4373+
public static McpToolConnectorId SharePoint { get; }
4374+
public readonly bool Equals(McpToolConnectorId other);
4375+
[EditorBrowsable(EditorBrowsableState.Never)]
4376+
public override readonly bool Equals(object obj);
4377+
[EditorBrowsable(EditorBrowsableState.Never)]
4378+
public override readonly int GetHashCode();
4379+
public static bool operator ==(McpToolConnectorId left, McpToolConnectorId right);
4380+
public static implicit operator McpToolConnectorId(string value);
4381+
public static implicit operator McpToolConnectorId?(string value);
4382+
public static bool operator !=(McpToolConnectorId left, McpToolConnectorId right);
4383+
public override readonly string ToString();
4384+
}
43604385
public class McpToolDefinition : IJsonModel<McpToolDefinition>, IPersistableModel<McpToolDefinition> {
43614386
public McpToolDefinition(string name, BinaryData inputSchema);
43624387
public BinaryData Annotations { get; set; }
@@ -4379,6 +4404,7 @@ public class McpToolDefinitionListItem : ResponseItem, IJsonModel<McpToolDefinit
43794404
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
43804405
}
43814406
public class McpToolFilter : IJsonModel<McpToolFilter>, IPersistableModel<McpToolFilter> {
4407+
public bool? IsReadOnly { get; set; }
43824408
public IList<string> ToolNames { get; }
43834409
protected virtual McpToolFilter JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
43844410
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
@@ -4446,6 +4472,7 @@ public class OpenAIResponseClient {
44464472
public OpenAIResponseClient(string model, AuthenticationPolicy authenticationPolicy);
44474473
public OpenAIResponseClient(string model, string apiKey);
44484474
public Uri Endpoint { get; }
4475+
public string Model { get; }
44494476
public ClientPipeline Pipeline { get; }
44504477
public virtual ClientResult CancelResponse(string responseId, RequestOptions options);
44514478
public virtual ClientResult<OpenAIResponse> CancelResponse(string responseId, CancellationToken cancellationToken = default);
@@ -4849,7 +4876,8 @@ public class ResponseTool : IJsonModel<ResponseTool>, IPersistableModel<Response
48494876
public static ComputerTool CreateComputerTool(ComputerToolEnvironment environment, int displayWidth, int displayHeight);
48504877
public static FileSearchTool CreateFileSearchTool(IEnumerable<string> vectorStoreIds, int? maxResultCount = null, FileSearchToolRankingOptions rankingOptions = null, BinaryData filters = null);
48514878
public static FunctionTool CreateFunctionTool(string functionName, BinaryData functionParameters, bool? strictModeEnabled, string functionDescription = null);
4852-
public static McpTool CreateMcpTool(string serverLabel, Uri serverUri, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
4879+
public static McpTool CreateMcpTool(string serverLabel, McpToolConnectorId connectorId, string authorizationToken = null, string serverDescription = null, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
4880+
public static McpTool CreateMcpTool(string serverLabel, Uri serverUri, string authorizationToken = null, string serverDescription = null, IDictionary<string, string> headers = null, McpToolFilter allowedTools = null, McpToolCallApprovalPolicy toolCallApprovalPolicy = null);
48534881
public static WebSearchTool CreateWebSearchTool(WebSearchToolLocation userLocation = null, WebSearchToolContextSize? searchContextSize = null);
48544882
protected virtual ResponseTool JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
48554883
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
@@ -5017,12 +5045,16 @@ public class StreamingResponseMcpCallArgumentsDoneUpdate : StreamingResponseUpda
50175045
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
50185046
}
50195047
public class StreamingResponseMcpCallCompletedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpCallCompletedUpdate>, IPersistableModel<StreamingResponseMcpCallCompletedUpdate> {
5048+
public string ItemId { get; }
5049+
public int OutputIndex { get; }
50205050
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50215051
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
50225052
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
50235053
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
50245054
}
50255055
public class StreamingResponseMcpCallFailedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpCallFailedUpdate>, IPersistableModel<StreamingResponseMcpCallFailedUpdate> {
5056+
public string ItemId { get; }
5057+
public int OutputIndex { get; }
50265058
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50275059
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
50285060
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
@@ -5037,18 +5069,24 @@ public class StreamingResponseMcpCallInProgressUpdate : StreamingResponseUpdate,
50375069
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
50385070
}
50395071
public class StreamingResponseMcpListToolsCompletedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsCompletedUpdate>, IPersistableModel<StreamingResponseMcpListToolsCompletedUpdate> {
5072+
public string ItemId { get; }
5073+
public int OutputIndex { get; }
50405074
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50415075
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
50425076
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
50435077
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
50445078
}
50455079
public class StreamingResponseMcpListToolsFailedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsFailedUpdate>, IPersistableModel<StreamingResponseMcpListToolsFailedUpdate> {
5080+
public string ItemId { get; }
5081+
public int OutputIndex { get; }
50465082
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50475083
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
50485084
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
50495085
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
50505086
}
50515087
public class StreamingResponseMcpListToolsInProgressUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseMcpListToolsInProgressUpdate>, IPersistableModel<StreamingResponseMcpListToolsInProgressUpdate> {
5088+
public string ItemId { get; }
5089+
public int OutputIndex { get; }
50525090
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
50535091
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
50545092
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);

examples/Responses/Example05_RemoteMcp.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,13 @@ public partial class ResponseExamples
1313
[Test]
1414
public void Example05_RemoteMcp()
1515
{
16-
// This is a dice rolling MCP server.
17-
string serverLabel = "dmcp";
18-
Uri serverUri = new Uri("https://dmcp-server.deno.dev/sse");
19-
20-
McpToolCallApprovalPolicy approvalPolicy = new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval);
21-
2216
ResponseCreationOptions options = new()
2317
{
2418
Tools = {
25-
new McpTool(serverLabel, serverUri)
19+
new McpTool(serverLabel: "dmcp", serverUri: new Uri("https://dmcp-server.deno.dev/sse"))
2620
{
27-
ToolCallApprovalPolicy = approvalPolicy
21+
ServerDescription = "A Dungeons and Dragons MCP server to assist with dice rolling.",
22+
ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval)
2823
}
2924
}
3025
};

0 commit comments

Comments
 (0)