Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:

# Keep version in sync with McpConformanceVersion in Directory.Packages.props
- name: 📦 Install conformance test runner
run: npm install @modelcontextprotocol/conformance@0.1.10
run: npm install @modelcontextprotocol/conformance@0.1.11
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should go back to testing against the latest version? I know it will be annoying when it causes random PRs to fail, but we'll definitely notice that way. And the InvalidOperationException we'd get from GetConformanceVersion() when they do fall out of sync should be pretty clear.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok by me.

Copy link
Contributor

@halter73 halter73 Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: npm install @modelcontextprotocol/conformance@0.1.11
run: npm install @modelcontextprotocol/conformance

@copilot Also update the message in the InvalidOperationException thrown by GetConformanceVersion() to tell the developer to start pinning the version in ci-build-test.yml and file an issue to update the conformance tests if they run into it.


- name: 🏗️ Build
run: make build CONFIGURATION=${{ matrix.configuration }}
Expand Down
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<MicrosoftExtensionsVersion>10.2.0</MicrosoftExtensionsVersion>
<!-- Pin the conformance tester Node package version for CI stability.
Keep in sync npm install step at ci-build-test.yml -->
<McpConformanceVersion>0.1.10</McpConformanceVersion>
<McpConformanceVersion>0.1.11</McpConformanceVersion>
</PropertyGroup>

<!-- Product dependencies shared -->
Expand Down
1 change: 0 additions & 1 deletion src/Common/Polyfills/System/IO/StreamExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using ModelContextProtocol;
using System.Buffers;
using System.Runtime.InteropServices;
using System.Text;

#if !NET
namespace System.IO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using ModelContextProtocol.Protocol;
using ModelContextProtocol.Server;

namespace ModelContextProtocol.AspNetCore;
Expand Down
19 changes: 19 additions & 0 deletions src/ModelContextProtocol.Core/Authentication/ClientOAuthOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,25 @@ public sealed class ClientOAuthOptions
/// </remarks>
public string? ClientSecret { get; set; }

/// <summary>
/// Gets or sets the private key in PEM format for JWT client assertion (private_key_jwt).
/// </summary>
/// <remarks>
/// When provided along with <see cref="JwtSigningAlgorithm"/>, the client will use JWT client
/// assertion (private_key_jwt) for token endpoint authentication instead of client_secret.
/// This is typically used for machine-to-machine authentication with client_credentials grant.
/// </remarks>
public string? JwtPrivateKeyPem { get; set; }

/// <summary>
/// Gets or sets the signing algorithm for JWT client assertion.
/// </summary>
/// <remarks>
/// Common values include "RS256", "RS384", "RS512", "ES256", "ES384", "ES512".
/// This property is only used when <see cref="JwtPrivateKeyPem"/> is provided.
/// </remarks>
public string? JwtSigningAlgorithm { get; set; }

/// <summary>
/// Gets or sets the HTTPS URL pointing to this client's metadata document.
/// </summary>
Expand Down
Loading
Loading