Skip to content

Commit fb25f49

Browse files
jeffhandleyCopilot
andcommitted
Clean up markdown-link-check workflow and fix stale URLs
- Remove stale ignore rules for anthropic.com and hackerone.com - Add ignore rule for DocFX xref: links that mlc cannot check - Add redirect suppression for learn.microsoft.com locale redirects - Add redirect suppression for modelcontextprotocol.io homepage redirects - Update RFC URLs from tools.ietf.org to datatracker.ietf.org - Update GitHub Pages URLs to csharp.sdk.modelcontextprotocol.io custom domain - Fix GitHub org projects URL to include query parameter - Add mlc-disable-next-line comments for DocFX admonitions - Escape [Description] as inline code in list-of-diagnostics.md - Reformat args to multi-line with descriptive comments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 1578e94 commit fb25f49

File tree

11 files changed

+25
-9
lines changed

11 files changed

+25
-9
lines changed

.github/workflows/markdown-link-check.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,13 @@ jobs:
2121
- name: Markup Link Checker (mlc)
2222
uses: becheran/mlc@7ec24825cefe0c9c8c6bac48430e1f69e3ec356e # v1.2.0
2323
with:
24-
# Ignore external links that result in 403 errors during CI. Do not warn for redirects where we want to keep the vanity URL in the markdown or for GitHub links that redirect to the login, and DocFX snippet links.
25-
args: --ignore-links "https://www.anthropic.com/*,https://hackerone.com/anthropic-vdp/*" --do-not-warn-for-redirect-to "https://modelcontextprotocol.io/*,https://github.com/login?*" --ignore-links "*samples/*?name=snippet_*" ./docs
24+
# Ignore DocFX cross-reference links (xref:) that mlc cannot check.
25+
# Ignore DocFX snippet inclusion links.
26+
# Do not warn for learn.microsoft.com locale redirects.
27+
# Do not warn for modelcontextprotocol.io homepage/spec redirects.
28+
args: >-
29+
--ignore-links "xref:*"
30+
--ignore-links "*samples/*?name=snippet_*"
31+
--do-not-warn-for-redirect-to "https://learn.microsoft.com/en-us/*"
32+
--do-not-warn-for-redirect-to "https://modelcontextprotocol.io/*"
33+
./docs

