dotnet-mcp-hero
Clean Architecture Hero API + MCP Server
Documentation
.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:
1. HeroApi - A .NET 9 WebAPI built with Clean Architecture principles
2. 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
1. Navigate to the AppHost directory:
cd Api/tools/AppHost2. Run the application with the .NET CLI:
dotnet runThis will:
- Start a SQL Server container for the database
- Run migrations to set up the database schema
- Start the HeroApi on https://localhost:7255
3. Open https://localhost:7255/scalar/v1 in your browser to view the API documentation
Running the MCP Server
1. Navigate to the Mcp directory:
cd Mcp2. Run the MCP server:
dotnet runThis 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.
1. Navigate to the Mcp directory:
cd Mcp2. Run the MCP Inspector with the following command:
npx @modelcontextprotocol/inspector dotnet runThis 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:
1. Ensure the HeroApi is running
2. Navigate to the Mcp directory:
cd Mcp3. Run the Kiota generator:
dotnet kiota generate --openapi https://localhost:7255/openapi/v1.json --language csharp --class-name HeroClient --clean-output --additional-data falseThis 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:
1. Domain Layer - Contains business entities, aggregates, value objects, and domain events
2. Application Layer - Contains business logic, commands, queries, and interfaces
3. Infrastructure Layer - Implements interfaces from the application layer
4. 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
Frequently asked questions
What is dotnet-mcp-hero?
dotnet-mcp-hero is Clean Architecture Hero API + MCP Server
How do I install dotnet-mcp-hero?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is dotnet-mcp-hero open source?
Yes โ it is hosted on GitHub at https://github.com/danielmackay/dotnet-mcp-hero and has 4 stars.
Related MCP tools
๐งฉ MCP Gateway - A lightweight gateway service that instantly transforms existing MCP Servers and APIs into MCP servers with zero code changes.
MCP Aggregator, Orchestrator, Middleware, Gateway in one docker TypeScript-based implementation. Trusted by 1400+ developers.
Model Context Protocol with Neo4j Python-based implementation. Trusted by 700+ developers. Trusted by 700+ developers. Trusted by 700+ developers.
Fantasy Premier League Kotlin/Compose Multiplatform sample for the Model Context Protocol. Enhance AI assistants with powerful integrations.
An MCP server that allows MCP clients like Claude Desktop or Cursor to perform actions in the Unity Editor C#-based implementation.
Model Context Protocol (MCP) plugin to connect with Unity Editor โ designed for OpenAI, Gemini, Claude, Deepseek and Grok interoperability
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP