使用说明

  • 项目简介
    • 该仓库实现了 MCP 的服务器端桥接组件,允许一个 .NET 应用通过 MCP 客户端连接,暴露工具、提示和资源等能力,并处理来自客户端的请求与服务器端的响应。核心设计包括对 MCP 请求/响应数据结构的完整建模、SignalR 为传输通道的双向通信、以及对复杂类型参数的自动反序列化与路由。还提供了 Demo 应用示例,展示如何在 ASP.NET Core 上托管服务器以及在 .NET 应用中暴露工具组件。
  • 主要功能点
    • MCP 核心抽象:定义请求与响应的数据结构(如请求读取 Prompt、调用 Tools、获取 Resources 等),以及相应的响应状态(Error、Success、Processing)。
    • 服务器接口与分层:将服务器端职责拆分为 ToolHub、PromptHub、ResourceHub 的接口组合,统一由 MCP 服务器管理。
    • 实时通信:通过 SignalR 实现服务器端与 MCP 客户端的长期连接,支持实时推送与请求调用。
    • 反射与自动注册:使用 ReflectorNet 等机制,自动发现并注册工具、提示、资源;支持复杂对象参数、模糊匹配和自动 JSON Schema 生成。
    • 传输模式与配置:默认基于 stdio 与 http 的桥接模式,支持在同一端口上通过 SignalR 进行双向通信;提供便捷的配置参数(端口、超时、传输方式)。
    • 安全与可扩展性:包含会话管理、请求标识、可取消/超时的处理路径,设计考虑对多客户端并发请求的鲁棒性。
    • 示例与测试:包含 Demo 应用、示例客户端、以及大量单元测试用例,便于理解与扩展。
  • 安装与运行步骤
    • 通过 NuGet 将 MCP 服务器端相关包集成到你的 ASP.NET Core 项目,或直接使用仓库中的 DemoWebApp 作为服务器实例进行测试运行。
    • 在你的应用中引入 MCP 服务器组件并注册中间件(示例在仓库中有 Demo 使用方式)。
    • 启动服务器后,MCP 客户端(如 Claude Desktop、MCP Inspector 等)即可通过配置的端口与 Hub 接口建立连接,发送请求并接收响应。
  • 服务器配置(供 MCP 客户端了解的配置信息,不需要客户端代码)
    • 服务器暴露的消息传输默认通过单一端口进行通信,端口默认为 8080,但可通过配置更改。
    • 通过示例配置,可以将服务器设置为在本地监听端口11111,使用 stdio 或 http 客户端传输。
    • 典型配置要素包括:服务器名称、执行服务器的命令路径、以及传给服务器的参数(如端口、超时、传输模式等)。以下为配置要点描述,便于在 MCP 客户端理解配置信息的结构与含义:
      • serverName: MCP 服务器的逻辑名称,例如 McpPlugin
      • command: 启动桥接服务的可执行程序路径
      • args: 向桥接服务传递的参数,例如
        • --port=11111 指定服务器监听端口
        • --plugin-timeout=30000 指定插件操作的超时(毫秒)
        • --client-transport=stdio 或 --client-transport=http 指定与客户端通信的传输模式
    • 备注: MCP 客户端在连接前通常需要知道服务器端端口与传输模式等信息,上述描述用于帮助理解配置结构,实际的配置文件是在客户端以 JSON 形式读取的(客户端不需要嵵写代码,仅需要知道要点和参数含义)。
  • 基本使用方法
    • 运行服务器:在 ASP.NET Core 项目中启动包含 DemoWebApp 的服务器实例,服务器将暴露 MCP 接口并通过 SignalR 接收来自客户端的调用请求。
    • 暴露组件:在你的应用中通过工具、提示、资源的特性标记与程序集扫描,将方法、模板和数据暴露给 MCP 客户端使用。
    • 客户端调用流程:MCP 客户端通过发送请求(如读取工具列表、执行某个工具、获取 Prompt、读取资源等)到 MCP 服务器,服务器处理后返回带状态的响应对象(成功、处理中、错误),以及可选的结构化内容。
    • 关闭与恢复:服务器支持会话管理与连接重连,确保在网络波动或服务器重启后客户端能够重新建立连接并继续交互。

信息

分类

AI与计算