DotnetFastMCP MCP 服务器框架

使用说明(Markdown 格式)

  • 项目简介 DotnetFastMCP 是一个面向 Model Context Protocol 的企业级 MCP 服务器框架,使用 ASP.NET Core 构建,提供标准化的 JSON-RPC 2.0 通信、工具与资源注册、Prompts 定义和渲染、以及面向 LLM 的多种集成能力(如 OpenTelemetry、认证、LLM 提供商等)。

  • 主要功能点

    • 组件化声明:通过 [McpTool]、[McpResource]、[McpPrompt] 等属性对工具、资源、Prompts 进行自动发现和注册。
    • JSON-RPC 2.0 协议:完整的请求/响应处理、错误码和通知支持。
    • 资源、工具、Prompts 的统一发现与调用:支持本地工具、动态工具(如 OpenAPI 代理)以及 OpenAPI 转 MCP 工具。
    • 安全与认证:内置 OAuth 代理、Bearer Token 验证、策略与 MFA 支持,且可扩展多种身份提供商。
    • 原生客户端库与传输分离:提供 C# 客户端库,传输支持 Stdio、SSE、HTTP/WebSocket 等。
    • LLM 集成:内置多家提供商(OpenAI、Anthropic、Gemini、Cohere、HuggingFace、Deepseek、Ollama、DeepSeek 等)的对接能力,具备流式输出与分步模型调用。
    • Observability:OpenTelemetry 集成,自动化 metrics 与 tracing,零开销选项。
    • 服务组合与中间件:中间件管线、SSE 控制、背景任务队列、存储抽象、上下文注入等。
  • 安装步骤

    • 克隆并构建:git clone <仓库地址>,进入项目根目录执行 dotnet build
    • 运行示例服务器(基础示例,无认证):
      • 进入示例目录并启动:dotnet run(或在需要标准输出模式时使用 dotnet run -- --stdio)
    • 运行客户端进行测试时,可参考仓库中的集成测试与示例客户端代码。
  • 服务器配置(给 MCP 客户端的配置示例,JSON 格式,含 server name、command、args 字段) { "serverName": "My MCP Server", "command": "dotnet", "args": ["run", "--project", "examples/BasicServer", "--", "--stdio"] } 说明:

    • serverName: MCP 服务器在客户端显示的名称,建议与实际部署的一致。
    • command: 启动服务器的命令(此处为 .NET 项目启动命令)。
    • args: 启动命令的参数,包含项目路径和传输模式(示例为 --stdio,即使用标准输入/输出传输,与 MCP 客户端的 Stdio 客户端传输配合)。
    • 备注:若使用其他传输模式(如 SSE/WebSocket),请在实际连接时按客户端要求提供相应启动参数。
  • 基本使用方法

    1. 启动服务器:按照上述启动方式启动 MCP 服务器(示例为基本服务器 BasicServer),确保服务在默认端口可用。
    2. 注册组件:在服务器代码中通过被 [McpTool]/[McpResource]/[McpPrompt] 修饰的静态方法,框架会自动发现并暴露工具、资源、Prompts。
    3. LLM 调用与资源读取:客户端通过 JSON-RPC 调用工具、资源或 prompts,MCP 服务器会进行参数绑定、鉴权、调用执行并返回结果。
    4. 观察与诊断:可启用 OpenTelemetry、日志记录及其他中间件,以实现对请求/响应的跟踪与分析。
  • 备注

    • 该仓库包含服务器核心实现、中间件、认证代理、注册与调用逻辑,以及多种传输、观测和安全特性的实现,符合 MCP 服务器的核心要素。

服务器信息