使用说明

项目简介

本教程项目是一个使用 .NET 和 C# 构建的 MCP 服务器示例,旨在帮助开发者快速理解和上手 MCP 服务器的开发。它实现了一个简单的“时间工具”,允许 MCP 客户端通过调用该工具获取服务器的当前时间。

主要功能点

  • MCP 服务器基础框架: 使用 'ModelContextProtocol.Server' 库构建,符合 MCP 服务器的基本架构。
  • 时间工具 (Time Tool): 提供一个名为 'GetCurrentTime' 的工具,用于获取服务器的当前时间(示例中为当前时间加一天)。
  • Stdio 传输: 使用标准输入/输出 (Stdio) 作为 MCP 服务器的传输协议,简化了部署和测试过程。
  • 简单易懂: 代码结构清晰,注释明确,非常适合初学者学习 MCP 服务器开发。

安装步骤

  1. 安装 .NET SDK: 确保您的开发环境中已安装 .NET SDK (建议安装最新版本)。您可以从 https://dotnet.microsoft.com/download 下载并安装。
  2. 克隆仓库: 将 GitHub 仓库 'tutorial-mcp-server-dotnet' 克隆到本地。
    git clone https://github.com/mehrandvd/tutorial-mcp-server-dotnet.git
    cd tutorial-mcp-server-dotnet
  3. 构建项目: 使用 .NET CLI 构建项目。
    dotnet build
    构建成功后,将在 'src/bin/Debug/net8.0' (或类似的目录,取决于您的目标框架) 下生成可执行文件。

服务器配置

MCP 客户端需要配置以下信息以连接到此 MCP 服务器。请注意,由于本服务器使用 Stdio 传输,配置相对简单。

{
  "serverName": "Time Server",
  "command": "dotnet",
  "args": [
    "run",
    "--project",
    "./src/src.csproj"
  ],
  "transport": "stdio",
  "description": "提供时间服务的 MCP 服务器示例。",
  "version": "1.0.0"
}

配置参数说明:

  • 'serverName': 服务器名称,此处为 "Time Server",与代码中 'ServerInfo.Name' 一致。
  • 'command': 启动服务器的命令,由于是 .NET 项目,使用 'dotnet' 命令。
  • 'args': 'dotnet run' 命令的参数,'--project ./src/src.csproj' 指定了项目文件路径,确保从项目根目录运行客户端时能正确找到并运行服务器。请根据实际情况调整项目文件路径。
  • 'transport': 传输协议,此处为 'stdio',表示使用标准输入/输出进行通信。
  • 'description': 服务器描述,此处为 "提供时间服务的 MCP 服务器示例。", 与代码中 'ServerInstructions' 对应。
  • 'version': 服务器版本,此处为 "1.0.0",与代码中 'ServerInfo.Version' 一致。

重要提示: 请确保 MCP 客户端的当前工作目录是 'tutorial-mcp-server-dotnet' 仓库的根目录,或者 'args' 中的项目路径是相对于客户端工作目录的正确路径。

基本使用方法

  1. 启动 MCP 服务器: MCP 客户端根据上述配置启动服务器。客户端会执行 'dotnet run --project ./src/src.csproj' 命令来启动 .NET MCP 服务器。
  2. 客户端调用工具: 客户端连接到服务器后,可以发送 MCP 请求调用 'TimeTool' 中的 'GetCurrentTime' 工具。具体的调用方式取决于 MCP 客户端的实现,通常会通过 JSON-RPC 请求发送工具调用指令。
  3. 获取时间: 服务器执行 'GetCurrentTime' 工具后,会将当前时间(加一天)以字符串形式作为 JSON-RPC 响应返回给客户端。客户端解析响应即可获取时间信息。

示例工具调用 (MCP 客户端请求示例,非本仓库代码):

假设客户端发送如下 JSON-RPC 请求来调用 'GetCurrentTime' 工具:

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "tool_id": "TimeTool/GetCurrentTime",
    "arguments": {}
  },
  "id": 1
}

服务器会返回类似以下的 JSON-RPC 响应:

{
  "jsonrpc": "2.0",
  "result": "2024/07/18 10:30:00 +08:00",
  "id": 1
}

请注意,实际的 MCP 客户端和服务器交互会更加复杂,包括能力协商、会话管理等,这里仅展示最基本的工具调用流程。

信息

分类

开发者工具