dotnet-mcp-hero
The .NET Hero API project is a superhero management system utilizing clean architecture principles with a Model Context Protocol (MCP) server to enable AI assistant integration. It's designed to manage superheroes, teams, and missions through a structured API and AI tools.
.NET Hero API with Model Context Protocol
A .NET-based superhero management system comprised of a Clean Architecture API backend and a Model Context Protocol (MCP) server for AI assistant integration.
๐ฏ Project Overview
This project demonstrates how to build a modern .NET application with clean architecture principles and integrate it with the Model Context Protocol (MCP) for AI assistant capabilities. It consists of two main parts:
- HeroApi - A .NET 9 WebAPI built with Clean Architecture principles
- HeroMcp - A Model Context Protocol server that provides AI tool capabilities for interacting with the API
Domain
The application is built around a superhero domain model that includes:
- Heroes - Characters with powers, name, alias, and power level
- Teams - Groups of heroes that can undertake missions
- Missions - Tasks that teams can execute and complete
๐ Getting Started
Prerequisites
- .NET 9 SDK
- Docker (for database)
- VS Code or other .NET IDE
Running the Hero API
- Navigate to the AppHost directory:
cd Api/tools/AppHost
- Run the application with the .NET CLI:
dotnet run
This will:
- Start a SQL Server container for the database
- Run migrations to set up the database schema
- Start the HeroApi on https://localhost:7255
- Open https://localhost:7255/scalar/v1 in your browser to view the API documentation
Running the MCP Server
- Navigate to the Mcp directory:
cd Mcp
- Run the MCP server:
dotnet run
This starts the MCP server which provides tools for interacting with the HeroApi.
Running the MCP Inspector
The MCP Inspector is a helpful tool for testing your MCP server directly. It allows you to inspect available tools and call them interactively.
- Navigate to the Mcp directory:
cd Mcp
- Run the MCP Inspector with the following command:
npx @modelcontextprotocol/inspector dotnet run
This will:
- Start the MCP server
- Launch the MCP Inspector in a terminal interface
- Display available tools and allow you to test them interactively
The inspector will show all available tools from your MCP server and provides a simple interface to call them and view their responses, which is useful for development and debugging.
Generating the API Client
The project uses Microsoft Kiota to generate a strongly-typed API client. To regenerate the client:
- Ensure the HeroApi is running
- Navigate to the Mcp directory:
cd Mcp
- Run the Kiota generator:
dotnet kiota generate --openapi https://localhost:7255/openapi/v1.json --language csharp --class-name HeroClient --clean-output --additional-data false
This will regenerate the API client in the output
directory based on the latest OpenAPI specification.
โจ Features
HeroApi
- Clean Architecture: Separation of concerns with Domain, Application, Infrastructure, and WebApi layers
- Domain-Driven Design: Rich domain model with aggregates, entities, and value objects
- CQRS Pattern: Separation of commands and queries using MediatR
- Minimal APIs: Fast and lightweight API endpoints
- OpenAPI/Scalar: Modern, interactive API documentation
- EF Core: Data access with Entity Framework Core
- Aspire Dashboard: For observability and resource orchestration
- Strongly Typed IDs: Using Vogen to prevent primitive obsession
- Health Checks: Monitor application health
- Comprehensive Testing: Architecture tests, domain unit tests, and API integration tests
HeroMcp
- Model Context Protocol: Integration with AI assistants using the MCP standard
- AI Tools: Custom tools for managing heroes, teams, and missions
- Generated API Client: Uses Microsoft Kiota to access the HeroApi
๐ API Endpoints
The HeroApi provides the following endpoints:
- GET /api/heroes - Get all heroes
- POST /api/heroes - Create a new hero
- GET /api/teams - Get all teams
- GET /api/teams/{id} - Get a specific team
- POST /api/teams - Create a new team
- POST /api/teams/{id}/heroes/{heroId} - Add a hero to a team
- POST /api/teams/{id}/execute-mission - Execute a mission with a team
- POST /api/teams/{id}/complete-mission - Complete a team's current mission
๐ค MCP Tools
The MCP server provides the following tools to AI assistants:
- GetHeroes - Retrieve all heroes from the API
- CreateHero - Create a new hero
- GetTeams - Retrieve all teams from the API
- GetTeam - Get a specific team by ID
- CreateTeam - Create a new team
- AddHeroToTeam - Add a hero to a team
- ExecuteMission - Execute a mission with a team
- CompleteMission - Complete a team's mission
- Echo and ReverseEcho - Simple tools for testing the MCP connection
๐๏ธ Project Structure
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
๐ Architecture
This project follows Clean Architecture principles with the following layers:
- Domain Layer - Contains business entities, aggregates, value objects, and domain events
- Application Layer - Contains business logic, commands, queries, and interfaces
- Infrastructure Layer - Implements interfaces from the application layer
- WebApi Layer - Exposes the API endpoints
๐งช Testing
- Architecture Tests - Verifies that the codebase adheres to clean architecture principles
- Domain Unit Tests - Tests the business logic in isolation
- Integration Tests - Tests the API endpoints against a real database
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgements
- Clean Architecture - Robert C. Martin
- Architectural Decision Records - For documenting architectural decisions
- Model Context Protocol - Microsoft's protocol for AI tool integration