docs/concepts/getting-started.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ The SDK ships as three NuGet packages. Pick the one that matches your scenario:
1919
| **[ModelContextProtocol](https://www.nuget.org/packages/ModelContextProtocol/absoluteLatest)** | You're building a client or a **stdio-based** server and want hosting, dependency injection, and attribute-based tool/prompt/resource discovery. References `ModelContextProtocol.Core`. **This is the right starting point for most projects.** |
2020
| **[ModelContextProtocol.AspNetCore](https://www.nuget.org/packages/ModelContextProtocol.AspNetCore/absoluteLatest)** | You're building an **HTTP-based** MCP server hosted in ASP.NET Core. References `ModelContextProtocol`, so you get everything above plus the HTTP transport. |
2121

22+
<!-- mlc-disable-next-line -->
2223
> [!TIP]
2324
> If you're unsure, start with the **ModelContextProtocol** package. You can always add **ModelContextProtocol.AspNetCore** later if you need HTTP transport support.
2425
2526
### Building an MCP server
2627

28+
<!-- mlc-disable-next-line -->
2729
> [!TIP]
2830
> You can also use the [MCP Server project template](https://learn.microsoft.com/dotnet/ai/quickstarts/build-mcp-server) to quickly scaffold a new MCP server project.
2931

docs/concepts/logging/logging.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This document describes how to implement logging in MCP servers and how clients
1515

1616
### Logging Levels
1717

18-
MCP uses the logging levels defined in [RFC 5424](https://tools.ietf.org/html/rfc5424).
18+
MCP uses the logging levels defined in [RFC 5424](https://datatracker.ietf.org/doc/html/rfc5424).
1919

2020
The MCP C# SDK uses the standard .NET [ILogger] and [ILoggerProvider] abstractions, which support a slightly
2121
different set of logging levels. The following table shows the levels and how they map to standard .NET logging levels.

docs/concepts/pagination/pagination.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,10 @@ builder.Services.AddMcpServer()
9494
});
9595
```
9696

97+
<!-- mlc-disable-next-line -->
9798
> [!NOTE]
9899
> The cursor format is opaque to the client. Servers can use any encoding scheme (numeric offsets, encoded tokens, database cursors, etc.) as long as they can parse their own cursors on subsequent requests.
99100
101+
<!-- mlc-disable-next-line -->
100102
> [!NOTE]
101103
> Because the cursor format is opaque to the client, _any_ value specified in the cursor, including the empty string, signals that more results are available. If an MCP server erroneously sends an empty string cursor with the final page of results, clients can implement their own low-level pagination scheme to work around this case.

docs/concepts/resources/resources.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class MyResources
4343

4444
Template resources use [URI templates (RFC 6570)] with parameters. They are returned separately in the resource templates list and can match a range of URIs:
4545

46-
[URI templates (RFC 6570)]: https://tools.ietf.org/html/rfc6570
46+
[URI templates (RFC 6570)]: https://datatracker.ietf.org/doc/html/rfc6570
4747

4848
```csharp
4949
[McpServerResourceType]

docs/concepts/tasks/tasks.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ uid: tasks
77

88
# MCP Tasks
99

10+
<!-- mlc-disable-next-line -->
1011
> [!WARNING]
1112
> Tasks are an **experimental feature** in the MCP specification (version 2025-11-25). The API may change in future releases. See the [Experimental APIs](../../experimental.md) documentation for details on working with experimental APIs.
1213
@@ -207,6 +208,7 @@ public class MyTools(IMcpTaskStore taskStore)
207208

208209
When a tool returns `McpTask`, the SDK bypasses automatic task wrapping and returns the task directly to the client.
209210

211+
<!-- mlc-disable-next-line -->
210212
> [!IMPORTANT]
211213
> **No Fault Tolerance Guarantees**: Both `InMemoryMcpTaskStore` and the automatic task support for `Task`-returning tool methods do **not** provide fault tolerance. Task state and execution are bounded by the memory of the server process. If the server crashes or restarts:
212214
> - All in-memory task metadata is lost
@@ -359,6 +361,7 @@ var options = new McpClientOptions
359361
var client = await McpClient.CreateAsync(transport, options);
360362
```
361363

364+
<!-- mlc-disable-next-line -->
362365
> [!NOTE]
363366
> Clients should not rely on receiving status notifications. Notifications are optional and may not be sent in all scenarios. Always use polling as the primary mechanism for tracking task status.
364367

docs/concepts/transports/transports.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ The [SSE (Server-Sent Events)] transport is a legacy mechanism that uses unidire
143143

144144
[SSE (Server-Sent Events)]: https://modelcontextprotocol.io/specification/2024-11-05/basic/transports#http-with-sse
145145

146+
<!-- mlc-disable-next-line -->
146147
> [!NOTE]
147148
> The SSE transport is considered legacy. The [Streamable HTTP](#streamable-http-transport) transport is the recommended approach for HTTP-based communication and supports bidirectional streaming.
148149

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ This SDK is the official C# SDK for the [Model Context Protocol](https://modelco
88

99
For more details on available functionality, see:
1010

11-
- [Conceptual documentation](https://modelcontextprotocol.github.io/csharp-sdk/concepts/index.html)
12-
- [API documentation](https://modelcontextprotocol.github.io/csharp-sdk/api/ModelContextProtocol.html).
11+
- [Conceptual documentation](https://csharp.sdk.modelcontextprotocol.io/concepts/index.html)
12+
- [API documentation](https://csharp.sdk.modelcontextprotocol.io/api/ModelContextProtocol.html).
1313

1414
## About MCP
1515

docs/list-of-diagnostics.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Analyzer diagnostic IDs are in the format `MCP###`.
99
| Diagnostic ID | Description |
1010
| :------------ | :---------- |
1111
| `MCP001` | Invalid XML documentation for MCP method |
12-
| `MCP002` | MCP method must be partial to generate [Description] attributes |
12+
| `MCP002` | MCP method must be partial to generate `[Description]` attributes |
1313

1414
## Experimental APIs
1515

docs/roadmap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ uid: roadmap
66
---
77
## Spec Implementation Tracking
88

9-
The C# SDK tracks implementation of MCP spec components using the [modelcontextprotocol project boards](https://github.com/orgs/modelcontextprotocol/projects), with a dedicated project board for each spec revision. For example, see the [2025-11-25 spec revision board](https://github.com/orgs/modelcontextprotocol/projects/26).
9+
The C# SDK tracks implementation of MCP spec components using the [modelcontextprotocol project boards](https://github.com/orgs/modelcontextprotocol/projects?query=is%3Aopen), with a dedicated project board for each spec revision. For example, see the [2025-11-25 spec revision board](https://github.com/orgs/modelcontextprotocol/projects/26).
1010

1111
## Current Focus Areas
1212

0 commit comments

Comments
 (0)