Skip to content

Commit 786d763

Browse files
committed
Make label expansion greedily match multiple values
1 parent 8036ddd commit 786d763

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/ModelContextProtocol.Core/UriTemplate.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@ public static Regex CreateParser(string uriTemplate)
8585
switch (m.Groups["operator"].Value)
8686
{
8787
case "+": AppendExpression(ref pattern, paramNames, null, "[^?&#]*"); break;
88-
case "#": AppendExpression(ref pattern, paramNames, '#', "[^,]*"); break;
89-
case ".": AppendExpression(ref pattern, paramNames, '.', "[^./?#]*"); break;
88+
case "#": AppendExpression(ref pattern, paramNames, '#', ".*"); break;
89+
case ".": AppendExpression(ref pattern, paramNames, '.', "[^/?#]*"); break;
9090
case "/": AppendExpression(ref pattern, paramNames, '/', "[^/?#]*"); break;
91-
case ";": AppendPathParameterExpression(ref pattern, paramNames); break;
9291
default: AppendExpression(ref pattern, paramNames, null, "[^/?&#]*"); break;
9392

9493
case "?": AppendQueryExpression(ref pattern, paramNames, '?'); break;
9594
case "&": AppendQueryExpression(ref pattern, paramNames, '&'); break;
95+
case ";": AppendPathParameterExpression(ref pattern, paramNames); break;
9696
}
9797
}
9898

tests/ModelContextProtocol.Tests/Configuration/McpServerResourceRoutingTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using ModelContextProtocol.Protocol;
44
using ModelContextProtocol.Server;
55

6-
namespace ModelContextProtocol.Tests;
6+
namespace ModelContextProtocol.Tests.Configuration;
77

88
/// <summary>
99
/// Test suite for UriTemplate.CreateParser method.
@@ -383,14 +383,14 @@ await AssertMatchAsync(
383383
/// FIXED BUG: Label expansion with multiple variables should use dot as separator.
384384
/// </summary>
385385
[Fact]
386-
public async Task LabelExpansion_MatchesMultipleValues()
386+
public async Task LabelExpansion_GreedilyMatchesMultipleValues()
387387
{
388388
// FIXED: {.x,y} should match .1024.768 (dot separated)
389389
await AssertMatchAsync(
390390
uriTemplate: "test://www{.x,y}",
391391
method: (string x, string y) => $"x:{x},y:{y}",
392392
uri: "test://www.example.com",
393-
expectedResult: "x:example,y:com");
393+
expectedResult: "x:example.com,y:");
394394
}
395395

396396
[Fact]

0 commit comments

Comments
 (0)