返回市场
英雄-dotnet-mcp

英雄-dotnet-mcp

作者:danielmackay4 星标更新:2025-04-15

项目介绍

基于.NET的超级英雄管理系统与模型上下文协议集成

一个基于.NET的超级英雄管理系统,由一个采用Clean Architecture原则构建的API后端和一个用于AI助手集成的模型上下文协议(MCP)服务器组成。

.NET 9.0 架构 MCP

🎯 项目概述

本项目展示了如何使用Clean Architecture原则构建现代.NET应用程序,并将其与模型上下文协议(MCP)集成以实现AI助手功能。该项目主要包含两个部分:

  1. HeroApi - 使用Clean Architecture原则构建的.NET 9 WebAPI
  2. HeroMcp - 提供与API交互的AI工具能力的模型上下文协议服务器

领域

该应用围绕一个超级英雄领域模型构建,包括:

  • 英雄 - 具有超能力、姓名、别名和能力等级的角色
  • 团队 - 可执行任务的英雄群体
  • 任务 - 团队可以执行并完成的任务

🚀 快速开始

先决条件

运行Hero API

  1. 导航到AppHost目录:
cd Api/tools/AppHost
  1. 使用.NET CLI运行应用:
dotnet run

这将:

  1. 打开浏览器中的https://localhost:7255/scalar/v1以查看API文档

运行MCP服务器

  1. 导航到Mcp目录:
cd Mcp
  1. 运行MCP服务器:
dotnet run

这将启动提供与HeroApi交互工具的MCP服务器。

运行MCP检查器

MCP检查器是一个有用的工具,可以直接测试你的MCP服务器。它允许你检查可用工具并进行交互式调用。

  1. 导航到Mcp目录:
cd Mcp
  1. 使用以下命令运行MCP检查器:
npx @modelcontextprotocol/inspector dotnet run

这将:

  • 启动MCP服务器
  • 在终端界面中启动MCP检查器
  • 显示可用工具并允许你进行交互式测试

检查器将显示来自你的MCP服务器的所有可用工具,并提供一个简单的接口来调用它们并查看响应,这对于开发和调试非常有用。

生成API客户端

该项目使用Microsoft Kiota生成强类型的API客户端。要重新生成客户端:

  1. 确保HeroApi正在运行
  2. 导航到Mcp目录:
cd Mcp
  1. 运行Kiota生成器:
dotnet kiota generate --openapi https://localhost:7255/openapi/v1.json --language csharp --class-name HeroClient --clean-output --additional-data false

这将根据最新的OpenAPI规范在output目录中重新生成API客户端。

✨ 特性

HeroApi

  • Clean Architecture:通过领域、应用、基础设施和WebApi层分离关注点
  • 领域驱动设计:具有聚合、实体和值对象的丰富领域模型
  • CQRS模式:使用MediatR分离命令和查询
  • 最小API:快速且轻量级的API端点
  • OpenAPI/Scalar:现代、交互式的API文档
  • EF Core:使用Entity Framework Core的数据访问
  • Aspire仪表板:用于可观测性和资源编排
  • 强类型ID:使用Vogen防止原始数据类型滥用
  • 健康检查:监控应用健康状况
  • 全面测试:架构测试、领域单元测试和API集成测试

HeroMcp

  • 模型上下文协议:使用MCP标准与AI助手集成
  • AI工具:管理英雄、团队和任务的自定义工具
  • 生成的API客户端:使用Microsoft Kiota访问HeroApi

📋 API端点

HeroApi提供了以下端点:

  • GET /api/heroes - 获取所有英雄
  • POST /api/heroes - 创建新英雄
  • GET /api/teams - 获取所有团队
  • GET /api/teams/{id} - 获取特定团队
  • POST /api/teams - 创建新团队
  • POST /api/teams/{id}/heroes/{heroId} - 将英雄添加到团队
  • POST /api/teams/{id}/execute-mission - 使用团队执行任务
  • POST /api/teams/{id}/complete-mission - 完成团队当前任务

🤖 MCP工具

MCP服务器向AI助手提供了以下工具:

  • GetHeroes - 从API检索所有英雄
  • CreateHero - 创建新英雄
  • GetTeams - 从API检索所有团队
  • GetTeam - 根据ID获取特定团队
  • CreateTeam - 创建新团队
  • AddHeroToTeam - 将英雄添加到团队
  • ExecuteMission - 使用团队执行任务
  • CompleteMission - 完成团队的任务
  • EchoReverseEcho - 用于测试MCP连接的简单工具

🏗️ 项目结构

dotnet-mcp-hero/
├── Api/                           # Clean Architecture API
│   ├── src/                       # 源代码
│   │   ├── Application/           # 应用层(用例)
│   │   ├── Domain/                # 领域层(业务实体)
│   │   ├── Infrastructure/        # 基础设施层
│   │   └── WebApi/                # WebApi层(控制器)
│   ├── tests/                     # 测试项目
│   │   ├── Architecture.Tests/    # 架构测试
│   │   ├── Domain.UnitTests/      # 领域单元测试
│   │   └── WebApi.IntegrationTests/  # API集成测试
│   └── tools/                     # 开发者工具
│       ├── AppHost/               # Aspire主机
│       └── MigrationService/      # 数据库迁移
├── Mcp/                           # 模型上下文协议服务器
│   ├── Program.cs                 # MCP服务器设置
│   ├── Tools/                     # MCP工具
│   │   ├── Echo/                  # Echo工具
│   │   ├── Heroes/                # 英雄管理工具
│   │   └── Teams/                 # 团队管理工具
│   └── output/                    # 生成的API客户端
└── McMcpHero.sln                  # 解决方案文件

📚 架构

本项目遵循Clean Architecture原则,包含以下层次:

  1. 领域层 - 包含业务实体、聚合、值对象和领域事件
  2. 应用层 - 包含业务逻辑、命令、查询和接口
  3. 基础设施层 - 实现来自应用层的接口
  4. WebApi层 - 暴露API端点

🧪 测试

  • 架构测试 - 验证代码库是否符合Clean Architecture原则
  • 领域单元测试 - 在隔离状态下测试业务逻辑
  • 集成测试 - 对真实数据库进行API端点测试

📖 许可证

本项目在MIT许可证下发布 - 查看LICENSE文件了解详情。

🙏 致谢