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 项目。
-
克隆仓库: 'git clone https://github.com/andreluizsecco/DotnetMCPServer.git' 'cd DotnetMCPServer'
-
设置 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'。
-
运行 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)。
- 运行 Stdio 版本:
服务器配置 (供 MCP 客户端使用)
LLM 客户端需要知道如何启动和连接到这个 MCP 服务器。以下是 Stdio 版本的典型配置信息描述,HTTP/SSE 版本需要不同的配置(通常包含地址和端口)。
- Stdio 服务器配置示例描述:
配置一个MCP客户端以通过标准输入/输出连接到此服务器时,你需要提供启动服务器进程的命令及其参数。
注意:上面是一个配置结构的描述*,客户端配置文件的具体格式取决于所使用的MCP客户端实现。'src/DotnetMCPServer/DotnetMCPServer.csproj' 是相对于你克隆仓库根目录的路径。*{ // MCP服务器的标识名称,用于客户端识别 "name": "ServidorMCP_DotnetLivraria", // 启动MCP服务器进程的命令。对于.NET应用,通常是"dotnet" "command": "dotnet", // 传递给启动命令的参数列表 "args": [ // 参数1: 指示dotnet运行一个项目文件 "run", // 参数2: 指定MCP服务器项目文件的路径 "--project", "src/DotnetMCPServer/DotnetMCPServer.csproj" ] // 可能还有其他配置,如"transport": "stdio" (具体取决于客户端支持) }
基本使用方法
一旦 MCP 服务器(例如 Stdio 版本)正在运行并监听标准输入/输出,一个兼容的 MCP 客户端可以连接到它。
- 客户端会通过标准输入发送符合 JSON-RPC 协议的请求,例如 'initialized' 通知或 'tool.list' 请求来发现可用的工具。
- 服务器处理请求并通过标准输出返回 JSON-RPC 响应。
- 客户端可以通过 'tool.execute' 请求调用服务器暴露的工具(如 'ObterLivros', 'CadastrarLivro' 等),并传递相应的参数(如书名、图书数据等)。
- 服务器执行工具逻辑(调用外部 Livraria API),并将结果作为 'tool.execute' 请求的响应返回给客户端。
LLM 客户端通过这种方式,能够利用 MCP 服务器提供的工具来获取或修改外部系统的实时信息。
信息
分类
AI与计算