Projeto Introdução

该仓库包含一个基于 Model Context Protocol (MCP) 实现的服务器示例,使用 .NET 构建。它演示了如何创建一个 MCP 服务器来连接 LLM 客户端与一个外部 API (在此示例中是一个简单的图书管理 API),从而让 LLM 能够执行数据查询和操作等任务。

主要功能点

该 MCP 服务器通过公开一系列工具(Tools)来提供功能,这些工具通过与一个外部的 Livraria(图书管理)API 进行交互来实现图书数据的查询、创建、更新和删除。主要功能包括:

  • 图书搜索: 通过标题或 ID 搜索图书信息。
  • 获取分类: 查询图书的可用分类列表。
  • 图书管理: 支持创建、更新完整图书信息、更新图书价格和删除图书。
  • 多种传输协议支持: 仓库提供了基于 Stdio 和 HTTP (SSE) 的两种服务器实现示例。
  • 工具暴露: 将后端 API 的功能以标准化的 MCP 工具形式暴露给 LLM 客户端。

安装步骤

要运行这个 MCP 服务器,你需要先运行它所依赖的 Livraria.Api 项目。

  1. 克隆仓库: 'git clone https://github.com/andreluizsecco/DotnetMCPServer.git' 'cd DotnetMCPServer'

  2. 设置 Livraria.Api: 这个项目包含一个依赖数据库的 Web API。你需要配置数据库连接字符串(在 'src/Livraria.Api/appsettings.json' 中)并运行 Entity Framework Core 迁移来创建数据库和初始数据。

    • 导航到 API 项目目录: 'cd src/Livraria.Api'
    • 根据你的数据库选择(SqlServer 或 Postgres)更新 'appsettings.json' 的连接字符串。
    • 运行数据库迁移(示例使用 SqlServer):'dotnet ef database update --project Livraria.Api.csproj --startup-project Livraria.Api.csproj' (如果你使用 Postgres,可能需要调整命令)。
    • 运行 API 项目:'dotnet run'
    • 保持 API 项目运行。它默认监听 'https://localhost:7294'。
  3. 运行 MCP 服务器: 你可以选择运行 Stdio 版本或 HTTP/SSE 版本。Stdio 版本更适合通过命令行直接启动并与客户端通过标准输入输出通信,HTTP/SSE 版本则作为 Web 应用运行。

    • 运行 Stdio 版本:
      • 打开一个新的终端窗口。
      • 导航到 MCP 服务器项目目录: 'cd src/DotnetMCPServer'
      • 运行服务器:'dotnet run'
    • 运行 HTTP/SSE 版本:
      • 打开一个新的终端窗口。
      • 导航到 MCP SSE 服务器项目目录: 'cd src/DotnetMCPServerSSE'
      • 如果你需要 API Key 认证,请在 'src/DotnetMCPServerSSE/appsettings.json' 中配置 'ApiKeys' 列表。
      • 运行服务器:'dotnet run'
      • 该服务器将作为 Web 应用运行,监听特定端口(通常是 Kestrel 的默认端口,如 5000/5001)。

服务器配置 (供 MCP 客户端使用)

LLM 客户端需要知道如何启动和连接到这个 MCP 服务器。以下是 Stdio 版本的典型配置信息描述,HTTP/SSE 版本需要不同的配置(通常包含地址和端口)。

  • Stdio 服务器配置示例描述: 配置一个MCP客户端以通过标准输入/输出连接到此服务器时,你需要提供启动服务器进程的命令及其参数。
    {
      // MCP服务器的标识名称,用于客户端识别
      "name": "ServidorMCP_DotnetLivraria",
      // 启动MCP服务器进程的命令。对于.NET应用,通常是"dotnet"
      "command": "dotnet",
      // 传递给启动命令的参数列表
      "args": [
        // 参数1: 指示dotnet运行一个项目文件
        "run",
        // 参数2: 指定MCP服务器项目文件的路径
        "--project", "src/DotnetMCPServer/DotnetMCPServer.csproj"
      ]
      // 可能还有其他配置,如"transport": "stdio" (具体取决于客户端支持)
    }
    注意:上面是一个配置结构的描述*,客户端配置文件的具体格式取决于所使用的MCP客户端实现。'src/DotnetMCPServer/DotnetMCPServer.csproj' 是相对于你克隆仓库根目录的路径。*

基本使用方法

一旦 MCP 服务器(例如 Stdio 版本)正在运行并监听标准输入/输出,一个兼容的 MCP 客户端可以连接到它。

  1. 客户端会通过标准输入发送符合 JSON-RPC 协议的请求,例如 'initialized' 通知或 'tool.list' 请求来发现可用的工具。
  2. 服务器处理请求并通过标准输出返回 JSON-RPC 响应。
  3. 客户端可以通过 'tool.execute' 请求调用服务器暴露的工具(如 'ObterLivros', 'CadastrarLivro' 等),并传递相应的参数(如书名、图书数据等)。
  4. 服务器执行工具逻辑(调用外部 Livraria API),并将结果作为 'tool.execute' 请求的响应返回给客户端。

LLM 客户端通过这种方式,能够利用 MCP 服务器提供的工具来获取或修改外部系统的实时信息。

信息

分类

AI与计算