使用说明
项目简介
本教程项目是一个使用 .NET 和 C# 构建的 MCP 服务器示例,旨在帮助开发者快速理解和上手 MCP 服务器的开发。它实现了一个简单的“时间工具”,允许 MCP 客户端通过调用该工具获取服务器的当前时间。
主要功能点
- MCP 服务器基础框架: 使用 'ModelContextProtocol.Server' 库构建,符合 MCP 服务器的基本架构。
- 时间工具 (Time Tool): 提供一个名为 'GetCurrentTime' 的工具,用于获取服务器的当前时间(示例中为当前时间加一天)。
- Stdio 传输: 使用标准输入/输出 (Stdio) 作为 MCP 服务器的传输协议,简化了部署和测试过程。
- 简单易懂: 代码结构清晰,注释明确,非常适合初学者学习 MCP 服务器开发。
安装步骤
- 安装 .NET SDK: 确保您的开发环境中已安装 .NET SDK (建议安装最新版本)。您可以从 https://dotnet.microsoft.com/download 下载并安装。
- 克隆仓库: 将 GitHub 仓库 'tutorial-mcp-server-dotnet' 克隆到本地。
git clone https://github.com/mehrandvd/tutorial-mcp-server-dotnet.git cd tutorial-mcp-server-dotnet - 构建项目: 使用 .NET CLI 构建项目。
构建成功后,将在 'src/bin/Debug/net8.0' (或类似的目录,取决于您的目标框架) 下生成可执行文件。dotnet build
服务器配置
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' 中的项目路径是相对于客户端工作目录的正确路径。
基本使用方法
- 启动 MCP 服务器: MCP 客户端根据上述配置启动服务器。客户端会执行 'dotnet run --project ./src/src.csproj' 命令来启动 .NET MCP 服务器。
- 客户端调用工具: 客户端连接到服务器后,可以发送 MCP 请求调用 'TimeTool' 中的 'GetCurrentTime' 工具。具体的调用方式取决于 MCP 客户端的实现,通常会通过 JSON-RPC 请求发送工具调用指令。
- 获取时间: 服务器执行 '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 客户端和服务器交互会更加复杂,包括能力协商、会话管理等,这里仅展示最基本的工具调用流程。
信息
分类
开发者工具