The official C# SDK for Model Context Protocol servers and clients. Maintained in collaboration with Microsoft.
This report summarizes scanner evidence for modelcontextprotocol/csharp-sdk, a C# project with 4,576 GitHub stars. SynthScan examined 139,246 lines of code across 816 source files, recording 933 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 7.7 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 895 finding(s).
Are imports declared and package/API names verified? 21 finding(s).
Are wrappers, guards, and repeated structures necessary? 18 finding(s).
Which changes need focused human review? 933 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 933 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/ModelContextProtocol.Tests/ClientIntegrationTests.cs | 421 | // new() { Uri = "file:///test/root2", Name = "Test Root 2" } | COMMENT |
| LOW | …extProtocol.Tests/ExperimentalInternalPropertyTests.cs | 21 | // [Experimental] properties on stable protocol types must use the internal property | COMMENT |
| LOW | tests/ModelContextProtocol.Tests/TestAttributes.cs | 1 | // Uncomment to disable parallel test execution for the whole assembly | COMMENT |
| LOW | …lContextProtocol.Tests/Server/MrtrSessionLimitTests.cs | 21 | /// </summary> | COMMENT |
| LOW | …l.Tests/Server/ProtocolVersionResultDecorationTests.cs | 1 | using Microsoft.Extensions.DependencyInjection; | COMMENT |
| LOW | …otocol.Tests/Server/July2026ProtocolBackcompatTests.cs | 1 | using Microsoft.Extensions.DependencyInjection; | COMMENT |
| LOW | …rotocol.Tests/Client/McpClientResourceTemplateTests.cs | 101 | public IList<List<JsonElement>> TestCases { get; set; } = []; | COMMENT |
| LOW | ….Tests/Client/July2026ProtocolListMetaEmissionTests.cs | 1 | using Microsoft.Extensions.DependencyInjection; | COMMENT |
| LOW | …lContextProtocol.AspNetCore.Tests/MrtrProtocolTests.cs | 241 | COMMENT | |
| LOW | …l.AspNetCore.Tests/ResumabilityIntegrationTestsBase.cs | 21 | /// <remarks> | COMMENT |
| LOW | …l.AspNetCore.Tests/ResumabilityIntegrationTestsBase.cs | 41 | /// <summary> | COMMENT |
| LOW | …tProtocol.AspNetCore.Tests/ConformanceServerFixture.cs | 1 | using System.Diagnostics; | COMMENT |
| LOW | ….Tests/DistributedCacheResumabilityIntegrationTests.cs | 1 | using Microsoft.Extensions.Caching.Distributed; | COMMENT |
| LOW | …extProtocol.AspNetCore.Tests/ClientConformanceTests.cs | 201 | } | COMMENT |
| LOW | …xtProtocol.AspNetCore.Tests/CachingConformanceTests.cs | 1 | using ModelContextProtocol.Tests.Utils; | COMMENT |
| LOW | …extProtocol.AspNetCore.Tests/ServerConformanceTests.cs | 81 | $"Conformance test failed.\n\nStdout:\n{result.Output}\n\nStderr:\n{result.Error}"); | COMMENT |
| LOW | ….AspNetCore.Tests/July2026ProtocolHttpFallbackTests.cs | 21 | /// on a 2026-07-28 probe; vanilla Go does the same on <c>POST /</c>) so the client's HTTP-fallback | COMMENT |
| LOW | …tocol.AspNetCore.Tests/ResumabilityIntegrationTests.cs | 1 | using System.Net.ServerSentEvents; | COMMENT |
| LOW | ….Tests/OAuth/IdentityAssertionGrantIntegrationTests.cs | 1 | using Microsoft.Extensions.DependencyInjection; | COMMENT |
| LOW | tests/Common/Utils/NodeHelpers.cs | 201 | /// <c>http-custom-headers</c> scenario. Prereleases 0.2.0-alpha.5 through 0.2.0-alpha.7 | COMMENT |
| LOW | tests/Common/Utils/TestConstants.cs | 1 | namespace ModelContextProtocol.Tests.Utils; | COMMENT |
| LOW | …rotocol.TestOAuthServer/AuthorizationServerMetadata.cs | 41 | /// Gets or sets the grant types supported by this server. | COMMENT |
| LOW | …sts/ModelContextProtocol.TestOAuthServer/ClientInfo.cs | 21 | /// Gets or sets the client secret. | COMMENT |
| LOW | …ntextProtocol.TestOAuthServer/AuthorizationCodeInfo.cs | 21 | /// Gets or sets the code challenge associated with this authorization code (for PKCE). | COMMENT |
| LOW | …ContextProtocol.TestOAuthServer/OAuthServerMetadata.cs | 41 | /// Gets or sets the registration endpoint URL for dynamic client registration. | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/TokenInfo.cs | 21 | /// Gets or sets the issued time of this token. | COMMENT |
| LOW | …xtProtocol.TestOAuthServer/JagTokenExchangeResponse.cs | 1 | using System.Text.Json.Serialization; | COMMENT |
| LOW | …tProtocol.TestOAuthServer/ClientRegistrationRequest.cs | 41 | /// Gets or sets the URL of the client's home page. | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/Program.cs | 61 | /// <summary> | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/Program.cs | 81 | public bool ClientIdMetadataDocumentSupported { get; set; } = true; | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/Program.cs | 101 | /// </remarks> | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/Program.cs | 121 | /// </summary> | COMMENT |
| LOW | tests/ModelContextProtocol.TestOAuthServer/Program.cs | 141 | /// <summary>Gets the number of authorization-code token exchange requests received.</summary> | COMMENT |
| LOW | .github/workflows/release.yml | 1 | # Publish new package versions of ModelContextProtocol | COMMENT |
| LOW | .github/workflows/codeql.yml | 41 | # Use `c-cpp` to analyze code written in C, C++ or both | COMMENT |
| LOW | .github/workflows/codeql.yml | 61 | with: | COMMENT |
| LOW | …Protocol.Extensions.Apps/Server/McpUiToolVisibility.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | …ontextProtocol.Extensions.Apps/Server/McpUiToolMeta.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | …ontextProtocol.Extensions.Apps/Server/McpUiToolMeta.cs | 21 | /// </summary> | COMMENT |
| LOW | …xtProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs | 1 | using ModelContextProtocol.Protocol; | COMMENT |
| LOW | …xtProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs | 21 | /// </para> | COMMENT |
| LOW | …xtProtocol.Extensions.Apps/Server/McpAppUiAttribute.cs | 41 | /// Gets or sets the URI of the UI resource associated with this tool. | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 1 | using ModelContextProtocol.Protocol; | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 21 | /// the connected client supports the MCP Apps extension. | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 41 | /// <summary> | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 61 | private static JsonSerializerOptions CreateSerializerOptions() | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 121 | /// <param name="appUi">The UI metadata to apply.</param> | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 201 | /// For each tool that has a <see cref="McpAppUiAttribute"/> in its <see cref="McpServerTool.Metadata"/>, | COMMENT |
| LOW | …ModelContextProtocol.Extensions.Apps/Server/McpApps.cs | 221 | } | COMMENT |
| LOW | …col.Extensions.Apps/Server/McpUiResourcePermissions.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | …extProtocol.Extensions.Apps/Server/McpUiResourceCsp.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | …extProtocol.Extensions.Apps/Server/McpUiResourceCsp.cs | 21 | { | COMMENT |
| LOW | …xtProtocol.Extensions.Apps/Server/McpUiResourceMeta.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | …xtProtocol.Extensions.Apps/Server/McpUiResourceMeta.cs | 21 | /// Specifies the allowed origins for network requests, resource loads, and nested frames. | COMMENT |
| LOW | …col.Extensions.Apps/Server/McpAppsBuilderExtensions.cs | 21 | /// <para> | COMMENT |
| LOW | …ocol.Extensions.Apps/Server/McpUiClientCapabilities.cs | 1 | using System.Diagnostics.CodeAnalysis; | COMMENT |
| LOW | src/ModelContextProtocol.Core/McpJsonUtilities.cs | 21 | /// </para> | COMMENT |
| LOW | …ModelContextProtocol.Core/ProgressNotificationValue.cs | 1 | namespace ModelContextProtocol; | COMMENT |
| LOW | src/ModelContextProtocol.Core/McpException.cs | 1 | using ModelContextProtocol.Protocol; | COMMENT |
| LOW | src/ModelContextProtocol.Core/McpException.cs | 21 | /// | COMMENT |
| 758 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | samples/ProtectedMcpServer/README.md | 21 | ### Step 1: Start the Test OAuth Server | COMMENT |
| LOW | samples/ProtectedMcpServer/README.md | 32 | ### Step 2: Start the Protected MCP Server | COMMENT |
| LOW | samples/ProtectedMcpServer/README.md | 43 | ### Step 3: Test with Protected MCP Client | COMMENT |
| LOW | samples/ProtectedMcpClient/README.md | 21 | ### Step 1: Start the Test OAuth Server | COMMENT |
| LOW | samples/ProtectedMcpClient/README.md | 32 | ### Step 2: Start the Protected MCP Server | COMMENT |
| LOW | samples/ProtectedMcpClient/README.md | 43 | ### Step 3: Run the Protected MCP Client | COMMENT |
| LOW | .github/skills/breaking-changes/SKILL.md | 25 | ### Step 1: Examine Every PR | COMMENT |
| LOW⚡ | .github/skills/breaking-changes/SKILL.md | 38 | ### Step 2: Assess Impact | COMMENT |
| LOW⚡ | .github/skills/breaking-changes/SKILL.md | 47 | ### Step 3: Reconcile Labels | COMMENT |
| LOW⚡ | .github/skills/breaking-changes/SKILL.md | 56 | ### Step 4: Present Results | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 19 | ### Step 0: Sync With Upstream | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 32 | ### Step 1: Identify the Prepare-Release PR | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 44 | ### Step 2: Determine Version and Commit Range | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 50 | ### Step 3: Check for Additional PRs | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 76 | ### Step 4: Refresh Release Notes | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 87 | ### Step 5: Review README and Validate Code Samples | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 123 | ### Step 6: Review Sections | COMMENT |
| LOW⚡ | .github/skills/publish-release/SKILL.md | 135 | ### Step 7: Preamble | COMMENT |
| LOW⚡ | .github/skills/publish-release/SKILL.md | 143 | ### Step 8: Final Assembly | COMMENT |
| LOW⚡ | .github/skills/publish-release/SKILL.md | 151 | ### Step 9: Create Draft Release | COMMENT |
| LOW | .github/skills/publish-release/SKILL.md | 194 | ### Step 10: Watch for Publication | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 27 | ### Step 1: Fetch SDK Tier 1 SLA Criteria | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 38 | ### Step 2: Fetch All Open Issues | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 48 | ### Step 3: Classify Triage Status | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 68 | ### Step 4: Identify Issues Needing Attention | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 87 | ### Step 5: Deep-Dive Review of Attention Items | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 127 | ### Step 6: Cross-SDK Analysis | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 138 | ### Step 7: Generate Report | COMMENT |
| LOW | .github/skills/issue-triage/SKILL.md | 148 | ### Step 8: Present Summary | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 21 | ### Step 0: Sync With Upstream | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 42 | ### Step 1: Select Source Branch | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 57 | ### Step 2: Determine Target and Gather PRs | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 80 | ### Step 3: Categorize and Attribute | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 103 | ### Step 4: Breaking Change Audit | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 109 | ### Step 5: Assess Release Version | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 126 | ### Step 6: Create Release Branch and Bump Version | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 139 | ### Step 7: Run API Compatibility Check | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 159 | ### Step 8: Generate API Diff Report | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 170 | ### Step 9: Review and Update Documentation | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 193 | ### Step 10: Draft Release Notes | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 255 | ### Step 11: Commit Changes | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 263 | ### Step 12: Present Release Summary | COMMENT |
| LOW | .github/skills/prepare-release/SKILL.md | 294 | ### Step 13: Push Branch and Create Pull Request | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 30 | ### Step 1: Identify the Release | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 48 | ### Step 2: Locate Both Workflow Runs | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 79 | ### Step 3: Evaluate the Release Workflow | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 95 | ### Step 4: Evaluate the Publish Docs Workflow | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 119 | ### Step 5: Confirm the Published Packages | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 129 | ### Step 6: Confirm the Documentation Site | COMMENT |
| LOW | .github/skills/verify-release/SKILL.md | 148 | ### Step 7: Report | COMMENT |
| LOW | .github/skills/bump-version/SKILL.md | 17 | ### Step 1: Read Current Version and Previous Release | COMMENT |
| LOW | .github/skills/bump-version/SKILL.md | 27 | ### Step 2: Assess and Determine Next Version | COMMENT |
| LOW | .github/skills/bump-version/SKILL.md | 59 | ### Step 3: Create Pull Request | COMMENT |
| LOW | .github/skills/bump-version/SKILL.md | 72 | ### Step 4: Confirm | COMMENT |
| LOW⚡ | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 168 | // Step 1: Discover MCP authorization server metadata to find the token endpoint | COMMENT |
| LOW⚡ | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 176 | // Step 2: Call the ID token callback to get the caller's OIDC ID token | COMMENT |
| LOW | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 191 | // Step 3: RFC 8693 token exchange — ID token → JWT Authorization Grant (JAG) at the enterprise IdP | COMMENT |
| LOW | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 207 | // Step 4: RFC 7523 JWT bearer grant — JAG → access token at the MCP authorization server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …otocol.Tests/Server/Sep2106ListToolsBackCompatTests.cs | 0 | {"type":["object","null"],"properties":{"name":{"type":"string"}}} | STRING |
| HIGH | …odelContextProtocol.Tests/Server/McpServerToolTests.cs | 0 | {"type":["object","null"],"properties":{"name":{"type":"string"}}} | STRING |
| HIGH | tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs | 0 | {"type":["object","null"],"properties":{"name":{"type":"string"}}} | STRING |
| HIGH | samples/ProtectedMcpServer/Tools/WeatherTools.cs | 0 | event: {properties.getproperty("event").getstring()} area: {properties.getproperty("areadesc").getstring()} severity: {p | STRING |
| HIGH | samples/AspNetCoreMcpServer/Tools/WeatherTools.cs | 0 | event: {properties.getproperty("event").getstring()} area: {properties.getproperty("areadesc").getstring()} severity: {p | STRING |
| HIGH | samples/QuickstartWeatherServer/Tools/WeatherTools.cs | 0 | event: {properties.getproperty("event").getstring()} area: {properties.getproperty("areadesc").getstring()} severity: {p | STRING |
| HIGH | samples/ProtectedMcpServer/Tools/WeatherTools.cs | 0 | {period.getproperty("name").getstring()} temperature: {period.getproperty("temperature").getint32()}°f wind: {period.get | STRING |
| HIGH | samples/AspNetCoreMcpServer/Tools/WeatherTools.cs | 0 | {period.getproperty("name").getstring()} temperature: {period.getproperty("temperature").getint32()}°f wind: {period.get | STRING |
| HIGH | samples/QuickstartWeatherServer/Tools/WeatherTools.cs | 0 | {period.getproperty("name").getstring()} temperature: {period.getproperty("temperature").getint32()}°f wind: {period.get | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 24 | // ──── A1: Basic Elicitation ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 55 | // ──── A2: Basic Sampling ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 85 | // ──── A3: Basic ListRoots ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 104 | // ──── B1: requestState round-trip ─────────────────────────────────────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 139 | // ──── B2: Multiple input requests in one round ────────────────────────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 181 | // ──── B3: Multi-round (R1 -> incomplete, R2 -> incomplete (new state), R3 -> complete) ───── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 268 | // ──── A12: Tampered requestState rejection (integrity protection) ─────── | COMMENT |
| MEDIUM | …tocol.ConformanceServer/Tools/IncompleteResultTools.cs | 310 | // ──── A13: Respect client capabilities ────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …xtProtocol.Core/Protocol/CreateMessageRequestParams.cs | 37 | /// Gets or sets the maximum number of tokens to generate in the LLM response, as requested by the server. | COMMENT |
| HIGH | …xtProtocol.Core/Protocol/CreateMessageRequestParams.cs | 127 | /// Gets or sets the temperature to use for sampling, as requested by the server. | COMMENT |
| HIGH | src/ModelContextProtocol.Core/Protocol/PromptMessage.cs | 50 | /// messages represent responses generated by AI models. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …rotocol.AspNetCore.Tests/HttpHeaderConformanceTests.cs | 74 | TypeInfoResolver = new System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver() | CODE |
| CRITICAL | …delContextProtocol.AspNetCore.Tests/OAuth/AuthTests.cs | 2015 | proxyRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse(co | STRING |
| CRITICAL | …delContextProtocol.AspNetCore.Tests/OAuth/AuthTests.cs | 2117 | proxyRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse(co | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …otocol.Tests/Server/Sep2106ListToolsBackCompatTests.cs | 350 | WorkPhones = [new() { Number = "555-0100", Type = "work" }], | CODE |
| LOW | …otocol.Tests/Server/Sep2106ListToolsBackCompatTests.cs | 351 | HomePhones = [new() { Number = "555-0200", Type = "home" }], | CODE |
| LOW | …lContextProtocol.Tests/Server/McpMetaAttributeTests.cs | 218 | var attr = new McpMetaAttribute("key", "placeholder") | CODE |
| LOW | …ontextProtocol.Tests/Protocol/ElicitationTypedTests.cs | 381 | string Name = "John Doe", | STRING |
| LOW | …ontextProtocol.Tests/Protocol/ElicitationTypedTests.cs | 414 | Assert.Equal("John Doe", nameSchema.Default); | STRING |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 16 | Default = "John Doe" | CODE |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 26 | Assert.Equal("John Doe", stringSchema.Default); | CODE |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 164 | Default = "user@example.com" | CODE |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 174 | Assert.Equal("user@example.com", stringSchema.Default); | CODE |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 319 | Default = "John Doe" | CODE |
| LOW | …otocol.Tests/Protocol/ElicitationDefaultValuesTests.cs | 392 | Assert.Equal("John Doe", nameSchema.Default); | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationClientDefaultsTests.cs | 23 | ["name"] = new ElicitRequestParams.StringSchema { Description = "Name", Default = "John Doe" }, | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationClientDefaultsTests.cs | 58 | Assert.Equal("John Doe", rawResult.Content["name"].GetString()); | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationClientDefaultsTests.cs | 84 | Assert.Equal("John Doe", rawResult.Content["name"].GetString()); | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationServerDefaultsTests.cs | 19 | ["name"] = new ElicitRequestParams.StringSchema { Description = "Name", Default = "John Doe" }, | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationServerDefaultsTests.cs | 53 | Assert.Equal("John Doe", result.Content["name"].GetString()); | CODE |
| LOW | …tocol.Tests/Protocol/ElicitationServerDefaultsTests.cs | 83 | Assert.Equal("John Doe", result.Content["name"].GetString()); | CODE |
| LOW | …xtProtocol.ConformanceServer/Tools/ConformanceTools.cs | 269 | Default = "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ….Tests/Transport/HttpClientTransportAutoDetectTests.cs | 335 | // We don't pin the exact exception type so this stays robust to future error-shape tweaks, | COMMENT |
| MEDIUM | src/ModelContextProtocol.Core/AIContentExtensions.cs | 270 | /// content types, enabling seamless integration between the protocol and AI client libraries. | COMMENT |
| MEDIUM | src/ModelContextProtocol.Core/AIContentExtensions.cs | 316 | /// content types, enabling seamless integration between the protocol and AI client libraries. | COMMENT |
| MEDIUM | …c/ModelContextProtocol.Core/Protocol/RequestMethods.cs | 92 | /// This request allows servers to utilize an LLM available on the client side to generate text or image responses | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/concepts/getting-started.md | 30 | > You can also use the [MCP Server project template](https://learn.microsoft.com/dotnet/ai/quickstarts/build-mcp-server) | CODE |
| MEDIUM | docs/concepts/progress/progress.md | 25 | The C# SDK registers an instance of <xref:ModelContextProtocol.Server.McpServer> with the dependency injection container | CODE |
| MEDIUM | docs/concepts/elicitation/elicitation.md | 20 | The C# SDK registers an instance of <xref:ModelContextProtocol.Server.McpServer> with the dependency injection container | CODE |
| MEDIUM | .github/workflows/docs.yml | 53 | # orchestration scripts and picker assets current with main. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …lContextProtocol.Tests/Protocol/ImplementationTests.cs | 17 | Description = "A test MCP server implementation for demonstration purposes", | CODE |
| MEDIUM | …les/AspNetCoreMcpPerSessionTools/Tools/UserInfoTool.cs | 15 | // Dummy user information for demonstration purposes | COMMENT |
| MEDIUM | .github/workflows/codeql.yml | 46 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 168 | // Step 1: Discover MCP authorization server metadata to find the token endpoint | COMMENT |
| LOW⚡ | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 176 | // Step 2: Call the ID token callback to get the caller's OIDC ID token | COMMENT |
| LOW | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 191 | // Step 3: RFC 8693 token exchange — ID token → JWT Authorization Grant (JAG) at the enterprise IdP | COMMENT |
| LOW | ….Core/Authentication/IdentityAssertionGrantProvider.cs | 207 | // Step 4: RFC 7523 JWT bearer grant — JAG → access token at the MCP authorization server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ContextProtocol.Core/Server/McpServerRequestHandler.cs | 20 | public sealed class McpServerRequestHandler | CODE |