使用说明
独立MCP健康检查服务器(ASP.NET Core)
建立一个 独立MCP服务器 它允许人工智能模型在公共互联网上查询您的云服务的健康状况 标准方式--使用 HTTP+SSE,MCP生命周期(初始化 + 握手一
check_api_status工具,以及 多客户端会话管理.
挑战结果
挑战已经过评估。看 最终排行榜和评估报告,或阅读 波斯报告.
目录
需求
-
允许的语言: C
-
框架: .NET 8(推荐) / .NET 7+可接受
-
推荐SDK: .NET 8.0.x
-
服务器: ASP。NET核心
-
协议: HTTP+服务器发送事件(SSE) (建议使用HTTPS)
-
操作系统:任何(Windows/Linux/macOS)
-
熟悉:
- HTTP API
- SSE流媒体
- 基本异步编程
- 并发和会话/状态处理
问题描述
您的组织希望AI模型(例如Claude)通过互联网查询您的云服务的健康状态 直接的 和 标准 方式。
设计并实施 独立MCP服务器 使用 ASP。NET核心 支持:
- 完整的MCP生命周期 结束 HTTP/SSE,包括 初始化 和 握手.
- A. 工具 命名
check_api_status它接受URL并报告可用性。 - 多客户端并发 通过 会话管理 (多个客户端同时进行隔离会话)。
这是一个后端/服务器挑战:实现协议流、SSE流、工具执行和会话生命周期。
规则和约束
-
协议和生命周期
- 你必须执行 初始化 和 握手 以一种可通过HTTP调用测试的方式。
- SSE事件必须 会话绑定 并正确布线。
- MCP消息格式和事件有效载荷必须明确记录(即使简化)。
-
会话管理
- 支持多个并发会话。
- 无串扰:一个会话的事件/结果不得出现在另一个会话中。
- 实施会话清理(TTL/过期)并记录策略。
-
工具执行
check_api_status必须返回明确的状态(例如。,UP/DOWN)有用的细节。- 处理超时、DNS故障、TLS错误、无效URL,而不会崩溃。
-
安全说明(必须在解决方案中注明)
- 默认情况下防止SSRF(推荐方法:分配域、阻止私有/环回范围、可配置策略)。
- 使用合理的请求超时和大小限制。
-
依赖项
- 更喜欢。NET标准库。如果添加包,请在文档中对其进行说明。
核心场景
1) 初始化(HTTP)
客户端启动新的MCP会话。
预期的服务器职责:
- 创建并存储新
session_id. - 返回协议信息和功能。
- 返回可用工具列表(必须包括
check_api_status). - 提供该会话的SSE流URL。
2) 握手(HTTP+SSE)
客户端完成握手并连接到绑定到的SSE流 session_id.
预期的服务器职责:
- 验证
session_id. - 打开/保持SSE连接。
- 发出握手/就绪事件(或等效事件)以确认会话处于活动状态。
3) 工具调用: check_api_status
客户端通过输入请求工具执行:
name:check_api_statusinput:{ "url": "https://example.com/health" }
预期的服务器职责:
-
执行HTTP探测。
-
报告:
- 状态(
UP/DOWN) - HTTP状态代码(如果可访问)
- 延迟(毫秒)
- 时间戳
- 错误详细信息(如果失败)
- 状态(
4) 多个客户端/会话
您的服务器必须同时支持多个客户端。
预期的服务器职责:
- 每个会话的SSE事件和工具结果的正确路由。
- 线程安全会话存储。
- 清理过期的会话。
输入/输出和示例
工具定义(必填)
工具名称: check_api_status
默认行为:
- 默认探测超时: 3000毫秒 (必须可配置)。
预期输入JSON:
{
"url": "https://example.com/health"
}
建议成功输出JSON:
{
"url": "https://example.com/health",
"status": "UP",
"http_status": 200,
"latency_ms": 87,
"checked_at": "2025-12-30T12:00:00Z"
}
建议的失败输出JSON:
{
"url": "https://example.com/health",
"status": "DOWN",
"error": "Timeout after 3000ms",
"checked_at": "2025-12-30T12:00:00Z"
}
如何运行和测试
1) 克隆项目
git clone https://github.com/dotin-challenge/MCP-Health-Check-Server.git
cd MCP-Health-Check-Server
2) 构建和运行
dotnet restore
dotnet build
dotnet run --project src/McpHealthServer
3) (可选)运行测试
dotnet test
最低预期测试:
- 初始化退货
session_id+工具 - SSE流绑定到
session_id并发出握手/就绪 check_api_status返回正确UP/DOWN- 两次平行会议不要混合回答
如何提交(PR)
-
叉子 存储库。
-
创建新分支:
git checkout -b solution/<username> -
将您的解决方案放在此处:
solutions/C#/<username>/ ├── src/... ├── tests/... └── README.md (optional: architecture notes) -
打开标题为的Pull Request:
[Solution] Standalone MCP Health Check Server - <username>
评估标准
| 标准 | 重量 |
|---|---|
| 正确性(端到端流程+工具有效) | 35% |
| 代码质量(结构、清晰度、SOLID) | 15% |
| MCP生命周期合规性(初始化/握手/SSE) | 15% |
| 并发和会话管理 | 15% |
| 可观察性和安全性(日志记录、SSRF) | 5% |
| 文档(明确端点+运行指南) | 5% |
| 交付质量(可运行、干净的仓库) | 10% |
时间线
- 开始:
2025-12-30 - PR提交截止日期:
2026-01-06
联系
- 使用 GitHub问题 在这个存储库中用于问题和澄清。