带有模型上下文协议的.NET Hero API
A.基于网络的超级英雄管理系统由洁净架构API后端和用于人工智能辅助集成的模型上下文协议(MCP)服务器组成。
🎯 项目概述
这个项目演示了如何建造一个现代化的。NET应用程序,遵循干净的架构原则,并将其与模型上下文协议(MCP)集成,以实现人工智能辅助功能。它由两个主要部分组成:
- HeroApi 的 A.NET 9 WebAPI基于干净架构原则构建
- HeroMcp -模型上下文协议服务器,提供与API交互的人工智能工具功能
领域
该应用程序围绕超级英雄领域模型构建,包括:
- 英雄 -具有权力、姓名、别名和权力级别的角色
- 团队 -可以执行任务的英雄团体
- 任务 -团队可以执行和完成的任务
🚀 入门指南
先决条件
- .NET 9 SDK
- 码头工人 (用于数据库)
- VS代码 或其他。NET IDE
运行英雄API
- 导航到AppHost目录:
cd Api/tools/AppHost- 使用运行应用程序。NET-CLI:
dotnet run这将:
- 为数据库启动SQL Server容器
- 运行迁移以设置数据库架构
- 启动HeroApihttps://localhost:7255
- 打开https://localhost:7255/scalar/v1在浏览器中查看API文档
运行MCP服务器
- 导航到Mcp目录:
cd Mcp- 运行MCP服务器:
dotnet run这将启动MCP服务器,该服务器提供与HeroApi交互的工具。
运行MCP检查器
MCP检查器是直接测试MCP服务器的有用工具。它允许您检查可用的工具并以交互方式调用它们。
- 导航到Mcp目录:
cd Mcp- 使用以下命令运行MCP检查器:
npx @modelcontextprotocol/inspector dotnet run这将:
- 启动MCP服务器
- 在终端界面中启动MCP检查器
- 显示可用工具并允许您以交互方式对其进行测试
检查器将显示MCP服务器中的所有可用工具,并提供一个简单的界面来调用它们并查看它们的响应,这对开发和调试很有用。
生成API客户端
该项目使用Microsoft Kiota生成一个强类型的API客户端。要重新生成客户端,请执行以下操作:
- 确保HeroApi正在运行
- 导航到Mcp目录:
cd Mcp- 运行Kiota发电机:
dotnet kiota generate --openapi https://localhost:7255/openapi/v1.json --language csharp --class-name HeroClient --clean-output --additional-data false这将在中重新生成API客户端 output 基于最新OpenAPI规范的目录。
✨ 特性
HeroApi 的
- 清洁建筑:域、应用程序、基础设施和WebApi层的关注点分离
- 领域驱动设计:具有聚合、实体和值对象的丰富域模型
- CQRS模式:使用MediatR分离命令和查询
- 最少的API:快速、轻量级的API端点
- OpenAPI/标量:现代交互式API文档
- EF核心:使用实体框架核心进行数据访问
- Aspire仪表板:用于可观察性和资源编排
- 强类型ID:使用Vogen防止原始痴迷
- 健康检查:监视应用程序运行状况
- 综合测试:架构测试、域单元测试和API集成测试
HeroMcp
- 模型上下文协议:使用MCP标准与AI助手集成
- AI工具:用于管理英雄、团队和任务的自定义工具
- 生成的API客户端:使用Microsoft Kiota访问HeroApi
📋 API终点
HeroApi提供以下端点:
- GET/api/英雄 -获取所有英雄
- POST/api/英雄 -创建新英雄
- GET/api/团队 -获取所有团队
- GET/api/teams/{id} -组建一个特定的团队
- POST/api/团队 -创建新团队
- POST/api/团队/{id}/英雄/{heroId} -为团队添加英雄
- POST/api/团队/{id}/执行任务 -与团队一起执行任务
- POST/api/团队/{id}/完成任务 -完成团队当前的任务
🤖 MCP工具
MCP服务器为AI助手提供以下工具:
- GetHeroes -从API检索所有英雄
- CreateHero -创建新英雄
- GetTeams 的 -从API检索所有团队
- GetTeam 的 -按ID获取特定团队
- 创建团队 -创建新团队
- AddHeroTo团队 -为团队添加英雄
- 执行任务 -与团队一起执行任务
- 完成任务 -完成团队任务
- 回声 和 ReverseEcho -用于测试MCP连接的简单工具
🏗️ 项目结构
dotnet-mcp-hero/
├── Api/ # Clean Architecture API
│ ├── src/ # Source code
│ │ ├── Application/ # Application layer (use cases)
│ │ ├── Domain/ # Domain layer (business entities)
│ │ ├── Infrastructure/ # Infrastructure layer
│ │ └── WebApi/ # WebApi layer (controllers)
│ ├── tests/ # Test projects
│ │ ├── Architecture.Tests/ # Architecture tests
│ │ ├── Domain.UnitTests/ # Domain unit tests
│ │ └── WebApi.IntegrationTests/ # API integration tests
│ └── tools/ # Developer tools
│ ├── AppHost/ # Aspire host
│ └── MigrationService/ # Database migrations
├── Mcp/ # Model Context Protocol server
│ ├── Program.cs # MCP server setup
│ ├── Tools/ # MCP tools
│ │ ├── Echo/ # Echo tools
│ │ ├── Heroes/ # Hero management tools
│ │ └── Teams/ # Team management tools
│ └── output/ # Generated API client
└── McpHero.sln # Solution file📚 建筑
本项目遵循清洁架构原则,包括以下几层:
- 域层 -包含业务实体、聚合、值对象和域事件
- 应用层 -包含业务逻辑、命令、查询和接口
- 基础设施层 -从应用层实现接口
- WebApi层 -公开API终结点
🧪 测试
- 架构测试 -验证代码库是否符合干净的架构原则
- 域单元测试 -单独测试业务逻辑
- 集成测试 -针对真实数据库测试API端点
📖 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
