项目简介
'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应用的需求。
安装步骤
- 克隆仓库: 打开你的终端或命令行工具,执行以下命令克隆项目到本地:
git clone https://github.com/marcominerva/McpServerAspNetCore.git cd McpServerAspNetCore - 构建项目: 确保你已安装 .NET SDK (推荐 .NET 9 或更高版本)。在项目根目录下,执行以下命令构建整个解决方案:
dotnet build - 运行服务器: 进入服务器项目目录 'src/McpServerAspNetCore',然后运行服务器:
服务器将默认在 'https://localhost:7133' 启动,MCP 服务接口位于 '/mcp' 路径。cd src/McpServerAspNetCore dotnet run
服务器配置
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与计算