MCP健康检查服务器

一个独立的MCP服务器,用于通过HTTP和SSE协议让AI模型查询云服务的健康状态,支持多客户端会话管理。

  • by dotin-challenge
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 dotin-challenge/MCP-Health-Check-Server

使用说明

独立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核心 支持:

  1. 完整的MCP生命周期 结束 HTTP/SSE,包括 初始化 和 握手.
  2. A. 工具 命名 check_api_status 它接受URL并报告可用性。
  3. 多客户端并发 通过 会话管理 (多个客户端同时进行隔离会话)。

这是一个后端/服务器挑战:实现协议流、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_status
  • input: { "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)

  1. 叉子 存储库。

  2. 创建新分支:

    git checkout -b solution/<username>
    
  3. 将您的解决方案放在此处:

    solutions/C#/<username>/
      ├── src/...
      ├── tests/...
      └── README.md (optional: architecture notes)
    
  4. 打开标题为的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问题 在这个存储库中用于问题和澄清。