项目简介

'McpServerAspNetCore' 是一个基于 Model Context Protocol (MCP) 标准的服务器端实现,利用强大的 ASP.NET Core 框架构建。它旨在为大型语言模型(LLM)客户端提供标准化的上下文信息和可调用的功能工具。该服务器具备全面的功能,包括API密钥和JWT认证提供安全性,支持工具的自动发现和注册,集成了OpenAPI/Swagger UI以便于API文档和测试,并提供了跨域资源共享(CORS)支持。

主要功能点

  • MCP协议支持: 严格遵循 Model Context Protocol (MCP),提供标准化的上下文信息和工具接口,实现LLM与后端服务的无缝通信。
  • 工具托管与发现: 自动扫描并注册服务器端可用的工具,例如示例中用于获取当前时间和特定时区时间的工具。LLM客户端可以透明地发现并调用这些工具来扩展其能力。
  • 安全认证: 内置支持 API 密钥和 JWT (JSON Web Token) 认证机制,确保只有经过授权的客户端才能访问服务器提供的服务和工具,保护数据和功能的安全。
  • API文档与测试: 通过集成 OpenAPI/Swagger UI,自动生成交互式API文档。这极大地简化了开发者对服务器接口的理解、测试和集成工作。
  • 可扩展性: 基于现代的ASP.NET Core框架构建,项目结构清晰,易于开发者进行功能的扩展和定制,以满足不同LLM应用的需求。

安装步骤

  1. 克隆仓库: 打开你的终端或命令行工具,执行以下命令克隆项目到本地:
    git clone https://github.com/marcominerva/McpServerAspNetCore.git
    cd McpServerAspNetCore
  2. 构建项目: 确保你已安装 .NET SDK (推荐 .NET 9 或更高版本)。在项目根目录下,执行以下命令构建整个解决方案:
    dotnet build
  3. 运行服务器: 进入服务器项目目录 'src/McpServerAspNetCore',然后运行服务器:
    cd src/McpServerAspNetCore
    dotnet run
    服务器将默认在 'https://localhost:7133' 启动,MCP 服务接口位于 '/mcp' 路径。

服务器配置

MCP客户端可以通过以下JSON格式的配置来连接此服务器。此配置包含服务器的基本信息、启动命令(适用于需要客户端管理服务器进程生命周期的场景,如通过 Stdio 协议)以及连接参数(适用于通过网络连接,如HTTP协议)。

{
  "name": "MCP Sample Server",
  "command": "dotnet",
  "args": ["run", "--project", "src/McpServerAspNetCore", "--urls", "https://localhost:7133"],
  "endpoint": "https://localhost:7133/mcp",
  "additionalHeaders": {
    "x-api-key": "f1I7S5GXa4wQDgLQWgz0" 
  },
  "description": "基于ASP.NET Core的MCP示例服务器,提供时间检索工具等功能。"
}
  • 'name': 服务器的显示名称,例如 "MCP Sample Server"。
  • 'command': 启动服务器进程所需的命令,例如 'dotnet'。这通常用于当客户端需要管理服务器进程的启动和停止时(如通过 Stdio 传输协议)。
  • 'args': 传递给 'command' 的参数列表,用于正确启动服务器项目。'--project' 指定要运行的项目路径,'--urls' 参数指定服务器监听的URL。
  • 'endpoint': MCP服务器的HTTP/HTTPS服务地址和路径。客户端通过此URL发送MCP请求,适用于HTTP传输协议。
  • 'additionalHeaders': 客户端与服务器通信时需要附加的HTTP请求头。例如,此处配置了 'x-api-key' 用于API Key认证。请务必将示例值 'f1I7S5GXa4wQDgLQWgz0' 替换为服务器实际配置的有效API密钥。
  • 'description': 对服务器功能的简要描述。

基本使用方法

一旦服务器成功运行,MCP客户端(例如仓库中提供的 'McpClientConsoleApp.ExtensionsAI' 或 'McpClientConsoleApp.Agents' 示例)就可以连接到它。客户端将自动发现并列出服务器提供的工具,例如 'GetUtcNow'(获取当前UTC时间)和 'GetLocalNow'(获取指定时区的本地时间)。LLM可以通过这些工具获取实时的时间信息,从而增强其与外部世界的交互能力。

信息

分类

AI与计算